diff --git a/src-gen/Graphics/Vulkan/Core_1_0.hsc b/src-gen/Graphics/Vulkan/Core_1_0.hsc
--- a/src-gen/Graphics/Vulkan/Core_1_0.hsc
+++ b/src-gen/Graphics/Vulkan/Core_1_0.hsc
@@ -34,29948 +34,30331 @@
         --
 
         -- ** API constants
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        pattern VK_LOD_CLAMP_NONE, pattern VK_REMAINING_MIP_LEVELS,
-        pattern VK_REMAINING_ARRAY_LAYERS, pattern VK_WHOLE_SIZE,
-        pattern VK_ATTACHMENT_UNUSED, pattern VK_TRUE, pattern VK_FALSE,
-        pattern VK_QUEUE_FAMILY_IGNORED, pattern VK_SUBPASS_EXTERNAL,
-        -- ** Device initialization
-        VkCreateInstance, pattern VkCreateInstance, HS_vkCreateInstance,
-        PFN_vkCreateInstance, vkCreateInstance, vkCreateInstanceUnsafe,
-        vkCreateInstanceSafe, VkDestroyInstance, pattern VkDestroyInstance,
-        HS_vkDestroyInstance, PFN_vkDestroyInstance, vkDestroyInstance,
-        vkDestroyInstanceUnsafe, vkDestroyInstanceSafe,
-        VkEnumeratePhysicalDevices, pattern VkEnumeratePhysicalDevices,
-        HS_vkEnumeratePhysicalDevices, PFN_vkEnumeratePhysicalDevices,
-        vkEnumeratePhysicalDevices, vkEnumeratePhysicalDevicesUnsafe,
-        vkEnumeratePhysicalDevicesSafe, VkGetPhysicalDeviceFeatures,
-        pattern VkGetPhysicalDeviceFeatures,
-        HS_vkGetPhysicalDeviceFeatures, PFN_vkGetPhysicalDeviceFeatures,
-        vkGetPhysicalDeviceFeatures, vkGetPhysicalDeviceFeaturesUnsafe,
-        vkGetPhysicalDeviceFeaturesSafe,
-        VkGetPhysicalDeviceFormatProperties,
-        pattern VkGetPhysicalDeviceFormatProperties,
-        HS_vkGetPhysicalDeviceFormatProperties,
-        PFN_vkGetPhysicalDeviceFormatProperties,
-        vkGetPhysicalDeviceFormatProperties,
-        vkGetPhysicalDeviceFormatPropertiesUnsafe,
-        vkGetPhysicalDeviceFormatPropertiesSafe,
-        VkGetPhysicalDeviceImageFormatProperties,
-        pattern VkGetPhysicalDeviceImageFormatProperties,
-        HS_vkGetPhysicalDeviceImageFormatProperties,
-        PFN_vkGetPhysicalDeviceImageFormatProperties,
-        vkGetPhysicalDeviceImageFormatProperties,
-        vkGetPhysicalDeviceImageFormatPropertiesUnsafe,
-        vkGetPhysicalDeviceImageFormatPropertiesSafe,
-        VkGetPhysicalDeviceProperties,
-        pattern VkGetPhysicalDeviceProperties,
-        HS_vkGetPhysicalDeviceProperties,
-        PFN_vkGetPhysicalDeviceProperties, vkGetPhysicalDeviceProperties,
-        vkGetPhysicalDevicePropertiesUnsafe,
-        vkGetPhysicalDevicePropertiesSafe,
-        VkGetPhysicalDeviceQueueFamilyProperties,
-        pattern VkGetPhysicalDeviceQueueFamilyProperties,
-        HS_vkGetPhysicalDeviceQueueFamilyProperties,
-        PFN_vkGetPhysicalDeviceQueueFamilyProperties,
-        vkGetPhysicalDeviceQueueFamilyProperties,
-        vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe,
-        vkGetPhysicalDeviceQueueFamilyPropertiesSafe,
-        VkGetPhysicalDeviceMemoryProperties,
-        pattern VkGetPhysicalDeviceMemoryProperties,
-        HS_vkGetPhysicalDeviceMemoryProperties,
-        PFN_vkGetPhysicalDeviceMemoryProperties,
-        vkGetPhysicalDeviceMemoryProperties,
-        vkGetPhysicalDeviceMemoryPropertiesUnsafe,
-        vkGetPhysicalDeviceMemoryPropertiesSafe, VkGetInstanceProcAddr,
-        pattern VkGetInstanceProcAddr, HS_vkGetInstanceProcAddr,
-        PFN_vkGetInstanceProcAddr, vkGetInstanceProcAddr,
-        vkGetInstanceProcAddrUnsafe, vkGetInstanceProcAddrSafe,
-        VkGetDeviceProcAddr, pattern VkGetDeviceProcAddr,
-        HS_vkGetDeviceProcAddr, PFN_vkGetDeviceProcAddr,
-        vkGetDeviceProcAddr, vkGetDeviceProcAddrUnsafe,
-        vkGetDeviceProcAddrSafe, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Memory,
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.Queue,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.ApplicationInfo,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.FormatProperties,
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Struct.InstanceCreateInfo,
-        module Graphics.Vulkan.Types.Struct.Memory,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.QueueFamilyProperties,
-        -- ** Device commands
-        VkCreateDevice, pattern VkCreateDevice, HS_vkCreateDevice,
-        PFN_vkCreateDevice, vkCreateDevice, vkCreateDeviceUnsafe,
-        vkCreateDeviceSafe, VkDestroyDevice, pattern VkDestroyDevice,
-        HS_vkDestroyDevice, PFN_vkDestroyDevice, vkDestroyDevice,
-        vkDestroyDeviceUnsafe, vkDestroyDeviceSafe,
-        module Graphics.Vulkan.Types.Enum.Device,
-        module Graphics.Vulkan.Types.Struct.Device,
-        -- ** Extension discovery commands
-        VkEnumerateInstanceExtensionProperties,
-        pattern VkEnumerateInstanceExtensionProperties,
-        HS_vkEnumerateInstanceExtensionProperties,
-        PFN_vkEnumerateInstanceExtensionProperties,
-        vkEnumerateInstanceExtensionProperties,
-        vkEnumerateInstanceExtensionPropertiesUnsafe,
-        vkEnumerateInstanceExtensionPropertiesSafe,
-        VkEnumerateDeviceExtensionProperties,
-        pattern VkEnumerateDeviceExtensionProperties,
-        HS_vkEnumerateDeviceExtensionProperties,
-        PFN_vkEnumerateDeviceExtensionProperties,
-        vkEnumerateDeviceExtensionProperties,
-        vkEnumerateDeviceExtensionPropertiesUnsafe,
-        vkEnumerateDeviceExtensionPropertiesSafe,
-        module Graphics.Vulkan.Types.Struct.ExtensionProperties,
-        -- ** Layer discovery commands
-        VkEnumerateInstanceLayerProperties,
-        pattern VkEnumerateInstanceLayerProperties,
-        HS_vkEnumerateInstanceLayerProperties,
-        PFN_vkEnumerateInstanceLayerProperties,
-        vkEnumerateInstanceLayerProperties,
-        vkEnumerateInstanceLayerPropertiesUnsafe,
-        vkEnumerateInstanceLayerPropertiesSafe,
-        VkEnumerateDeviceLayerProperties,
-        pattern VkEnumerateDeviceLayerProperties,
-        HS_vkEnumerateDeviceLayerProperties,
-        PFN_vkEnumerateDeviceLayerProperties,
-        vkEnumerateDeviceLayerProperties,
-        vkEnumerateDeviceLayerPropertiesUnsafe,
-        vkEnumerateDeviceLayerPropertiesSafe,
-        module Graphics.Vulkan.Types.Struct.LayerProperties,
-        -- ** queue commands
-        VkGetDeviceQueue, pattern VkGetDeviceQueue, HS_vkGetDeviceQueue,
-        PFN_vkGetDeviceQueue, vkGetDeviceQueue, vkGetDeviceQueueUnsafe,
-        vkGetDeviceQueueSafe, VkQueueSubmit, pattern VkQueueSubmit,
-        HS_vkQueueSubmit, PFN_vkQueueSubmit, vkQueueSubmit,
-        vkQueueSubmitUnsafe, vkQueueSubmitSafe, VkQueueWaitIdle,
-        pattern VkQueueWaitIdle, HS_vkQueueWaitIdle, PFN_vkQueueWaitIdle,
-        vkQueueWaitIdle, vkQueueWaitIdleUnsafe, vkQueueWaitIdleSafe,
-        VkDeviceWaitIdle, pattern VkDeviceWaitIdle, HS_vkDeviceWaitIdle,
-        PFN_vkDeviceWaitIdle, vkDeviceWaitIdle, vkDeviceWaitIdleUnsafe,
-        vkDeviceWaitIdleSafe,
-        module Graphics.Vulkan.Types.Struct.SubmitInfo, -- ** Memory commands
-                                                        VkAllocateMemory,
-        pattern VkAllocateMemory, HS_vkAllocateMemory,
-        PFN_vkAllocateMemory, vkAllocateMemory, vkAllocateMemoryUnsafe,
-        vkAllocateMemorySafe, VkFreeMemory, pattern VkFreeMemory,
-        HS_vkFreeMemory, PFN_vkFreeMemory, vkFreeMemory,
-        vkFreeMemoryUnsafe, vkFreeMemorySafe, VkMapMemory,
-        pattern VkMapMemory, HS_vkMapMemory, PFN_vkMapMemory, vkMapMemory,
-        vkMapMemoryUnsafe, vkMapMemorySafe, VkUnmapMemory,
-        pattern VkUnmapMemory, HS_vkUnmapMemory, PFN_vkUnmapMemory,
-        vkUnmapMemory, vkUnmapMemoryUnsafe, vkUnmapMemorySafe,
-        VkFlushMappedMemoryRanges, pattern VkFlushMappedMemoryRanges,
-        HS_vkFlushMappedMemoryRanges, PFN_vkFlushMappedMemoryRanges,
-        vkFlushMappedMemoryRanges, vkFlushMappedMemoryRangesUnsafe,
-        vkFlushMappedMemoryRangesSafe, VkInvalidateMappedMemoryRanges,
-        pattern VkInvalidateMappedMemoryRanges,
-        HS_vkInvalidateMappedMemoryRanges,
-        PFN_vkInvalidateMappedMemoryRanges, vkInvalidateMappedMemoryRanges,
-        vkInvalidateMappedMemoryRangesUnsafe,
-        vkInvalidateMappedMemoryRangesSafe, VkGetDeviceMemoryCommitment,
-        pattern VkGetDeviceMemoryCommitment,
-        HS_vkGetDeviceMemoryCommitment, PFN_vkGetDeviceMemoryCommitment,
-        vkGetDeviceMemoryCommitment, vkGetDeviceMemoryCommitmentUnsafe,
-        vkGetDeviceMemoryCommitmentSafe,
-        module Graphics.Vulkan.Types.Struct.MappedMemoryRange,
-        -- ** Memory management API commands
-        VkBindBufferMemory, pattern VkBindBufferMemory,
-        HS_vkBindBufferMemory, PFN_vkBindBufferMemory, vkBindBufferMemory,
-        vkBindBufferMemoryUnsafe, vkBindBufferMemorySafe,
-        VkBindImageMemory, pattern VkBindImageMemory, HS_vkBindImageMemory,
-        PFN_vkBindImageMemory, vkBindImageMemory, vkBindImageMemoryUnsafe,
-        vkBindImageMemorySafe, VkGetBufferMemoryRequirements,
-        pattern VkGetBufferMemoryRequirements,
-        HS_vkGetBufferMemoryRequirements,
-        PFN_vkGetBufferMemoryRequirements, vkGetBufferMemoryRequirements,
-        vkGetBufferMemoryRequirementsUnsafe,
-        vkGetBufferMemoryRequirementsSafe, VkGetImageMemoryRequirements,
-        pattern VkGetImageMemoryRequirements,
-        HS_vkGetImageMemoryRequirements, PFN_vkGetImageMemoryRequirements,
-        vkGetImageMemoryRequirements, vkGetImageMemoryRequirementsUnsafe,
-        vkGetImageMemoryRequirementsSafe,
-        -- ** Sparse resource memory management API commands
-        VkGetImageSparseMemoryRequirements,
-        pattern VkGetImageSparseMemoryRequirements,
-        HS_vkGetImageSparseMemoryRequirements,
-        PFN_vkGetImageSparseMemoryRequirements,
-        vkGetImageSparseMemoryRequirements,
-        vkGetImageSparseMemoryRequirementsUnsafe,
-        vkGetImageSparseMemoryRequirementsSafe,
-        VkGetPhysicalDeviceSparseImageFormatProperties,
-        pattern VkGetPhysicalDeviceSparseImageFormatProperties,
-        HS_vkGetPhysicalDeviceSparseImageFormatProperties,
-        PFN_vkGetPhysicalDeviceSparseImageFormatProperties,
-        vkGetPhysicalDeviceSparseImageFormatProperties,
-        vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe,
-        vkGetPhysicalDeviceSparseImageFormatPropertiesSafe,
-        VkQueueBindSparse, pattern VkQueueBindSparse, HS_vkQueueBindSparse,
-        PFN_vkQueueBindSparse, vkQueueBindSparse, vkQueueBindSparseUnsafe,
-        vkQueueBindSparseSafe, module Graphics.Vulkan.Types.Enum.Sparse,
-        module Graphics.Vulkan.Types.Struct.Bind,
-        module Graphics.Vulkan.Types.Struct.Offset,
-        module Graphics.Vulkan.Types.Struct.Sparse, -- ** Fence commands
-                                                    VkCreateFence,
-        pattern VkCreateFence, HS_vkCreateFence, PFN_vkCreateFence,
-        vkCreateFence, vkCreateFenceUnsafe, vkCreateFenceSafe,
-        VkDestroyFence, pattern VkDestroyFence, HS_vkDestroyFence,
-        PFN_vkDestroyFence, vkDestroyFence, vkDestroyFenceUnsafe,
-        vkDestroyFenceSafe, VkResetFences, pattern VkResetFences,
-        HS_vkResetFences, PFN_vkResetFences, vkResetFences,
-        vkResetFencesUnsafe, vkResetFencesSafe, VkGetFenceStatus,
-        pattern VkGetFenceStatus, HS_vkGetFenceStatus,
-        PFN_vkGetFenceStatus, vkGetFenceStatus, vkGetFenceStatusUnsafe,
-        vkGetFenceStatusSafe, VkWaitForFences, pattern VkWaitForFences,
-        HS_vkWaitForFences, PFN_vkWaitForFences, vkWaitForFences,
-        vkWaitForFencesUnsafe, vkWaitForFencesSafe,
-        module Graphics.Vulkan.Types.Enum.Fence,
-        module Graphics.Vulkan.Types.Struct.Fence, -- ** Queue semaphore commands
-                                                   VkCreateSemaphore,
-        pattern VkCreateSemaphore, HS_vkCreateSemaphore,
-        PFN_vkCreateSemaphore, vkCreateSemaphore, vkCreateSemaphoreUnsafe,
-        vkCreateSemaphoreSafe, VkDestroySemaphore,
-        pattern VkDestroySemaphore, HS_vkDestroySemaphore,
-        PFN_vkDestroySemaphore, vkDestroySemaphore,
-        vkDestroySemaphoreUnsafe, vkDestroySemaphoreSafe,
-        module Graphics.Vulkan.Types.Struct.Semaphore, -- ** Event commands
-                                                       VkCreateEvent,
-        pattern VkCreateEvent, HS_vkCreateEvent, PFN_vkCreateEvent,
-        vkCreateEvent, vkCreateEventUnsafe, vkCreateEventSafe,
-        VkDestroyEvent, pattern VkDestroyEvent, HS_vkDestroyEvent,
-        PFN_vkDestroyEvent, vkDestroyEvent, vkDestroyEventUnsafe,
-        vkDestroyEventSafe, VkGetEventStatus, pattern VkGetEventStatus,
-        HS_vkGetEventStatus, PFN_vkGetEventStatus, vkGetEventStatus,
-        vkGetEventStatusUnsafe, vkGetEventStatusSafe, VkSetEvent,
-        pattern VkSetEvent, HS_vkSetEvent, PFN_vkSetEvent, vkSetEvent,
-        vkSetEventUnsafe, vkSetEventSafe, VkResetEvent,
-        pattern VkResetEvent, HS_vkResetEvent, PFN_vkResetEvent,
-        vkResetEvent, vkResetEventUnsafe, vkResetEventSafe,
-        module Graphics.Vulkan.Types.Struct.EventCreateInfo,
-        -- ** Query commands
-        VkCreateQueryPool, pattern VkCreateQueryPool, HS_vkCreateQueryPool,
-        PFN_vkCreateQueryPool, vkCreateQueryPool, vkCreateQueryPoolUnsafe,
-        vkCreateQueryPoolSafe, VkDestroyQueryPool,
-        pattern VkDestroyQueryPool, HS_vkDestroyQueryPool,
-        PFN_vkDestroyQueryPool, vkDestroyQueryPool,
-        vkDestroyQueryPoolUnsafe, vkDestroyQueryPoolSafe,
-        VkGetQueryPoolResults, pattern VkGetQueryPoolResults,
-        HS_vkGetQueryPoolResults, PFN_vkGetQueryPoolResults,
-        vkGetQueryPoolResults, vkGetQueryPoolResultsUnsafe,
-        vkGetQueryPoolResultsSafe, module Graphics.Vulkan.Types.Enum.Query,
-        module Graphics.Vulkan.Types.Struct.QueryPoolCreateInfo,
-        -- ** Buffer commands
-        VkCreateBuffer, pattern VkCreateBuffer, HS_vkCreateBuffer,
-        PFN_vkCreateBuffer, vkCreateBuffer, vkCreateBufferUnsafe,
-        vkCreateBufferSafe, VkDestroyBuffer, pattern VkDestroyBuffer,
-        HS_vkDestroyBuffer, PFN_vkDestroyBuffer, vkDestroyBuffer,
-        vkDestroyBufferUnsafe, vkDestroyBufferSafe,
-        module Graphics.Vulkan.Types.Enum.Buffer,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Struct.Buffer, -- ** Buffer view commands
-                                                    VkCreateBufferView,
-        pattern VkCreateBufferView, HS_vkCreateBufferView,
-        PFN_vkCreateBufferView, vkCreateBufferView,
-        vkCreateBufferViewUnsafe, vkCreateBufferViewSafe,
-        VkDestroyBufferView, pattern VkDestroyBufferView,
-        HS_vkDestroyBufferView, PFN_vkDestroyBufferView,
-        vkDestroyBufferView, vkDestroyBufferViewUnsafe,
-        vkDestroyBufferViewSafe, -- ** Image commands
-                                 VkCreateImage, pattern VkCreateImage,
-        HS_vkCreateImage, PFN_vkCreateImage, vkCreateImage,
-        vkCreateImageUnsafe, vkCreateImageSafe, VkDestroyImage,
-        pattern VkDestroyImage, HS_vkDestroyImage, PFN_vkDestroyImage,
-        vkDestroyImage, vkDestroyImageUnsafe, vkDestroyImageSafe,
-        VkGetImageSubresourceLayout, pattern VkGetImageSubresourceLayout,
-        HS_vkGetImageSubresourceLayout, PFN_vkGetImageSubresourceLayout,
-        vkGetImageSubresourceLayout, vkGetImageSubresourceLayoutUnsafe,
-        vkGetImageSubresourceLayoutSafe,
-        module Graphics.Vulkan.Types.Struct.SubresourceLayout,
-        -- ** Image view commands
-        VkCreateImageView, pattern VkCreateImageView, HS_vkCreateImageView,
-        PFN_vkCreateImageView, vkCreateImageView, vkCreateImageViewUnsafe,
-        vkCreateImageViewSafe, VkDestroyImageView,
-        pattern VkDestroyImageView, HS_vkDestroyImageView,
-        PFN_vkDestroyImageView, vkDestroyImageView,
-        vkDestroyImageViewUnsafe, vkDestroyImageViewSafe,
-        module Graphics.Vulkan.Types.Enum.ComponentSwizzle,
-        module Graphics.Vulkan.Types.Struct.ComponentMapping,
-        -- ** Shader commands
-        VkCreateShaderModule, pattern VkCreateShaderModule,
-        HS_vkCreateShaderModule, PFN_vkCreateShaderModule,
-        vkCreateShaderModule, vkCreateShaderModuleUnsafe,
-        vkCreateShaderModuleSafe, VkDestroyShaderModule,
-        pattern VkDestroyShaderModule, HS_vkDestroyShaderModule,
-        PFN_vkDestroyShaderModule, vkDestroyShaderModule,
-        vkDestroyShaderModuleUnsafe, vkDestroyShaderModuleSafe,
-        module Graphics.Vulkan.Types.Struct.Shader, -- ** Pipeline Cache commands
-                                                    VkCreatePipelineCache,
-        pattern VkCreatePipelineCache, HS_vkCreatePipelineCache,
-        PFN_vkCreatePipelineCache, vkCreatePipelineCache,
-        vkCreatePipelineCacheUnsafe, vkCreatePipelineCacheSafe,
-        VkDestroyPipelineCache, pattern VkDestroyPipelineCache,
-        HS_vkDestroyPipelineCache, PFN_vkDestroyPipelineCache,
-        vkDestroyPipelineCache, vkDestroyPipelineCacheUnsafe,
-        vkDestroyPipelineCacheSafe, VkGetPipelineCacheData,
-        pattern VkGetPipelineCacheData, HS_vkGetPipelineCacheData,
-        PFN_vkGetPipelineCacheData, vkGetPipelineCacheData,
-        vkGetPipelineCacheDataUnsafe, vkGetPipelineCacheDataSafe,
-        VkMergePipelineCaches, pattern VkMergePipelineCaches,
-        HS_vkMergePipelineCaches, PFN_vkMergePipelineCaches,
-        vkMergePipelineCaches, vkMergePipelineCachesUnsafe,
-        vkMergePipelineCachesSafe,
-        module Graphics.Vulkan.Types.Struct.Pipeline,
-        -- ** Pipeline commands
-        VkCreateGraphicsPipelines, pattern VkCreateGraphicsPipelines,
-        HS_vkCreateGraphicsPipelines, PFN_vkCreateGraphicsPipelines,
-        vkCreateGraphicsPipelines, vkCreateGraphicsPipelinesUnsafe,
-        vkCreateGraphicsPipelinesSafe, VkCreateComputePipelines,
-        pattern VkCreateComputePipelines, HS_vkCreateComputePipelines,
-        PFN_vkCreateComputePipelines, vkCreateComputePipelines,
-        vkCreateComputePipelinesUnsafe, vkCreateComputePipelinesSafe,
-        VkDestroyPipeline, pattern VkDestroyPipeline, HS_vkDestroyPipeline,
-        PFN_vkDestroyPipeline, vkDestroyPipeline, vkDestroyPipelineUnsafe,
-        vkDestroyPipelineSafe, module Graphics.Vulkan.Types.Enum.Blend,
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompareOp,
-        module Graphics.Vulkan.Types.Enum.CullModeFlags,
-        module Graphics.Vulkan.Types.Enum.DynamicState,
-        module Graphics.Vulkan.Types.Enum.FrontFace,
-        module Graphics.Vulkan.Types.Enum.LogicOp,
-        module Graphics.Vulkan.Types.Enum.PolygonMode,
-        module Graphics.Vulkan.Types.Enum.PrimitiveTopology,
-        module Graphics.Vulkan.Types.Enum.Shader,
-        module Graphics.Vulkan.Types.Enum.Stencil,
-        module Graphics.Vulkan.Types.Enum.VertexInputRate,
-        module Graphics.Vulkan.Types.Struct.ComputePipelineCreateInfo,
-        module Graphics.Vulkan.Types.Struct.Rect,
-        module Graphics.Vulkan.Types.Struct.Specialization,
-        module Graphics.Vulkan.Types.Struct.StencilOpState,
-        module Graphics.Vulkan.Types.Struct.VertexInput,
-        module Graphics.Vulkan.Types.Struct.Viewport,
-        -- ** Pipeline layout commands
-        VkCreatePipelineLayout, pattern VkCreatePipelineLayout,
-        HS_vkCreatePipelineLayout, PFN_vkCreatePipelineLayout,
-        vkCreatePipelineLayout, vkCreatePipelineLayoutUnsafe,
-        vkCreatePipelineLayoutSafe, VkDestroyPipelineLayout,
-        pattern VkDestroyPipelineLayout, HS_vkDestroyPipelineLayout,
-        PFN_vkDestroyPipelineLayout, vkDestroyPipelineLayout,
-        vkDestroyPipelineLayoutUnsafe, vkDestroyPipelineLayoutSafe,
-        module Graphics.Vulkan.Types.Struct.PushConstantRange,
-        -- ** Sampler commands
-        VkCreateSampler, pattern VkCreateSampler, HS_vkCreateSampler,
-        PFN_vkCreateSampler, vkCreateSampler, vkCreateSamplerUnsafe,
-        vkCreateSamplerSafe, VkDestroySampler, pattern VkDestroySampler,
-        HS_vkDestroySampler, PFN_vkDestroySampler, vkDestroySampler,
-        vkDestroySamplerUnsafe, vkDestroySamplerSafe,
-        module Graphics.Vulkan.Types.Enum.BorderColor,
-        module Graphics.Vulkan.Types.Enum.Filter,
-        module Graphics.Vulkan.Types.Enum.Sampler,
-        module Graphics.Vulkan.Types.Struct.Sampler,
-        -- ** Descriptor set commands
-        VkCreateDescriptorSetLayout, pattern VkCreateDescriptorSetLayout,
-        HS_vkCreateDescriptorSetLayout, PFN_vkCreateDescriptorSetLayout,
-        vkCreateDescriptorSetLayout, vkCreateDescriptorSetLayoutUnsafe,
-        vkCreateDescriptorSetLayoutSafe, VkDestroyDescriptorSetLayout,
-        pattern VkDestroyDescriptorSetLayout,
-        HS_vkDestroyDescriptorSetLayout, PFN_vkDestroyDescriptorSetLayout,
-        vkDestroyDescriptorSetLayout, vkDestroyDescriptorSetLayoutUnsafe,
-        vkDestroyDescriptorSetLayoutSafe, VkCreateDescriptorPool,
-        pattern VkCreateDescriptorPool, HS_vkCreateDescriptorPool,
-        PFN_vkCreateDescriptorPool, vkCreateDescriptorPool,
-        vkCreateDescriptorPoolUnsafe, vkCreateDescriptorPoolSafe,
-        VkDestroyDescriptorPool, pattern VkDestroyDescriptorPool,
-        HS_vkDestroyDescriptorPool, PFN_vkDestroyDescriptorPool,
-        vkDestroyDescriptorPool, vkDestroyDescriptorPoolUnsafe,
-        vkDestroyDescriptorPoolSafe, VkResetDescriptorPool,
-        pattern VkResetDescriptorPool, HS_vkResetDescriptorPool,
-        PFN_vkResetDescriptorPool, vkResetDescriptorPool,
-        vkResetDescriptorPoolUnsafe, vkResetDescriptorPoolSafe,
-        VkAllocateDescriptorSets, pattern VkAllocateDescriptorSets,
-        HS_vkAllocateDescriptorSets, PFN_vkAllocateDescriptorSets,
-        vkAllocateDescriptorSets, vkAllocateDescriptorSetsUnsafe,
-        vkAllocateDescriptorSetsSafe, VkFreeDescriptorSets,
-        pattern VkFreeDescriptorSets, HS_vkFreeDescriptorSets,
-        PFN_vkFreeDescriptorSets, vkFreeDescriptorSets,
-        vkFreeDescriptorSetsUnsafe, vkFreeDescriptorSetsSafe,
-        VkUpdateDescriptorSets, pattern VkUpdateDescriptorSets,
-        HS_vkUpdateDescriptorSets, PFN_vkUpdateDescriptorSets,
-        vkUpdateDescriptorSets, vkUpdateDescriptorSetsUnsafe,
-        vkUpdateDescriptorSetsSafe,
-        module Graphics.Vulkan.Types.Enum.Descriptor,
-        module Graphics.Vulkan.Types.Struct.CopyDescriptorSet,
-        module Graphics.Vulkan.Types.Struct.Descriptor,
-        module Graphics.Vulkan.Types.Struct.WriteDescriptorSet,
-        -- ** Pass commands
-        VkCreateFramebuffer, pattern VkCreateFramebuffer,
-        HS_vkCreateFramebuffer, PFN_vkCreateFramebuffer,
-        vkCreateFramebuffer, vkCreateFramebufferUnsafe,
-        vkCreateFramebufferSafe, VkDestroyFramebuffer,
-        pattern VkDestroyFramebuffer, HS_vkDestroyFramebuffer,
-        PFN_vkDestroyFramebuffer, vkDestroyFramebuffer,
-        vkDestroyFramebufferUnsafe, vkDestroyFramebufferSafe,
-        VkCreateRenderPass, pattern VkCreateRenderPass,
-        HS_vkCreateRenderPass, PFN_vkCreateRenderPass, vkCreateRenderPass,
-        vkCreateRenderPassUnsafe, vkCreateRenderPassSafe,
-        VkDestroyRenderPass, pattern VkDestroyRenderPass,
-        HS_vkDestroyRenderPass, PFN_vkDestroyRenderPass,
-        vkDestroyRenderPass, vkDestroyRenderPassUnsafe,
-        vkDestroyRenderPassSafe, VkGetRenderAreaGranularity,
-        pattern VkGetRenderAreaGranularity, HS_vkGetRenderAreaGranularity,
-        PFN_vkGetRenderAreaGranularity, vkGetRenderAreaGranularity,
-        vkGetRenderAreaGranularityUnsafe, vkGetRenderAreaGranularitySafe,
-        module Graphics.Vulkan.Types.Enum.AccessFlags,
-        module Graphics.Vulkan.Types.Enum.Attachment,
-        module Graphics.Vulkan.Types.Enum.DependencyFlags,
-        module Graphics.Vulkan.Types.Enum.Subpass,
-        module Graphics.Vulkan.Types.Struct.Attachment,
-        module Graphics.Vulkan.Types.Struct.FramebufferCreateInfo,
-        module Graphics.Vulkan.Types.Struct.RenderPass,
-        module Graphics.Vulkan.Types.Struct.Subpass, -- ** Command pool commands
-                                                     VkCreateCommandPool,
-        pattern VkCreateCommandPool, HS_vkCreateCommandPool,
-        PFN_vkCreateCommandPool, vkCreateCommandPool,
-        vkCreateCommandPoolUnsafe, vkCreateCommandPoolSafe,
-        VkDestroyCommandPool, pattern VkDestroyCommandPool,
-        HS_vkDestroyCommandPool, PFN_vkDestroyCommandPool,
-        vkDestroyCommandPool, vkDestroyCommandPoolUnsafe,
-        vkDestroyCommandPoolSafe, VkResetCommandPool,
-        pattern VkResetCommandPool, HS_vkResetCommandPool,
-        PFN_vkResetCommandPool, vkResetCommandPool,
-        vkResetCommandPoolUnsafe, vkResetCommandPoolSafe,
-        module Graphics.Vulkan.Types.Enum.Command,
-        module Graphics.Vulkan.Types.Struct.Command,
-        -- ** Command buffer commands
-        VkAllocateCommandBuffers, pattern VkAllocateCommandBuffers,
-        HS_vkAllocateCommandBuffers, PFN_vkAllocateCommandBuffers,
-        vkAllocateCommandBuffers, vkAllocateCommandBuffersUnsafe,
-        vkAllocateCommandBuffersSafe, VkFreeCommandBuffers,
-        pattern VkFreeCommandBuffers, HS_vkFreeCommandBuffers,
-        PFN_vkFreeCommandBuffers, vkFreeCommandBuffers,
-        vkFreeCommandBuffersUnsafe, vkFreeCommandBuffersSafe,
-        VkBeginCommandBuffer, pattern VkBeginCommandBuffer,
-        HS_vkBeginCommandBuffer, PFN_vkBeginCommandBuffer,
-        vkBeginCommandBuffer, vkBeginCommandBufferUnsafe,
-        vkBeginCommandBufferSafe, VkEndCommandBuffer,
-        pattern VkEndCommandBuffer, HS_vkEndCommandBuffer,
-        PFN_vkEndCommandBuffer, vkEndCommandBuffer,
-        vkEndCommandBufferUnsafe, vkEndCommandBufferSafe,
-        VkResetCommandBuffer, pattern VkResetCommandBuffer,
-        HS_vkResetCommandBuffer, PFN_vkResetCommandBuffer,
-        vkResetCommandBuffer, vkResetCommandBufferUnsafe,
-        vkResetCommandBufferSafe, -- ** Command buffer building commands
-                                  VkCmdBindPipeline,
-        pattern VkCmdBindPipeline, HS_vkCmdBindPipeline,
-        PFN_vkCmdBindPipeline, vkCmdBindPipeline, vkCmdBindPipelineUnsafe,
-        vkCmdBindPipelineSafe, VkCmdSetViewport, pattern VkCmdSetViewport,
-        HS_vkCmdSetViewport, PFN_vkCmdSetViewport, vkCmdSetViewport,
-        vkCmdSetViewportUnsafe, vkCmdSetViewportSafe, VkCmdSetScissor,
-        pattern VkCmdSetScissor, HS_vkCmdSetScissor, PFN_vkCmdSetScissor,
-        vkCmdSetScissor, vkCmdSetScissorUnsafe, vkCmdSetScissorSafe,
-        VkCmdSetLineWidth, pattern VkCmdSetLineWidth, HS_vkCmdSetLineWidth,
-        PFN_vkCmdSetLineWidth, vkCmdSetLineWidth, vkCmdSetLineWidthUnsafe,
-        vkCmdSetLineWidthSafe, VkCmdSetDepthBias,
-        pattern VkCmdSetDepthBias, HS_vkCmdSetDepthBias,
-        PFN_vkCmdSetDepthBias, vkCmdSetDepthBias, vkCmdSetDepthBiasUnsafe,
-        vkCmdSetDepthBiasSafe, VkCmdSetBlendConstants,
-        pattern VkCmdSetBlendConstants, HS_vkCmdSetBlendConstants,
-        PFN_vkCmdSetBlendConstants, vkCmdSetBlendConstants,
-        vkCmdSetBlendConstantsUnsafe, vkCmdSetBlendConstantsSafe,
-        VkCmdSetDepthBounds, pattern VkCmdSetDepthBounds,
-        HS_vkCmdSetDepthBounds, PFN_vkCmdSetDepthBounds,
-        vkCmdSetDepthBounds, vkCmdSetDepthBoundsUnsafe,
-        vkCmdSetDepthBoundsSafe, VkCmdSetStencilCompareMask,
-        pattern VkCmdSetStencilCompareMask, HS_vkCmdSetStencilCompareMask,
-        PFN_vkCmdSetStencilCompareMask, vkCmdSetStencilCompareMask,
-        vkCmdSetStencilCompareMaskUnsafe, vkCmdSetStencilCompareMaskSafe,
-        VkCmdSetStencilWriteMask, pattern VkCmdSetStencilWriteMask,
-        HS_vkCmdSetStencilWriteMask, PFN_vkCmdSetStencilWriteMask,
-        vkCmdSetStencilWriteMask, vkCmdSetStencilWriteMaskUnsafe,
-        vkCmdSetStencilWriteMaskSafe, VkCmdSetStencilReference,
-        pattern VkCmdSetStencilReference, HS_vkCmdSetStencilReference,
-        PFN_vkCmdSetStencilReference, vkCmdSetStencilReference,
-        vkCmdSetStencilReferenceUnsafe, vkCmdSetStencilReferenceSafe,
-        VkCmdBindDescriptorSets, pattern VkCmdBindDescriptorSets,
-        HS_vkCmdBindDescriptorSets, PFN_vkCmdBindDescriptorSets,
-        vkCmdBindDescriptorSets, vkCmdBindDescriptorSetsUnsafe,
-        vkCmdBindDescriptorSetsSafe, VkCmdBindIndexBuffer,
-        pattern VkCmdBindIndexBuffer, HS_vkCmdBindIndexBuffer,
-        PFN_vkCmdBindIndexBuffer, vkCmdBindIndexBuffer,
-        vkCmdBindIndexBufferUnsafe, vkCmdBindIndexBufferSafe,
-        VkCmdBindVertexBuffers, pattern VkCmdBindVertexBuffers,
-        HS_vkCmdBindVertexBuffers, PFN_vkCmdBindVertexBuffers,
-        vkCmdBindVertexBuffers, vkCmdBindVertexBuffersUnsafe,
-        vkCmdBindVertexBuffersSafe, VkCmdDraw, pattern VkCmdDraw,
-        HS_vkCmdDraw, PFN_vkCmdDraw, vkCmdDraw, vkCmdDrawUnsafe,
-        vkCmdDrawSafe, VkCmdDrawIndexed, pattern VkCmdDrawIndexed,
-        HS_vkCmdDrawIndexed, PFN_vkCmdDrawIndexed, vkCmdDrawIndexed,
-        vkCmdDrawIndexedUnsafe, vkCmdDrawIndexedSafe, VkCmdDrawIndirect,
-        pattern VkCmdDrawIndirect, HS_vkCmdDrawIndirect,
-        PFN_vkCmdDrawIndirect, vkCmdDrawIndirect, vkCmdDrawIndirectUnsafe,
-        vkCmdDrawIndirectSafe, VkCmdDrawIndexedIndirect,
-        pattern VkCmdDrawIndexedIndirect, HS_vkCmdDrawIndexedIndirect,
-        PFN_vkCmdDrawIndexedIndirect, vkCmdDrawIndexedIndirect,
-        vkCmdDrawIndexedIndirectUnsafe, vkCmdDrawIndexedIndirectSafe,
-        VkCmdDispatch, pattern VkCmdDispatch, HS_vkCmdDispatch,
-        PFN_vkCmdDispatch, vkCmdDispatch, vkCmdDispatchUnsafe,
-        vkCmdDispatchSafe, VkCmdDispatchIndirect,
-        pattern VkCmdDispatchIndirect, HS_vkCmdDispatchIndirect,
-        PFN_vkCmdDispatchIndirect, vkCmdDispatchIndirect,
-        vkCmdDispatchIndirectUnsafe, vkCmdDispatchIndirectSafe,
-        VkCmdCopyBuffer, pattern VkCmdCopyBuffer, HS_vkCmdCopyBuffer,
-        PFN_vkCmdCopyBuffer, vkCmdCopyBuffer, vkCmdCopyBufferUnsafe,
-        vkCmdCopyBufferSafe, VkCmdCopyImage, pattern VkCmdCopyImage,
-        HS_vkCmdCopyImage, PFN_vkCmdCopyImage, vkCmdCopyImage,
-        vkCmdCopyImageUnsafe, vkCmdCopyImageSafe, VkCmdBlitImage,
-        pattern VkCmdBlitImage, HS_vkCmdBlitImage, PFN_vkCmdBlitImage,
-        vkCmdBlitImage, vkCmdBlitImageUnsafe, vkCmdBlitImageSafe,
-        VkCmdCopyBufferToImage, pattern VkCmdCopyBufferToImage,
-        HS_vkCmdCopyBufferToImage, PFN_vkCmdCopyBufferToImage,
-        vkCmdCopyBufferToImage, vkCmdCopyBufferToImageUnsafe,
-        vkCmdCopyBufferToImageSafe, VkCmdCopyImageToBuffer,
-        pattern VkCmdCopyImageToBuffer, HS_vkCmdCopyImageToBuffer,
-        PFN_vkCmdCopyImageToBuffer, vkCmdCopyImageToBuffer,
-        vkCmdCopyImageToBufferUnsafe, vkCmdCopyImageToBufferSafe,
-        VkCmdUpdateBuffer, pattern VkCmdUpdateBuffer, HS_vkCmdUpdateBuffer,
-        PFN_vkCmdUpdateBuffer, vkCmdUpdateBuffer, vkCmdUpdateBufferUnsafe,
-        vkCmdUpdateBufferSafe, VkCmdFillBuffer, pattern VkCmdFillBuffer,
-        HS_vkCmdFillBuffer, PFN_vkCmdFillBuffer, vkCmdFillBuffer,
-        vkCmdFillBufferUnsafe, vkCmdFillBufferSafe, VkCmdClearColorImage,
-        pattern VkCmdClearColorImage, HS_vkCmdClearColorImage,
-        PFN_vkCmdClearColorImage, vkCmdClearColorImage,
-        vkCmdClearColorImageUnsafe, vkCmdClearColorImageSafe,
-        VkCmdClearDepthStencilImage, pattern VkCmdClearDepthStencilImage,
-        HS_vkCmdClearDepthStencilImage, PFN_vkCmdClearDepthStencilImage,
-        vkCmdClearDepthStencilImage, vkCmdClearDepthStencilImageUnsafe,
-        vkCmdClearDepthStencilImageSafe, VkCmdClearAttachments,
-        pattern VkCmdClearAttachments, HS_vkCmdClearAttachments,
-        PFN_vkCmdClearAttachments, vkCmdClearAttachments,
-        vkCmdClearAttachmentsUnsafe, vkCmdClearAttachmentsSafe,
-        VkCmdResolveImage, pattern VkCmdResolveImage, HS_vkCmdResolveImage,
-        PFN_vkCmdResolveImage, vkCmdResolveImage, vkCmdResolveImageUnsafe,
-        vkCmdResolveImageSafe, VkCmdSetEvent, pattern VkCmdSetEvent,
-        HS_vkCmdSetEvent, PFN_vkCmdSetEvent, vkCmdSetEvent,
-        vkCmdSetEventUnsafe, vkCmdSetEventSafe, VkCmdResetEvent,
-        pattern VkCmdResetEvent, HS_vkCmdResetEvent, PFN_vkCmdResetEvent,
-        vkCmdResetEvent, vkCmdResetEventUnsafe, vkCmdResetEventSafe,
-        VkCmdWaitEvents, pattern VkCmdWaitEvents, HS_vkCmdWaitEvents,
-        PFN_vkCmdWaitEvents, vkCmdWaitEvents, vkCmdWaitEventsUnsafe,
-        vkCmdWaitEventsSafe, VkCmdPipelineBarrier,
-        pattern VkCmdPipelineBarrier, HS_vkCmdPipelineBarrier,
-        PFN_vkCmdPipelineBarrier, vkCmdPipelineBarrier,
-        vkCmdPipelineBarrierUnsafe, vkCmdPipelineBarrierSafe,
-        VkCmdBeginQuery, pattern VkCmdBeginQuery, HS_vkCmdBeginQuery,
-        PFN_vkCmdBeginQuery, vkCmdBeginQuery, vkCmdBeginQueryUnsafe,
-        vkCmdBeginQuerySafe, VkCmdEndQuery, pattern VkCmdEndQuery,
-        HS_vkCmdEndQuery, PFN_vkCmdEndQuery, vkCmdEndQuery,
-        vkCmdEndQueryUnsafe, vkCmdEndQuerySafe, VkCmdResetQueryPool,
-        pattern VkCmdResetQueryPool, HS_vkCmdResetQueryPool,
-        PFN_vkCmdResetQueryPool, vkCmdResetQueryPool,
-        vkCmdResetQueryPoolUnsafe, vkCmdResetQueryPoolSafe,
-        VkCmdWriteTimestamp, pattern VkCmdWriteTimestamp,
-        HS_vkCmdWriteTimestamp, PFN_vkCmdWriteTimestamp,
-        vkCmdWriteTimestamp, vkCmdWriteTimestampUnsafe,
-        vkCmdWriteTimestampSafe, VkCmdCopyQueryPoolResults,
-        pattern VkCmdCopyQueryPoolResults, HS_vkCmdCopyQueryPoolResults,
-        PFN_vkCmdCopyQueryPoolResults, vkCmdCopyQueryPoolResults,
-        vkCmdCopyQueryPoolResultsUnsafe, vkCmdCopyQueryPoolResultsSafe,
-        VkCmdPushConstants, pattern VkCmdPushConstants,
-        HS_vkCmdPushConstants, PFN_vkCmdPushConstants, vkCmdPushConstants,
-        vkCmdPushConstantsUnsafe, vkCmdPushConstantsSafe,
-        VkCmdBeginRenderPass, pattern VkCmdBeginRenderPass,
-        HS_vkCmdBeginRenderPass, PFN_vkCmdBeginRenderPass,
-        vkCmdBeginRenderPass, vkCmdBeginRenderPassUnsafe,
-        vkCmdBeginRenderPassSafe, VkCmdNextSubpass,
-        pattern VkCmdNextSubpass, HS_vkCmdNextSubpass,
-        PFN_vkCmdNextSubpass, vkCmdNextSubpass, vkCmdNextSubpassUnsafe,
-        vkCmdNextSubpassSafe, VkCmdEndRenderPass,
-        pattern VkCmdEndRenderPass, HS_vkCmdEndRenderPass,
-        PFN_vkCmdEndRenderPass, vkCmdEndRenderPass,
-        vkCmdEndRenderPassUnsafe, vkCmdEndRenderPassSafe,
-        VkCmdExecuteCommands, pattern VkCmdExecuteCommands,
-        HS_vkCmdExecuteCommands, PFN_vkCmdExecuteCommands,
-        vkCmdExecuteCommands, vkCmdExecuteCommandsUnsafe,
-        vkCmdExecuteCommandsSafe,
-        module Graphics.Vulkan.Types.Enum.IndexType,
-        module Graphics.Vulkan.Types.Struct.Clear, -- ** Types not directly used by the API. Include e.g. structs that are not parameter types of commands, but still defined by the API.
-                                                   VkBaseInStructure,
-        VkBaseInStructure', VkBaseOutStructure, VkBaseOutStructure',
-        VkBufferMemoryBarrier, VkBufferMemoryBarrier', -- ' closing tick for hsc2hs
-        VkDispatchIndirectCommand, VkDispatchIndirectCommand', -- ' closing tick for hsc2hs
-        VkDrawIndexedIndirectCommand, VkDrawIndexedIndirectCommand', -- ' closing tick for hsc2hs
-        VkDrawIndirectCommand, VkDrawIndirectCommand', -- ' closing tick for hsc2hs
-        VkImageMemoryBarrier, VkImageMemoryBarrier', -- ' closing tick for hsc2hs
-        VkImageSubresourceRange, VkImageSubresourceRange', VkMemoryBarrier, -- ' closing tick for hsc2hs
-        VkMemoryBarrier', module Graphics.Vulkan.Types.Enum.Object) -- ' closing tick for hsc2hs
-       where
-import GHC.Ptr                                                (Ptr (..))
-import Graphics.Vulkan.Constants                              (pattern VK_ATTACHMENT_UNUSED,
-                                                               pattern VK_FALSE,
-                                                               pattern VK_LOD_CLAMP_NONE,
-                                                               pattern VK_QUEUE_FAMILY_IGNORED,
-                                                               pattern VK_REMAINING_ARRAY_LAYERS,
-                                                               pattern VK_REMAINING_MIP_LEVELS,
-                                                               pattern VK_SUBPASS_EXTERNAL,
-                                                               pattern VK_TRUE,
-                                                               pattern VK_WHOLE_SIZE)
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Proc
-import Graphics.Vulkan.Types.BaseTypes
-import Graphics.Vulkan.Types.Bitmasks
-import Graphics.Vulkan.Types.Enum.AccessFlags
-import Graphics.Vulkan.Types.Enum.Attachment
-import Graphics.Vulkan.Types.Enum.Blend
-import Graphics.Vulkan.Types.Enum.BorderColor
-import Graphics.Vulkan.Types.Enum.Buffer
-import Graphics.Vulkan.Types.Enum.Color
-import Graphics.Vulkan.Types.Enum.Command
-import Graphics.Vulkan.Types.Enum.CompareOp
-import Graphics.Vulkan.Types.Enum.ComponentSwizzle
-import Graphics.Vulkan.Types.Enum.CullModeFlags
-import Graphics.Vulkan.Types.Enum.DependencyFlags
-import Graphics.Vulkan.Types.Enum.Descriptor
-import Graphics.Vulkan.Types.Enum.Device
-import Graphics.Vulkan.Types.Enum.DynamicState
-import Graphics.Vulkan.Types.Enum.Fence
-import Graphics.Vulkan.Types.Enum.Filter
-import Graphics.Vulkan.Types.Enum.Format
-import Graphics.Vulkan.Types.Enum.FrontFace
-import Graphics.Vulkan.Types.Enum.Image
-import Graphics.Vulkan.Types.Enum.IndexType
-import Graphics.Vulkan.Types.Enum.InternalAllocationType
-import Graphics.Vulkan.Types.Enum.LogicOp
-import Graphics.Vulkan.Types.Enum.Memory
-import Graphics.Vulkan.Types.Enum.Object
-import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
-import Graphics.Vulkan.Types.Enum.Pipeline
-import Graphics.Vulkan.Types.Enum.PolygonMode
-import Graphics.Vulkan.Types.Enum.PrimitiveTopology
-import Graphics.Vulkan.Types.Enum.Query
-import Graphics.Vulkan.Types.Enum.Queue
-import Graphics.Vulkan.Types.Enum.Result
-import Graphics.Vulkan.Types.Enum.SampleCountFlags
-import Graphics.Vulkan.Types.Enum.Sampler
-import Graphics.Vulkan.Types.Enum.Shader
-import Graphics.Vulkan.Types.Enum.SharingMode
-import Graphics.Vulkan.Types.Enum.Sparse
-import Graphics.Vulkan.Types.Enum.Stencil
-import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Enum.Subpass
-import Graphics.Vulkan.Types.Enum.SystemAllocationScope
-import Graphics.Vulkan.Types.Enum.VertexInputRate
-import Graphics.Vulkan.Types.Funcpointers
-import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.AllocationCallbacks
-import Graphics.Vulkan.Types.Struct.ApplicationInfo
-import Graphics.Vulkan.Types.Struct.Attachment
-import Graphics.Vulkan.Types.Struct.Base                      (VkBaseInStructure,
-                                                               VkBaseInStructure', -- ' closing tick for hsc2hs
-                                                               VkBaseOutStructure,
-                                                               VkBaseOutStructure') -- ' closing tick for hsc2hs
-import Graphics.Vulkan.Types.Struct.Bind
-import Graphics.Vulkan.Types.Struct.Buffer
-import Graphics.Vulkan.Types.Struct.Clear
-import Graphics.Vulkan.Types.Struct.Command
-import Graphics.Vulkan.Types.Struct.ComponentMapping
-import Graphics.Vulkan.Types.Struct.ComputePipelineCreateInfo
-import Graphics.Vulkan.Types.Struct.CopyDescriptorSet
-import Graphics.Vulkan.Types.Struct.Descriptor
-import Graphics.Vulkan.Types.Struct.Device
-import Graphics.Vulkan.Types.Struct.DispatchIndirectCommand   (VkDispatchIndirectCommand,
-                                                               VkDispatchIndirectCommand') -- ' closing tick for hsc2hs
-import Graphics.Vulkan.Types.Struct.DrawInd                   (VkDrawIndexedIndirectCommand,
-                                                               VkDrawIndexedIndirectCommand', -- ' closing tick for hsc2hs
-                                                               VkDrawIndirectCommand,
-                                                               VkDrawIndirectCommand') -- ' closing tick for hsc2hs
-import Graphics.Vulkan.Types.Struct.EventCreateInfo
-import Graphics.Vulkan.Types.Struct.ExtensionProperties
-import Graphics.Vulkan.Types.Struct.Extent
-import Graphics.Vulkan.Types.Struct.Fence
-import Graphics.Vulkan.Types.Struct.FormatProperties
-import Graphics.Vulkan.Types.Struct.FramebufferCreateInfo
-import Graphics.Vulkan.Types.Struct.Image
-import Graphics.Vulkan.Types.Struct.InstanceCreateInfo
-import Graphics.Vulkan.Types.Struct.LayerProperties
-import Graphics.Vulkan.Types.Struct.MappedMemoryRange
-import Graphics.Vulkan.Types.Struct.Memory
-import Graphics.Vulkan.Types.Struct.Offset
-import Graphics.Vulkan.Types.Struct.PhysicalDevice
-import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
-import Graphics.Vulkan.Types.Struct.Pipeline
-import Graphics.Vulkan.Types.Struct.PushConstantRange
-import Graphics.Vulkan.Types.Struct.QueryPoolCreateInfo
-import Graphics.Vulkan.Types.Struct.QueueFamilyProperties
-import Graphics.Vulkan.Types.Struct.Rect
-import Graphics.Vulkan.Types.Struct.RenderPass
-import Graphics.Vulkan.Types.Struct.Sampler
-import Graphics.Vulkan.Types.Struct.Semaphore
-import Graphics.Vulkan.Types.Struct.Shader
-import Graphics.Vulkan.Types.Struct.Sparse
-import Graphics.Vulkan.Types.Struct.Specialization
-import Graphics.Vulkan.Types.Struct.StencilOpState
-import Graphics.Vulkan.Types.Struct.SubmitInfo
-import Graphics.Vulkan.Types.Struct.Subpass
-import Graphics.Vulkan.Types.Struct.SubresourceLayout
-import Graphics.Vulkan.Types.Struct.VertexInput
-import Graphics.Vulkan.Types.Struct.Viewport
-import Graphics.Vulkan.Types.Struct.WriteDescriptorSet
-import System.IO.Unsafe                                       (unsafeDupablePerformIO)
-
-pattern VkCreateInstance :: CString
-
-pattern VkCreateInstance <- (is_VkCreateInstance -> True)
-  where VkCreateInstance = _VkCreateInstance
-
-{-# INLINE _VkCreateInstance #-}
-
-_VkCreateInstance :: CString
-_VkCreateInstance = Ptr "vkCreateInstance\NUL"##
-
-{-# INLINE is_VkCreateInstance #-}
-
-is_VkCreateInstance :: CString -> Bool
-is_VkCreateInstance = (EQ ==) . cmpCStrings _VkCreateInstance
-
-type VkCreateInstance = "vkCreateInstance"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
---
--- or less efficient:
---
--- > myCreateInstance <- vkGetProc @VkCreateInstance
---
--- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
---           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateInstance"
-               vkCreateInstanceUnsafe ::
-               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                        ->
-                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> Ptr VkInstance -- ^ pInstance
-                                                             -> IO VkResult
-
-##else
-vkCreateInstanceUnsafe ::
-                       Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                                ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkInstance -- ^ pInstance
-                                                                     -> IO VkResult
-vkCreateInstanceUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateInstance)
-
-{-# NOINLINE vkCreateInstanceUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
---
--- or less efficient:
---
--- > myCreateInstance <- vkGetProc @VkCreateInstance
---
--- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
---           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateInstance" vkCreateInstanceSafe
-               ::
-               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                        ->
-                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> Ptr VkInstance -- ^ pInstance
-                                                             -> IO VkResult
-
-##else
-vkCreateInstanceSafe ::
-                     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                              ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkInstance -- ^ pInstance
-                                                                   -> IO VkResult
-vkCreateInstanceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateInstance)
-
-{-# NOINLINE vkCreateInstanceSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
--- > VkResult vkCreateInstance
--- >     ( const VkInstanceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkInstance* pInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
---
--- or less efficient:
---
--- > myCreateInstance <- vkGetProc @VkCreateInstance
---
--- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
---           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
---
-vkCreateInstance ::
-                 Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkInstance -- ^ pInstance
-                                                               -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateInstance = vkCreateInstanceUnsafe
-##else
-vkCreateInstance = vkCreateInstanceSafe
-
-##endif
-{-# INLINE vkCreateInstance #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
---
---   > VkResult vkCreateInstance
---   >     ( const VkInstanceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkInstance* pInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
-type HS_vkCreateInstance =
-     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
-                              ->
-       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                 -> Ptr VkInstance -- ^ pInstance
-                                                   -> IO VkResult
-
-type PFN_vkCreateInstance = FunPtr HS_vkCreateInstance
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateInstanceUnsafe
-               :: PFN_vkCreateInstance -> HS_vkCreateInstance
-
-foreign import ccall safe "dynamic" unwrapVkCreateInstanceSafe ::
-               PFN_vkCreateInstance -> HS_vkCreateInstance
-
-instance VulkanProc "vkCreateInstance" where
-        type VkProcType "vkCreateInstance" = HS_vkCreateInstance
-        vkProcSymbol = _VkCreateInstance
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateInstanceUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateInstanceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyInstance :: CString
-
-pattern VkDestroyInstance <- (is_VkDestroyInstance -> True)
-  where VkDestroyInstance = _VkDestroyInstance
-
-{-# INLINE _VkDestroyInstance #-}
-
-_VkDestroyInstance :: CString
-_VkDestroyInstance = Ptr "vkDestroyInstance\NUL"##
-
-{-# INLINE is_VkDestroyInstance #-}
-
-is_VkDestroyInstance :: CString -> Bool
-is_VkDestroyInstance = (EQ ==) . cmpCStrings _VkDestroyInstance
-
-type VkDestroyInstance = "vkDestroyInstance"
-
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
---
--- or less efficient:
---
--- > myDestroyInstance <- vkGetProc @VkDestroyInstance
---
--- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
---           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyInstance"
-               vkDestroyInstanceUnsafe ::
-               VkInstance -- ^ instance
-                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> IO ()
-
-##else
-vkDestroyInstanceUnsafe ::
-                        VkInstance -- ^ instance
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-vkDestroyInstanceUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyInstance)
-
-{-# NOINLINE vkDestroyInstanceUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
---
--- or less efficient:
---
--- > myDestroyInstance <- vkGetProc @VkDestroyInstance
---
--- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
---           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyInstance" vkDestroyInstanceSafe
-               :: VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-##else
-vkDestroyInstanceSafe ::
-                      VkInstance -- ^ instance
-                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              -> IO ()
-vkDestroyInstanceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyInstance)
-
-{-# NOINLINE vkDestroyInstanceSafe #-}
-##endif
-
--- |
--- > void vkDestroyInstance
--- >     ( VkInstance instance
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
---
--- or less efficient:
---
--- > myDestroyInstance <- vkGetProc @VkDestroyInstance
---
--- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
---           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
---
-vkDestroyInstance ::
-                  VkInstance -- ^ instance
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyInstance = vkDestroyInstanceUnsafe
-##else
-vkDestroyInstance = vkDestroyInstanceSafe
-
-##endif
-{-# INLINE vkDestroyInstance #-}
-
--- | > void vkDestroyInstance
---   >     ( VkInstance instance
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
-type HS_vkDestroyInstance =
-     VkInstance -- ^ instance
-                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> IO ()
-
-type PFN_vkDestroyInstance = FunPtr HS_vkDestroyInstance
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyInstanceUnsafe
-               :: PFN_vkDestroyInstance -> HS_vkDestroyInstance
-
-foreign import ccall safe "dynamic" unwrapVkDestroyInstanceSafe ::
-               PFN_vkDestroyInstance -> HS_vkDestroyInstance
-
-instance VulkanProc "vkDestroyInstance" where
-        type VkProcType "vkDestroyInstance" = HS_vkDestroyInstance
-        vkProcSymbol = _VkDestroyInstance
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyInstanceUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyInstanceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumeratePhysicalDevices :: CString
-
-pattern VkEnumeratePhysicalDevices <-
-        (is_VkEnumeratePhysicalDevices -> True)
-  where VkEnumeratePhysicalDevices = _VkEnumeratePhysicalDevices
-
-{-# INLINE _VkEnumeratePhysicalDevices #-}
-
-_VkEnumeratePhysicalDevices :: CString
-_VkEnumeratePhysicalDevices = Ptr "vkEnumeratePhysicalDevices\NUL"##
-
-{-# INLINE is_VkEnumeratePhysicalDevices #-}
-
-is_VkEnumeratePhysicalDevices :: CString -> Bool
-is_VkEnumeratePhysicalDevices
-  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDevices
-
-type VkEnumeratePhysicalDevices = "vkEnumeratePhysicalDevices"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
---
--- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
---           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEnumeratePhysicalDevices"
-               vkEnumeratePhysicalDevicesUnsafe ::
-               VkInstance -- ^ instance
-                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                -> IO VkResult
-
-##else
-vkEnumeratePhysicalDevicesUnsafe ::
-                                 VkInstance -- ^ instance
-                                            -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                                          -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                                  -> IO VkResult
-vkEnumeratePhysicalDevicesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkEnumeratePhysicalDevices)
-
-{-# NOINLINE vkEnumeratePhysicalDevicesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
---
--- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
---           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumeratePhysicalDevices"
-               vkEnumeratePhysicalDevicesSafe ::
-               VkInstance -- ^ instance
-                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                -> IO VkResult
-
-##else
-vkEnumeratePhysicalDevicesSafe ::
-                               VkInstance -- ^ instance
-                                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                                -> IO VkResult
-vkEnumeratePhysicalDevicesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumeratePhysicalDevices)
-
-{-# NOINLINE vkEnumeratePhysicalDevicesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDevices
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceCount
--- >     , VkPhysicalDevice* pPhysicalDevices
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
---
--- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
---           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
---
-vkEnumeratePhysicalDevices ::
-                           VkInstance -- ^ instance
-                                      -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                                                    -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                                            -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkEnumeratePhysicalDevices = vkEnumeratePhysicalDevicesUnsafe
-##else
-vkEnumeratePhysicalDevices = vkEnumeratePhysicalDevicesSafe
-
-##endif
-{-# INLINE vkEnumeratePhysicalDevices #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
---   > VkResult vkEnumeratePhysicalDevices
---   >     ( VkInstance instance
---   >     , uint32_t* pPhysicalDeviceCount
---   >     , VkPhysicalDevice* pPhysicalDevices
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
-type HS_vkEnumeratePhysicalDevices =
-     VkInstance -- ^ instance
-                -> Ptr Word32 -- ^ pPhysicalDeviceCount
-                              -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
-                                                      -> IO VkResult
-
-type PFN_vkEnumeratePhysicalDevices =
-     FunPtr HS_vkEnumeratePhysicalDevices
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumeratePhysicalDevicesUnsafe ::
-               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumeratePhysicalDevicesSafe ::
-               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
-
-instance VulkanProc "vkEnumeratePhysicalDevices" where
-        type VkProcType "vkEnumeratePhysicalDevices" =
-             HS_vkEnumeratePhysicalDevices
-        vkProcSymbol = _VkEnumeratePhysicalDevices
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkEnumeratePhysicalDevicesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDevicesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceFeatures :: CString
-
-pattern VkGetPhysicalDeviceFeatures <-
-        (is_VkGetPhysicalDeviceFeatures -> True)
-  where VkGetPhysicalDeviceFeatures = _VkGetPhysicalDeviceFeatures
-
-{-# INLINE _VkGetPhysicalDeviceFeatures #-}
-
-_VkGetPhysicalDeviceFeatures :: CString
-_VkGetPhysicalDeviceFeatures
-  = Ptr "vkGetPhysicalDeviceFeatures\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceFeatures #-}
-
-is_VkGetPhysicalDeviceFeatures :: CString -> Bool
-is_VkGetPhysicalDeviceFeatures
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures
-
-type VkGetPhysicalDeviceFeatures = "vkGetPhysicalDeviceFeatures"
-
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
---
--- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
---           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPhysicalDeviceFeatures"
-               vkGetPhysicalDeviceFeaturesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                -> IO ()
-
-##else
-vkGetPhysicalDeviceFeaturesUnsafe ::
-                                  VkPhysicalDevice -- ^ physicalDevice
-                                                   -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                                   -> IO ()
-vkGetPhysicalDeviceFeaturesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceFeatures)
-
-{-# NOINLINE vkGetPhysicalDeviceFeaturesUnsafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
---
--- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
---           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPhysicalDeviceFeatures"
-               vkGetPhysicalDeviceFeaturesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                -> IO ()
-
-##else
-vkGetPhysicalDeviceFeaturesSafe ::
-                                VkPhysicalDevice -- ^ physicalDevice
-                                                 -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                                 -> IO ()
-vkGetPhysicalDeviceFeaturesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceFeatures)
-
-{-# NOINLINE vkGetPhysicalDeviceFeaturesSafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceFeatures
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
---
--- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
---           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
---
-vkGetPhysicalDeviceFeatures ::
-                            VkPhysicalDevice -- ^ physicalDevice
-                                             -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                                             -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceFeatures = vkGetPhysicalDeviceFeaturesUnsafe
-##else
-vkGetPhysicalDeviceFeatures = vkGetPhysicalDeviceFeaturesSafe
-
-##endif
-{-# INLINE vkGetPhysicalDeviceFeatures #-}
-
--- | > void vkGetPhysicalDeviceFeatures
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceFeatures* pFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFeatures =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
-                                                      -> IO ()
-
-type PFN_vkGetPhysicalDeviceFeatures =
-     FunPtr HS_vkGetPhysicalDeviceFeatures
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFeaturesUnsafe ::
-               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceFeaturesSafe ::
-               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
-
-instance VulkanProc "vkGetPhysicalDeviceFeatures" where
-        type VkProcType "vkGetPhysicalDeviceFeatures" =
-             HS_vkGetPhysicalDeviceFeatures
-        vkProcSymbol = _VkGetPhysicalDeviceFeatures
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeaturesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeaturesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceFormatProperties <-
-        (is_VkGetPhysicalDeviceFormatProperties -> True)
-  where VkGetPhysicalDeviceFormatProperties
-          = _VkGetPhysicalDeviceFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceFormatProperties #-}
-
-_VkGetPhysicalDeviceFormatProperties :: CString
-_VkGetPhysicalDeviceFormatProperties
-  = Ptr "vkGetPhysicalDeviceFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceFormatProperties #-}
-
-is_VkGetPhysicalDeviceFormatProperties :: CString -> Bool
-is_VkGetPhysicalDeviceFormatProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties
-
-type VkGetPhysicalDeviceFormatProperties =
-     "vkGetPhysicalDeviceFormatProperties"
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties"
-               vkGetPhysicalDeviceFormatPropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                      -> IO ()
-
-##else
-vkGetPhysicalDeviceFormatPropertiesUnsafe ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            VkFormat -- ^ format
-                                                     -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceFormatPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatPropertiesUnsafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPhysicalDeviceFormatProperties"
-               vkGetPhysicalDeviceFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                      -> IO ()
-
-##else
-vkGetPhysicalDeviceFormatPropertiesSafe ::
-                                        VkPhysicalDevice -- ^ physicalDevice
-                                                         ->
-                                          VkFormat -- ^ format
-                                                   -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                             -> IO ()
-vkGetPhysicalDeviceFormatPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatPropertiesSafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
---
-vkGetPhysicalDeviceFormatProperties ::
-                                    VkPhysicalDevice -- ^ physicalDevice
-                                                     -> VkFormat -- ^ format
-                                                                 -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                                                           -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceFormatProperties
-  = vkGetPhysicalDeviceFormatPropertiesUnsafe
-##else
-vkGetPhysicalDeviceFormatProperties
-  = vkGetPhysicalDeviceFormatPropertiesSafe
-
-##endif
-{-# INLINE vkGetPhysicalDeviceFormatProperties #-}
-
--- | > void vkGetPhysicalDeviceFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkFormatProperties* pFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> VkFormat -- ^ format
-                                  -> Ptr VkFormatProperties -- ^ pFormatProperties
-                                                            -> IO ()
-
-type PFN_vkGetPhysicalDeviceFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceFormatProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatPropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceFormatProperties ->
-                 HS_vkGetPhysicalDeviceFormatProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceFormatProperties ->
-                 HS_vkGetPhysicalDeviceFormatProperties
-
-instance VulkanProc "vkGetPhysicalDeviceFormatProperties" where
-        type VkProcType "vkGetPhysicalDeviceFormatProperties" =
-             HS_vkGetPhysicalDeviceFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceFormatPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFormatPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceImageFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceImageFormatProperties <-
-        (is_VkGetPhysicalDeviceImageFormatProperties -> True)
-  where VkGetPhysicalDeviceImageFormatProperties
-          = _VkGetPhysicalDeviceImageFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceImageFormatProperties #-}
-
-_VkGetPhysicalDeviceImageFormatProperties :: CString
-_VkGetPhysicalDeviceImageFormatProperties
-  = Ptr "vkGetPhysicalDeviceImageFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties #-}
-
-is_VkGetPhysicalDeviceImageFormatProperties :: CString -> Bool
-is_VkGetPhysicalDeviceImageFormatProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties
-
-type VkGetPhysicalDeviceImageFormatProperties =
-     "vkGetPhysicalDeviceImageFormatProperties"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceImageFormatProperties"
-               vkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkImageTiling -- ^ tiling
-                                   ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageCreateFlags -- ^ flags
-                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-
-##else
-vkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 VkFormat -- ^ format
-                                                          ->
-                                                   VkImageType -- ^ type
-                                                               ->
-                                                     VkImageTiling -- ^ tiling
-                                                                   ->
-                                                       VkImageUsageFlags -- ^ usage
-                                                                         ->
-                                                         VkImageCreateFlags -- ^ flags
-                                                                            ->
-                                                           Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                                       ->
-                                                             IO VkResult
-vkGetPhysicalDeviceImageFormatPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatPropertiesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe
-               "vkGetPhysicalDeviceImageFormatProperties"
-               vkGetPhysicalDeviceImageFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkImageTiling -- ^ tiling
-                                   ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageCreateFlags -- ^ flags
-                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-
-##else
-vkGetPhysicalDeviceImageFormatPropertiesSafe ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               VkFormat -- ^ format
-                                                        ->
-                                                 VkImageType -- ^ type
-                                                             ->
-                                                   VkImageTiling -- ^ tiling
-                                                                 ->
-                                                     VkImageUsageFlags -- ^ usage
-                                                                       ->
-                                                       VkImageCreateFlags -- ^ flags
-                                                                          ->
-                                                         Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                                     -> IO VkResult
-vkGetPhysicalDeviceImageFormatPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatPropertiesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkImageTiling tiling
--- >     , VkImageUsageFlags usage
--- >     , VkImageCreateFlags flags
--- >     , VkImageFormatProperties* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
---
-vkGetPhysicalDeviceImageFormatProperties ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           VkFormat -- ^ format
-                                                    ->
-                                             VkImageType -- ^ type
-                                                         ->
-                                               VkImageTiling -- ^ tiling
-                                                             ->
-                                                 VkImageUsageFlags -- ^ usage
-                                                                   ->
-                                                   VkImageCreateFlags -- ^ flags
-                                                                      ->
-                                                     Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                                 -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceImageFormatProperties
-  = vkGetPhysicalDeviceImageFormatPropertiesUnsafe
-##else
-vkGetPhysicalDeviceImageFormatProperties
-  = vkGetPhysicalDeviceImageFormatPropertiesSafe
-
-##endif
-{-# INLINE vkGetPhysicalDeviceImageFormatProperties #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
---   > VkResult vkGetPhysicalDeviceImageFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkImageType type
---   >     , VkImageTiling tiling
---   >     , VkImageUsageFlags usage
---   >     , VkImageCreateFlags flags
---   >     , VkImageFormatProperties* pImageFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceImageFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       VkFormat -- ^ format
-                ->
-         VkImageType -- ^ type
-                     ->
-           VkImageTiling -- ^ tiling
-                         ->
-             VkImageUsageFlags -- ^ usage
-                               ->
-               VkImageCreateFlags -- ^ flags
-                                  -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
-                                                                 -> IO VkResult
-
-type PFN_vkGetPhysicalDeviceImageFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties
-
-instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceImageFormatProperties" =
-             HS_vkGetPhysicalDeviceImageFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceImageFormatPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceProperties :: CString
-
-pattern VkGetPhysicalDeviceProperties <-
-        (is_VkGetPhysicalDeviceProperties -> True)
-  where VkGetPhysicalDeviceProperties
-          = _VkGetPhysicalDeviceProperties
-
-{-# INLINE _VkGetPhysicalDeviceProperties #-}
-
-_VkGetPhysicalDeviceProperties :: CString
-_VkGetPhysicalDeviceProperties
-  = Ptr "vkGetPhysicalDeviceProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceProperties #-}
-
-is_VkGetPhysicalDeviceProperties :: CString -> Bool
-is_VkGetPhysicalDeviceProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties
-
-type VkGetPhysicalDeviceProperties =
-     "vkGetPhysicalDeviceProperties"
-
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
---
--- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
---           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPhysicalDeviceProperties"
-               vkGetPhysicalDevicePropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                  -> IO ()
-
-##else
-vkGetPhysicalDevicePropertiesUnsafe ::
-                                    VkPhysicalDevice -- ^ physicalDevice
-                                                     -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                                       -> IO ()
-vkGetPhysicalDevicePropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceProperties)
-
-{-# NOINLINE vkGetPhysicalDevicePropertiesUnsafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
---
--- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
---           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPhysicalDeviceProperties"
-               vkGetPhysicalDevicePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                  -> IO ()
-
-##else
-vkGetPhysicalDevicePropertiesSafe ::
-                                  VkPhysicalDevice -- ^ physicalDevice
-                                                   -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                                     -> IO ()
-vkGetPhysicalDevicePropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceProperties)
-
-{-# NOINLINE vkGetPhysicalDevicePropertiesSafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
---
--- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
---           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
---
-vkGetPhysicalDeviceProperties ::
-                              VkPhysicalDevice -- ^ physicalDevice
-                                               -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                                                 -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceProperties = vkGetPhysicalDevicePropertiesUnsafe
-##else
-vkGetPhysicalDeviceProperties = vkGetPhysicalDevicePropertiesSafe
-
-##endif
-{-# INLINE vkGetPhysicalDeviceProperties #-}
-
--- | > void vkGetPhysicalDeviceProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
-                                                        -> IO ()
-
-type PFN_vkGetPhysicalDeviceProperties =
-     FunPtr HS_vkGetPhysicalDeviceProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDevicePropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceProperties ->
-                 HS_vkGetPhysicalDeviceProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDevicePropertiesSafe ::
-               PFN_vkGetPhysicalDeviceProperties ->
-                 HS_vkGetPhysicalDeviceProperties
-
-instance VulkanProc "vkGetPhysicalDeviceProperties" where
-        type VkProcType "vkGetPhysicalDeviceProperties" =
-             HS_vkGetPhysicalDeviceProperties
-        vkProcSymbol = _VkGetPhysicalDeviceProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDevicePropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDevicePropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties :: CString
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties <-
-        (is_VkGetPhysicalDeviceQueueFamilyProperties -> True)
-  where VkGetPhysicalDeviceQueueFamilyProperties
-          = _VkGetPhysicalDeviceQueueFamilyProperties
-
-{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties #-}
-
-_VkGetPhysicalDeviceQueueFamilyProperties :: CString
-_VkGetPhysicalDeviceQueueFamilyProperties
-  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties #-}
-
-is_VkGetPhysicalDeviceQueueFamilyProperties :: CString -> Bool
-is_VkGetPhysicalDeviceQueueFamilyProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties
-
-type VkGetPhysicalDeviceQueueFamilyProperties =
-     "vkGetPhysicalDeviceQueueFamilyProperties"
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
---
--- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
---           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceQueueFamilyProperties"
-               vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                           -> IO ()
-
-##else
-vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                                                           -> IO ()
-vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceQueueFamilyProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
---
--- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
---           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe
-               "vkGetPhysicalDeviceQueueFamilyProperties"
-               vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                           -> IO ()
-
-##else
-vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
-                                             VkPhysicalDevice -- ^ physicalDevice
-                                                              ->
-                                               Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                          -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceQueueFamilyPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyPropertiesSafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
---
--- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
---           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
---
-vkGetPhysicalDeviceQueueFamilyProperties ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                      -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                                                     -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceQueueFamilyProperties
-  = vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
-##else
-vkGetPhysicalDeviceQueueFamilyProperties
-  = vkGetPhysicalDeviceQueueFamilyPropertiesSafe
-
-##endif
-{-# INLINE vkGetPhysicalDeviceQueueFamilyProperties #-}
-
--- | > void vkGetPhysicalDeviceQueueFamilyProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pQueueFamilyPropertyCount
---   >     , VkQueueFamilyProperties* pQueueFamilyProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceQueueFamilyProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                  -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
-                                                 -> IO ()
-
-type PFN_vkGetPhysicalDeviceQueueFamilyProperties =
-     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties
-
-instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties" =
-             HS_vkGetPhysicalDeviceQueueFamilyProperties
-        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceMemoryProperties :: CString
-
-pattern VkGetPhysicalDeviceMemoryProperties <-
-        (is_VkGetPhysicalDeviceMemoryProperties -> True)
-  where VkGetPhysicalDeviceMemoryProperties
-          = _VkGetPhysicalDeviceMemoryProperties
-
-{-# INLINE _VkGetPhysicalDeviceMemoryProperties #-}
-
-_VkGetPhysicalDeviceMemoryProperties :: CString
-_VkGetPhysicalDeviceMemoryProperties
-  = Ptr "vkGetPhysicalDeviceMemoryProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceMemoryProperties #-}
-
-is_VkGetPhysicalDeviceMemoryProperties :: CString -> Bool
-is_VkGetPhysicalDeviceMemoryProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties
-
-type VkGetPhysicalDeviceMemoryProperties =
-     "vkGetPhysicalDeviceMemoryProperties"
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
---
--- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
---           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties"
-               vkGetPhysicalDeviceMemoryPropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                        -> IO ()
-
-##else
-vkGetPhysicalDeviceMemoryPropertiesUnsafe ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceMemoryPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceMemoryProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryPropertiesUnsafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
---
--- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
---           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties"
-               vkGetPhysicalDeviceMemoryPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                        -> IO ()
-
-##else
-vkGetPhysicalDeviceMemoryPropertiesSafe ::
-                                        VkPhysicalDevice -- ^ physicalDevice
-                                                         ->
-                                          Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceMemoryPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryPropertiesSafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
---
--- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
---           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
---
-vkGetPhysicalDeviceMemoryProperties ::
-                                    VkPhysicalDevice -- ^ physicalDevice
-                                                     ->
-                                      Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                                           -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceMemoryProperties
-  = vkGetPhysicalDeviceMemoryPropertiesUnsafe
-##else
-vkGetPhysicalDeviceMemoryProperties
-  = vkGetPhysicalDeviceMemoryPropertiesSafe
-
-##endif
-{-# INLINE vkGetPhysicalDeviceMemoryProperties #-}
-
--- | > void vkGetPhysicalDeviceMemoryProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceMemoryProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
-                                                              -> IO ()
-
-type PFN_vkGetPhysicalDeviceMemoryProperties =
-     FunPtr HS_vkGetPhysicalDeviceMemoryProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryPropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceMemoryProperties ->
-                 HS_vkGetPhysicalDeviceMemoryProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceMemoryProperties ->
-                 HS_vkGetPhysicalDeviceMemoryProperties
-
-instance VulkanProc "vkGetPhysicalDeviceMemoryProperties" where
-        type VkProcType "vkGetPhysicalDeviceMemoryProperties" =
-             HS_vkGetPhysicalDeviceMemoryProperties
-        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceMemoryPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceMemoryPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetInstanceProcAddr :: CString
-
-pattern VkGetInstanceProcAddr <- (is_VkGetInstanceProcAddr -> True)
-  where VkGetInstanceProcAddr = _VkGetInstanceProcAddr
-
-{-# INLINE _VkGetInstanceProcAddr #-}
-
-_VkGetInstanceProcAddr :: CString
-_VkGetInstanceProcAddr = Ptr "vkGetInstanceProcAddr\NUL"##
-
-{-# INLINE is_VkGetInstanceProcAddr #-}
-
-is_VkGetInstanceProcAddr :: CString -> Bool
-is_VkGetInstanceProcAddr
-  = (EQ ==) . cmpCStrings _VkGetInstanceProcAddr
-
-type VkGetInstanceProcAddr = "vkGetInstanceProcAddr"
-
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
---
--- or less efficient:
---
--- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
---
--- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
---           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetInstanceProcAddr"
-               vkGetInstanceProcAddrUnsafe ::
-               VkInstance -- ^ instance
-                          -> CString -- ^ pName
-                                     -> IO PFN_vkVoidFunction
-
-##else
-vkGetInstanceProcAddrUnsafe ::
-                            VkInstance -- ^ instance
-                                       -> CString -- ^ pName
-                                                  -> IO PFN_vkVoidFunction
-vkGetInstanceProcAddrUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetInstanceProcAddr)
-
-{-# NOINLINE vkGetInstanceProcAddrUnsafe #-}
-##endif
-
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
---
--- or less efficient:
---
--- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
---
--- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
---           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetInstanceProcAddr"
-               vkGetInstanceProcAddrSafe ::
-               VkInstance -- ^ instance
-                          -> CString -- ^ pName
-                                     -> IO PFN_vkVoidFunction
-
-##else
-vkGetInstanceProcAddrSafe ::
-                          VkInstance -- ^ instance
-                                     -> CString -- ^ pName
-                                                -> IO PFN_vkVoidFunction
-vkGetInstanceProcAddrSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetInstanceProcAddr)
-
-{-# NOINLINE vkGetInstanceProcAddrSafe #-}
-##endif
-
--- |
--- > PFN_vkVoidFunction vkGetInstanceProcAddr
--- >     ( VkInstance instance
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
---
--- or less efficient:
---
--- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
---
--- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
---           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
---
-vkGetInstanceProcAddr ::
-                      VkInstance -- ^ instance
-                                 -> CString -- ^ pName
-                                            -> IO PFN_vkVoidFunction
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetInstanceProcAddr = vkGetInstanceProcAddrUnsafe
-##else
-vkGetInstanceProcAddr = vkGetInstanceProcAddrSafe
-
-##endif
-{-# INLINE vkGetInstanceProcAddr #-}
-
--- | > PFN_vkVoidFunction vkGetInstanceProcAddr
---   >     ( VkInstance instance
---   >     , const char* pName
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
-type HS_vkGetInstanceProcAddr =
-     VkInstance -- ^ instance
-                -> CString -- ^ pName
-                           -> IO PFN_vkVoidFunction
-
-type PFN_vkGetInstanceProcAddr = FunPtr HS_vkGetInstanceProcAddr
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetInstanceProcAddrUnsafe ::
-               PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
-
-foreign import ccall safe "dynamic" unwrapVkGetInstanceProcAddrSafe
-               :: PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
-
-instance VulkanProc "vkGetInstanceProcAddr" where
-        type VkProcType "vkGetInstanceProcAddr" = HS_vkGetInstanceProcAddr
-        vkProcSymbol = _VkGetInstanceProcAddr
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetInstanceProcAddrUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetInstanceProcAddrSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetDeviceProcAddr :: CString
-
-pattern VkGetDeviceProcAddr <- (is_VkGetDeviceProcAddr -> True)
-  where VkGetDeviceProcAddr = _VkGetDeviceProcAddr
-
-{-# INLINE _VkGetDeviceProcAddr #-}
-
-_VkGetDeviceProcAddr :: CString
-_VkGetDeviceProcAddr = Ptr "vkGetDeviceProcAddr\NUL"##
-
-{-# INLINE is_VkGetDeviceProcAddr #-}
-
-is_VkGetDeviceProcAddr :: CString -> Bool
-is_VkGetDeviceProcAddr = (EQ ==) . cmpCStrings _VkGetDeviceProcAddr
-
-type VkGetDeviceProcAddr = "vkGetDeviceProcAddr"
-
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
---
--- or less efficient:
---
--- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
---
--- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
---           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetDeviceProcAddr"
-               vkGetDeviceProcAddrUnsafe ::
-               VkDevice -- ^ device
-                        -> CString -- ^ pName
-                                   -> IO PFN_vkVoidFunction
-
-##else
-vkGetDeviceProcAddrUnsafe ::
-                          VkDevice -- ^ device
-                                   -> CString -- ^ pName
-                                              -> IO PFN_vkVoidFunction
-vkGetDeviceProcAddrUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceProcAddr)
-
-{-# NOINLINE vkGetDeviceProcAddrUnsafe #-}
-##endif
-
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
---
--- or less efficient:
---
--- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
---
--- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
---           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetDeviceProcAddr"
-               vkGetDeviceProcAddrSafe ::
-               VkDevice -- ^ device
-                        -> CString -- ^ pName
-                                   -> IO PFN_vkVoidFunction
-
-##else
-vkGetDeviceProcAddrSafe ::
-                        VkDevice -- ^ device
-                                 -> CString -- ^ pName
-                                            -> IO PFN_vkVoidFunction
-vkGetDeviceProcAddrSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceProcAddr)
-
-{-# NOINLINE vkGetDeviceProcAddrSafe #-}
-##endif
-
--- |
--- > PFN_vkVoidFunction vkGetDeviceProcAddr
--- >     ( VkDevice device
--- >     , const char* pName
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
---
--- or less efficient:
---
--- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
---
--- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
---           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
---
-vkGetDeviceProcAddr :: VkDevice -- ^ device
-                                -> CString -- ^ pName
-                                           -> IO PFN_vkVoidFunction
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetDeviceProcAddr = vkGetDeviceProcAddrUnsafe
-##else
-vkGetDeviceProcAddr = vkGetDeviceProcAddrSafe
-
-##endif
-{-# INLINE vkGetDeviceProcAddr #-}
-
--- | > PFN_vkVoidFunction vkGetDeviceProcAddr
---   >     ( VkDevice device
---   >     , const char* pName
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
-type HS_vkGetDeviceProcAddr =
-     VkDevice -- ^ device
-              -> CString -- ^ pName
-                         -> IO PFN_vkVoidFunction
-
-type PFN_vkGetDeviceProcAddr = FunPtr HS_vkGetDeviceProcAddr
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetDeviceProcAddrUnsafe ::
-               PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
-
-foreign import ccall safe "dynamic" unwrapVkGetDeviceProcAddrSafe
-               :: PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
-
-instance VulkanProc "vkGetDeviceProcAddr" where
-        type VkProcType "vkGetDeviceProcAddr" = HS_vkGetDeviceProcAddr
-        vkProcSymbol = _VkGetDeviceProcAddr
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetDeviceProcAddrUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceProcAddrSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateDevice :: CString
-
-pattern VkCreateDevice <- (is_VkCreateDevice -> True)
-  where VkCreateDevice = _VkCreateDevice
-
-{-# INLINE _VkCreateDevice #-}
-
-_VkCreateDevice :: CString
-_VkCreateDevice = Ptr "vkCreateDevice\NUL"##
-
-{-# INLINE is_VkCreateDevice #-}
-
-is_VkCreateDevice :: CString -> Bool
-is_VkCreateDevice = (EQ ==) . cmpCStrings _VkCreateDevice
-
-type VkCreateDevice = "vkCreateDevice"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
---
--- or less efficient:
---
--- > myCreateDevice <- vkGetProc @VkCreateDevice
---
--- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
---           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateDevice" vkCreateDeviceUnsafe
-               ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-
-##else
-vkCreateDeviceUnsafe ::
-                     VkPhysicalDevice -- ^ physicalDevice
-                                      ->
-                       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                              ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkDevice -- ^ pDevice
-                                                                   -> IO VkResult
-vkCreateDeviceUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateDevice)
-
-{-# NOINLINE vkCreateDeviceUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
---
--- or less efficient:
---
--- > myCreateDevice <- vkGetProc @VkCreateDevice
---
--- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
---           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateDevice" vkCreateDeviceSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-
-##else
-vkCreateDeviceSafe ::
-                   VkPhysicalDevice -- ^ physicalDevice
-                                    ->
-                     Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                            ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkDevice -- ^ pDevice
-                                                                 -> IO VkResult
-vkCreateDeviceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDevice)
-
-{-# NOINLINE vkCreateDeviceSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkCreateDevice
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkDeviceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDevice* pDevice
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
---
--- or less efficient:
---
--- > myCreateDevice <- vkGetProc @VkCreateDevice
---
--- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
---           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
---
-vkCreateDevice ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDevice -- ^ pDevice
-                                                             -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateDevice = vkCreateDeviceUnsafe
-##else
-vkCreateDevice = vkCreateDeviceSafe
-
-##endif
-{-# INLINE vkCreateDevice #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkCreateDevice
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkDeviceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDevice* pDevice
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
-type HS_vkCreateDevice =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
-                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDevice -- ^ pDevice
-                                                   -> IO VkResult
-
-type PFN_vkCreateDevice = FunPtr HS_vkCreateDevice
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateDeviceUnsafe ::
-               PFN_vkCreateDevice -> HS_vkCreateDevice
-
-foreign import ccall safe "dynamic" unwrapVkCreateDeviceSafe ::
-               PFN_vkCreateDevice -> HS_vkCreateDevice
-
-instance VulkanProc "vkCreateDevice" where
-        type VkProcType "vkCreateDevice" = HS_vkCreateDevice
-        vkProcSymbol = _VkCreateDevice
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateDeviceUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDeviceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyDevice :: CString
-
-pattern VkDestroyDevice <- (is_VkDestroyDevice -> True)
-  where VkDestroyDevice = _VkDestroyDevice
-
-{-# INLINE _VkDestroyDevice #-}
-
-_VkDestroyDevice :: CString
-_VkDestroyDevice = Ptr "vkDestroyDevice\NUL"##
-
-{-# INLINE is_VkDestroyDevice #-}
-
-is_VkDestroyDevice :: CString -> Bool
-is_VkDestroyDevice = (EQ ==) . cmpCStrings _VkDestroyDevice
-
-type VkDestroyDevice = "vkDestroyDevice"
-
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
---
--- or less efficient:
---
--- > myDestroyDevice <- vkGetProc @VkDestroyDevice
---
--- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
---           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyDevice" vkDestroyDeviceUnsafe
-               :: VkDevice -- ^ device
-                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> IO ()
-
-##else
-vkDestroyDeviceUnsafe ::
-                      VkDevice -- ^ device
-                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> IO ()
-vkDestroyDeviceUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyDevice)
-
-{-# NOINLINE vkDestroyDeviceUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
---
--- or less efficient:
---
--- > myDestroyDevice <- vkGetProc @VkDestroyDevice
---
--- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
---           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyDevice" vkDestroyDeviceSafe ::
-               VkDevice -- ^ device
-                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> IO ()
-
-##else
-vkDestroyDeviceSafe ::
-                    VkDevice -- ^ device
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-vkDestroyDeviceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDevice)
-
-{-# NOINLINE vkDestroyDeviceSafe #-}
-##endif
-
--- |
--- > void vkDestroyDevice
--- >     ( VkDevice device
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
---
--- or less efficient:
---
--- > myDestroyDevice <- vkGetProc @VkDestroyDevice
---
--- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
---           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
---
-vkDestroyDevice :: VkDevice -- ^ device
-                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyDevice = vkDestroyDeviceUnsafe
-##else
-vkDestroyDevice = vkDestroyDeviceSafe
-
-##endif
-{-# INLINE vkDestroyDevice #-}
-
--- | > void vkDestroyDevice
---   >     ( VkDevice device
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
-type HS_vkDestroyDevice =
-     VkDevice -- ^ device
-              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                           -> IO ()
-
-type PFN_vkDestroyDevice = FunPtr HS_vkDestroyDevice
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyDeviceUnsafe
-               :: PFN_vkDestroyDevice -> HS_vkDestroyDevice
-
-foreign import ccall safe "dynamic" unwrapVkDestroyDeviceSafe ::
-               PFN_vkDestroyDevice -> HS_vkDestroyDevice
-
-instance VulkanProc "vkDestroyDevice" where
-        type VkProcType "vkDestroyDevice" = HS_vkDestroyDevice
-        vkProcSymbol = _VkDestroyDevice
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyDeviceUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDeviceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumerateInstanceExtensionProperties :: CString
-
-pattern VkEnumerateInstanceExtensionProperties <-
-        (is_VkEnumerateInstanceExtensionProperties -> True)
-  where VkEnumerateInstanceExtensionProperties
-          = _VkEnumerateInstanceExtensionProperties
-
-{-# INLINE _VkEnumerateInstanceExtensionProperties #-}
-
-_VkEnumerateInstanceExtensionProperties :: CString
-_VkEnumerateInstanceExtensionProperties
-  = Ptr "vkEnumerateInstanceExtensionProperties\NUL"##
-
-{-# INLINE is_VkEnumerateInstanceExtensionProperties #-}
-
-is_VkEnumerateInstanceExtensionProperties :: CString -> Bool
-is_VkEnumerateInstanceExtensionProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateInstanceExtensionProperties
-
-type VkEnumerateInstanceExtensionProperties =
-     "vkEnumerateInstanceExtensionProperties"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
---
--- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
---           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe
-               "vkEnumerateInstanceExtensionProperties"
-               vkEnumerateInstanceExtensionPropertiesUnsafe ::
-               CString -- ^ pLayerName
-                       -> Ptr Word32 -- ^ pPropertyCount
-                                     -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                  -> IO VkResult
-
-##else
-vkEnumerateInstanceExtensionPropertiesUnsafe ::
-                                             CString -- ^ pLayerName
-                                                     ->
-                                               Ptr Word32 -- ^ pPropertyCount
-                                                          ->
-                                                 Ptr VkExtensionProperties -- ^ pProperties
-                                                                           -> IO VkResult
-vkEnumerateInstanceExtensionPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkEnumerateInstanceExtensionProperties)
-
-{-# NOINLINE vkEnumerateInstanceExtensionPropertiesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
---
--- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
---           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumerateInstanceExtensionProperties"
-               vkEnumerateInstanceExtensionPropertiesSafe ::
-               CString -- ^ pLayerName
-                       -> Ptr Word32 -- ^ pPropertyCount
-                                     -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                  -> IO VkResult
-
-##else
-vkEnumerateInstanceExtensionPropertiesSafe ::
-                                           CString -- ^ pLayerName
-                                                   ->
-                                             Ptr Word32 -- ^ pPropertyCount
-                                                        -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                     -> IO VkResult
-vkEnumerateInstanceExtensionPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateInstanceExtensionProperties)
-
-{-# NOINLINE vkEnumerateInstanceExtensionPropertiesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateInstanceExtensionProperties
--- >     ( const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
---
--- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
---           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
---
-vkEnumerateInstanceExtensionProperties ::
-                                       CString -- ^ pLayerName
-                                               ->
-                                         Ptr Word32 -- ^ pPropertyCount
-                                                    -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                 -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkEnumerateInstanceExtensionProperties
-  = vkEnumerateInstanceExtensionPropertiesUnsafe
-##else
-vkEnumerateInstanceExtensionProperties
-  = vkEnumerateInstanceExtensionPropertiesSafe
-
-##endif
-{-# INLINE vkEnumerateInstanceExtensionProperties #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
---   > VkResult vkEnumerateInstanceExtensionProperties
---   >     ( const char* pLayerName
---   >     , uint32_t* pPropertyCount
---   >     , VkExtensionProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
-type HS_vkEnumerateInstanceExtensionProperties =
-     CString -- ^ pLayerName
-             -> Ptr Word32 -- ^ pPropertyCount
-                           -> Ptr VkExtensionProperties -- ^ pProperties
-                                                        -> IO VkResult
-
-type PFN_vkEnumerateInstanceExtensionProperties =
-     FunPtr HS_vkEnumerateInstanceExtensionProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateInstanceExtensionPropertiesUnsafe ::
-               PFN_vkEnumerateInstanceExtensionProperties ->
-                 HS_vkEnumerateInstanceExtensionProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateInstanceExtensionPropertiesSafe ::
-               PFN_vkEnumerateInstanceExtensionProperties ->
-                 HS_vkEnumerateInstanceExtensionProperties
-
-instance VulkanProc "vkEnumerateInstanceExtensionProperties" where
-        type VkProcType "vkEnumerateInstanceExtensionProperties" =
-             HS_vkEnumerateInstanceExtensionProperties
-        vkProcSymbol = _VkEnumerateInstanceExtensionProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkEnumerateInstanceExtensionPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkEnumerateInstanceExtensionPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumerateDeviceExtensionProperties :: CString
-
-pattern VkEnumerateDeviceExtensionProperties <-
-        (is_VkEnumerateDeviceExtensionProperties -> True)
-  where VkEnumerateDeviceExtensionProperties
-          = _VkEnumerateDeviceExtensionProperties
-
-{-# INLINE _VkEnumerateDeviceExtensionProperties #-}
-
-_VkEnumerateDeviceExtensionProperties :: CString
-_VkEnumerateDeviceExtensionProperties
-  = Ptr "vkEnumerateDeviceExtensionProperties\NUL"##
-
-{-# INLINE is_VkEnumerateDeviceExtensionProperties #-}
-
-is_VkEnumerateDeviceExtensionProperties :: CString -> Bool
-is_VkEnumerateDeviceExtensionProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateDeviceExtensionProperties
-
-type VkEnumerateDeviceExtensionProperties =
-     "vkEnumerateDeviceExtensionProperties"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
---
--- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
---           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEnumerateDeviceExtensionProperties"
-               vkEnumerateDeviceExtensionPropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 CString -- ^ pLayerName
-                         -> Ptr Word32 -- ^ pPropertyCount
-                                       -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                    -> IO VkResult
-
-##else
-vkEnumerateDeviceExtensionPropertiesUnsafe ::
-                                           VkPhysicalDevice -- ^ physicalDevice
-                                                            ->
-                                             CString -- ^ pLayerName
-                                                     ->
-                                               Ptr Word32 -- ^ pPropertyCount
-                                                          ->
-                                                 Ptr VkExtensionProperties -- ^ pProperties
-                                                                           -> IO VkResult
-vkEnumerateDeviceExtensionPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkEnumerateDeviceExtensionProperties)
-
-{-# NOINLINE vkEnumerateDeviceExtensionPropertiesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
---
--- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
---           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumerateDeviceExtensionProperties"
-               vkEnumerateDeviceExtensionPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 CString -- ^ pLayerName
-                         -> Ptr Word32 -- ^ pPropertyCount
-                                       -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                    -> IO VkResult
-
-##else
-vkEnumerateDeviceExtensionPropertiesSafe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           CString -- ^ pLayerName
-                                                   ->
-                                             Ptr Word32 -- ^ pPropertyCount
-                                                        -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                     -> IO VkResult
-vkEnumerateDeviceExtensionPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateDeviceExtensionProperties)
-
-{-# NOINLINE vkEnumerateDeviceExtensionPropertiesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
--- > VkResult vkEnumerateDeviceExtensionProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const char* pLayerName
--- >     , uint32_t* pPropertyCount
--- >     , VkExtensionProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
---
--- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
---           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
---
-vkEnumerateDeviceExtensionProperties ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       CString -- ^ pLayerName
-                                               ->
-                                         Ptr Word32 -- ^ pPropertyCount
-                                                    -> Ptr VkExtensionProperties -- ^ pProperties
-                                                                                 -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkEnumerateDeviceExtensionProperties
-  = vkEnumerateDeviceExtensionPropertiesUnsafe
-##else
-vkEnumerateDeviceExtensionProperties
-  = vkEnumerateDeviceExtensionPropertiesSafe
-
-##endif
-{-# INLINE vkEnumerateDeviceExtensionProperties #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
---
---   > VkResult vkEnumerateDeviceExtensionProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const char* pLayerName
---   >     , uint32_t* pPropertyCount
---   >     , VkExtensionProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
-type HS_vkEnumerateDeviceExtensionProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       CString -- ^ pLayerName
-               -> Ptr Word32 -- ^ pPropertyCount
-                             -> Ptr VkExtensionProperties -- ^ pProperties
-                                                          -> IO VkResult
-
-type PFN_vkEnumerateDeviceExtensionProperties =
-     FunPtr HS_vkEnumerateDeviceExtensionProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateDeviceExtensionPropertiesUnsafe ::
-               PFN_vkEnumerateDeviceExtensionProperties ->
-                 HS_vkEnumerateDeviceExtensionProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateDeviceExtensionPropertiesSafe ::
-               PFN_vkEnumerateDeviceExtensionProperties ->
-                 HS_vkEnumerateDeviceExtensionProperties
-
-instance VulkanProc "vkEnumerateDeviceExtensionProperties" where
-        type VkProcType "vkEnumerateDeviceExtensionProperties" =
-             HS_vkEnumerateDeviceExtensionProperties
-        vkProcSymbol = _VkEnumerateDeviceExtensionProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkEnumerateDeviceExtensionPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkEnumerateDeviceExtensionPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumerateInstanceLayerProperties :: CString
-
-pattern VkEnumerateInstanceLayerProperties <-
-        (is_VkEnumerateInstanceLayerProperties -> True)
-  where VkEnumerateInstanceLayerProperties
-          = _VkEnumerateInstanceLayerProperties
-
-{-# INLINE _VkEnumerateInstanceLayerProperties #-}
-
-_VkEnumerateInstanceLayerProperties :: CString
-_VkEnumerateInstanceLayerProperties
-  = Ptr "vkEnumerateInstanceLayerProperties\NUL"##
-
-{-# INLINE is_VkEnumerateInstanceLayerProperties #-}
-
-is_VkEnumerateInstanceLayerProperties :: CString -> Bool
-is_VkEnumerateInstanceLayerProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateInstanceLayerProperties
-
-type VkEnumerateInstanceLayerProperties =
-     "vkEnumerateInstanceLayerProperties"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
---
--- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
---           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEnumerateInstanceLayerProperties"
-               vkEnumerateInstanceLayerPropertiesUnsafe ::
-               Ptr Word32 -- ^ pPropertyCount
-                          -> Ptr VkLayerProperties -- ^ pProperties
-                                                   -> IO VkResult
-
-##else
-vkEnumerateInstanceLayerPropertiesUnsafe ::
-                                         Ptr Word32 -- ^ pPropertyCount
-                                                    -> Ptr VkLayerProperties -- ^ pProperties
-                                                                             -> IO VkResult
-vkEnumerateInstanceLayerPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkEnumerateInstanceLayerProperties)
-
-{-# NOINLINE vkEnumerateInstanceLayerPropertiesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
---
--- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
---           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumerateInstanceLayerProperties"
-               vkEnumerateInstanceLayerPropertiesSafe ::
-               Ptr Word32 -- ^ pPropertyCount
-                          -> Ptr VkLayerProperties -- ^ pProperties
-                                                   -> IO VkResult
-
-##else
-vkEnumerateInstanceLayerPropertiesSafe ::
-                                       Ptr Word32 -- ^ pPropertyCount
-                                                  -> Ptr VkLayerProperties -- ^ pProperties
-                                                                           -> IO VkResult
-vkEnumerateInstanceLayerPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateInstanceLayerProperties)
-
-{-# NOINLINE vkEnumerateInstanceLayerPropertiesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateInstanceLayerProperties
--- >     ( uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
---
--- or less efficient:
---
--- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
---
--- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
---           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
---
-vkEnumerateInstanceLayerProperties ::
-                                   Ptr Word32 -- ^ pPropertyCount
-                                              -> Ptr VkLayerProperties -- ^ pProperties
-                                                                       -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkEnumerateInstanceLayerProperties
-  = vkEnumerateInstanceLayerPropertiesUnsafe
-##else
-vkEnumerateInstanceLayerProperties
-  = vkEnumerateInstanceLayerPropertiesSafe
-
-##endif
-{-# INLINE vkEnumerateInstanceLayerProperties #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEnumerateInstanceLayerProperties
---   >     ( uint32_t* pPropertyCount
---   >     , VkLayerProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
-type HS_vkEnumerateInstanceLayerProperties =
-     Ptr Word32 -- ^ pPropertyCount
-                -> Ptr VkLayerProperties -- ^ pProperties
-                                         -> IO VkResult
-
-type PFN_vkEnumerateInstanceLayerProperties =
-     FunPtr HS_vkEnumerateInstanceLayerProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateInstanceLayerPropertiesUnsafe ::
-               PFN_vkEnumerateInstanceLayerProperties ->
-                 HS_vkEnumerateInstanceLayerProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateInstanceLayerPropertiesSafe ::
-               PFN_vkEnumerateInstanceLayerProperties ->
-                 HS_vkEnumerateInstanceLayerProperties
-
-instance VulkanProc "vkEnumerateInstanceLayerProperties" where
-        type VkProcType "vkEnumerateInstanceLayerProperties" =
-             HS_vkEnumerateInstanceLayerProperties
-        vkProcSymbol = _VkEnumerateInstanceLayerProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkEnumerateInstanceLayerPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceLayerPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEnumerateDeviceLayerProperties :: CString
-
-pattern VkEnumerateDeviceLayerProperties <-
-        (is_VkEnumerateDeviceLayerProperties -> True)
-  where VkEnumerateDeviceLayerProperties
-          = _VkEnumerateDeviceLayerProperties
-
-{-# INLINE _VkEnumerateDeviceLayerProperties #-}
-
-_VkEnumerateDeviceLayerProperties :: CString
-_VkEnumerateDeviceLayerProperties
-  = Ptr "vkEnumerateDeviceLayerProperties\NUL"##
-
-{-# INLINE is_VkEnumerateDeviceLayerProperties #-}
-
-is_VkEnumerateDeviceLayerProperties :: CString -> Bool
-is_VkEnumerateDeviceLayerProperties
-  = (EQ ==) . cmpCStrings _VkEnumerateDeviceLayerProperties
-
-type VkEnumerateDeviceLayerProperties =
-     "vkEnumerateDeviceLayerProperties"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
---
--- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
---           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEnumerateDeviceLayerProperties"
-               vkEnumerateDeviceLayerPropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkLayerProperties -- ^ pProperties
-                                                     -> IO VkResult
-
-##else
-vkEnumerateDeviceLayerPropertiesUnsafe ::
-                                       VkPhysicalDevice -- ^ physicalDevice
-                                                        ->
-                                         Ptr Word32 -- ^ pPropertyCount
-                                                    -> Ptr VkLayerProperties -- ^ pProperties
-                                                                             -> IO VkResult
-vkEnumerateDeviceLayerPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkEnumerateDeviceLayerProperties)
-
-{-# NOINLINE vkEnumerateDeviceLayerPropertiesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
---
--- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
---           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEnumerateDeviceLayerProperties"
-               vkEnumerateDeviceLayerPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkLayerProperties -- ^ pProperties
-                                                     -> IO VkResult
-
-##else
-vkEnumerateDeviceLayerPropertiesSafe ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       Ptr Word32 -- ^ pPropertyCount
-                                                  -> Ptr VkLayerProperties -- ^ pProperties
-                                                                           -> IO VkResult
-vkEnumerateDeviceLayerPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateDeviceLayerProperties)
-
-{-# NOINLINE vkEnumerateDeviceLayerPropertiesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEnumerateDeviceLayerProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pPropertyCount
--- >     , VkLayerProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
---
--- or less efficient:
---
--- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
---
--- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
---           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
---
-vkEnumerateDeviceLayerProperties ::
-                                 VkPhysicalDevice -- ^ physicalDevice
-                                                  ->
-                                   Ptr Word32 -- ^ pPropertyCount
-                                              -> Ptr VkLayerProperties -- ^ pProperties
-                                                                       -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkEnumerateDeviceLayerProperties
-  = vkEnumerateDeviceLayerPropertiesUnsafe
-##else
-vkEnumerateDeviceLayerProperties
-  = vkEnumerateDeviceLayerPropertiesSafe
-
-##endif
-{-# INLINE vkEnumerateDeviceLayerProperties #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEnumerateDeviceLayerProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pPropertyCount
---   >     , VkLayerProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
-type HS_vkEnumerateDeviceLayerProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pPropertyCount
-                  -> Ptr VkLayerProperties -- ^ pProperties
-                                           -> IO VkResult
-
-type PFN_vkEnumerateDeviceLayerProperties =
-     FunPtr HS_vkEnumerateDeviceLayerProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateDeviceLayerPropertiesUnsafe ::
-               PFN_vkEnumerateDeviceLayerProperties ->
-                 HS_vkEnumerateDeviceLayerProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateDeviceLayerPropertiesSafe ::
-               PFN_vkEnumerateDeviceLayerProperties ->
-                 HS_vkEnumerateDeviceLayerProperties
-
-instance VulkanProc "vkEnumerateDeviceLayerProperties" where
-        type VkProcType "vkEnumerateDeviceLayerProperties" =
-             HS_vkEnumerateDeviceLayerProperties
-        vkProcSymbol = _VkEnumerateDeviceLayerProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkEnumerateDeviceLayerPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumerateDeviceLayerPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetDeviceQueue :: CString
-
-pattern VkGetDeviceQueue <- (is_VkGetDeviceQueue -> True)
-  where VkGetDeviceQueue = _VkGetDeviceQueue
-
-{-# INLINE _VkGetDeviceQueue #-}
-
-_VkGetDeviceQueue :: CString
-_VkGetDeviceQueue = Ptr "vkGetDeviceQueue\NUL"##
-
-{-# INLINE is_VkGetDeviceQueue #-}
-
-is_VkGetDeviceQueue :: CString -> Bool
-is_VkGetDeviceQueue = (EQ ==) . cmpCStrings _VkGetDeviceQueue
-
-type VkGetDeviceQueue = "vkGetDeviceQueue"
-
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
---
--- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
---           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetDeviceQueue"
-               vkGetDeviceQueueUnsafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ queueFamilyIndex
-                                  -> Word32 -- ^ queueIndex
-                                            -> Ptr VkQueue -- ^ pQueue
-                                                           -> IO ()
-
-##else
-vkGetDeviceQueueUnsafe ::
-                       VkDevice -- ^ device
-                                -> Word32 -- ^ queueFamilyIndex
-                                          -> Word32 -- ^ queueIndex
-                                                    -> Ptr VkQueue -- ^ pQueue
-                                                                   -> IO ()
-vkGetDeviceQueueUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceQueue)
-
-{-# NOINLINE vkGetDeviceQueueUnsafe #-}
-##endif
-
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
---
--- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
---           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetDeviceQueue" vkGetDeviceQueueSafe
-               :: VkDevice -- ^ device
-                           -> Word32 -- ^ queueFamilyIndex
-                                     -> Word32 -- ^ queueIndex
-                                               -> Ptr VkQueue -- ^ pQueue
-                                                              -> IO ()
-
-##else
-vkGetDeviceQueueSafe ::
-                     VkDevice -- ^ device
-                              -> Word32 -- ^ queueFamilyIndex
-                                        -> Word32 -- ^ queueIndex
-                                                  -> Ptr VkQueue -- ^ pQueue
-                                                                 -> IO ()
-vkGetDeviceQueueSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue)
-
-{-# NOINLINE vkGetDeviceQueueSafe #-}
-##endif
-
--- |
--- > void vkGetDeviceQueue
--- >     ( VkDevice device
--- >     , uint32_t queueFamilyIndex
--- >     , uint32_t queueIndex
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
---
--- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
---           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
---
-vkGetDeviceQueue ::
-                 VkDevice -- ^ device
-                          -> Word32 -- ^ queueFamilyIndex
-                                    -> Word32 -- ^ queueIndex
-                                              -> Ptr VkQueue -- ^ pQueue
-                                                             -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetDeviceQueue = vkGetDeviceQueueUnsafe
-##else
-vkGetDeviceQueue = vkGetDeviceQueueSafe
-
-##endif
-{-# INLINE vkGetDeviceQueue #-}
-
--- | > void vkGetDeviceQueue
---   >     ( VkDevice device
---   >     , uint32_t queueFamilyIndex
---   >     , uint32_t queueIndex
---   >     , VkQueue* pQueue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
-type HS_vkGetDeviceQueue =
-     VkDevice -- ^ device
-              -> Word32 -- ^ queueFamilyIndex
-                        -> Word32 -- ^ queueIndex
-                                  -> Ptr VkQueue -- ^ pQueue
-                                                 -> IO ()
-
-type PFN_vkGetDeviceQueue = FunPtr HS_vkGetDeviceQueue
-
-foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueueUnsafe
-               :: PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
-
-foreign import ccall safe "dynamic" unwrapVkGetDeviceQueueSafe ::
-               PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
-
-instance VulkanProc "vkGetDeviceQueue" where
-        type VkProcType "vkGetDeviceQueue" = HS_vkGetDeviceQueue
-        vkProcSymbol = _VkGetDeviceQueue
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetDeviceQueueUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceQueueSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkQueueSubmit :: CString
-
-pattern VkQueueSubmit <- (is_VkQueueSubmit -> True)
-  where VkQueueSubmit = _VkQueueSubmit
-
-{-# INLINE _VkQueueSubmit #-}
-
-_VkQueueSubmit :: CString
-_VkQueueSubmit = Ptr "vkQueueSubmit\NUL"##
-
-{-# INLINE is_VkQueueSubmit #-}
-
-is_VkQueueSubmit :: CString -> Bool
-is_VkQueueSubmit = (EQ ==) . cmpCStrings _VkQueueSubmit
-
-type VkQueueSubmit = "vkQueueSubmit"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
---
--- or less efficient:
---
--- > myQueueSubmit <- vkGetProc @VkQueueSubmit
---
--- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
---           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkQueueSubmit" vkQueueSubmitUnsafe ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ submitCount
-                                 -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                     -> VkFence -- ^ fence
-                                                                -> IO VkResult
-
-##else
-vkQueueSubmitUnsafe ::
-                    VkQueue -- ^ queue
-                            -> Word32 -- ^ submitCount
-                                      -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                          -> VkFence -- ^ fence
-                                                                     -> IO VkResult
-vkQueueSubmitUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueSubmit)
-
-{-# NOINLINE vkQueueSubmitUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
---
--- or less efficient:
---
--- > myQueueSubmit <- vkGetProc @VkQueueSubmit
---
--- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
---           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkQueueSubmit" vkQueueSubmitSafe ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ submitCount
-                                 -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                     -> VkFence -- ^ fence
-                                                                -> IO VkResult
-
-##else
-vkQueueSubmitSafe ::
-                  VkQueue -- ^ queue
-                          -> Word32 -- ^ submitCount
-                                    -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                        -> VkFence -- ^ fence
-                                                                   -> IO VkResult
-vkQueueSubmitSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueSubmit)
-
-{-# NOINLINE vkQueueSubmitSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueSubmit
--- >     ( VkQueue queue
--- >     , uint32_t submitCount
--- >     , const VkSubmitInfo* pSubmits
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
---
--- or less efficient:
---
--- > myQueueSubmit <- vkGetProc @VkQueueSubmit
---
--- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
---           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
---
-vkQueueSubmit ::
-              VkQueue -- ^ queue
-                      -> Word32 -- ^ submitCount
-                                -> Ptr VkSubmitInfo -- ^ pSubmits
-                                                    -> VkFence -- ^ fence
-                                                               -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkQueueSubmit = vkQueueSubmitUnsafe
-##else
-vkQueueSubmit = vkQueueSubmitSafe
-
-##endif
-{-# INLINE vkQueueSubmit #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkQueueSubmit
---   >     ( VkQueue queue
---   >     , uint32_t submitCount
---   >     , const VkSubmitInfo* pSubmits
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
-type HS_vkQueueSubmit =
-     VkQueue -- ^ queue
-             -> Word32 -- ^ submitCount
-                       -> Ptr VkSubmitInfo -- ^ pSubmits
-                                           -> VkFence -- ^ fence
-                                                      -> IO VkResult
-
-type PFN_vkQueueSubmit = FunPtr HS_vkQueueSubmit
-
-foreign import ccall unsafe "dynamic" unwrapVkQueueSubmitUnsafe ::
-               PFN_vkQueueSubmit -> HS_vkQueueSubmit
-
-foreign import ccall safe "dynamic" unwrapVkQueueSubmitSafe ::
-               PFN_vkQueueSubmit -> HS_vkQueueSubmit
-
-instance VulkanProc "vkQueueSubmit" where
-        type VkProcType "vkQueueSubmit" = HS_vkQueueSubmit
-        vkProcSymbol = _VkQueueSubmit
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkQueueSubmitUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueSubmitSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkQueueWaitIdle :: CString
-
-pattern VkQueueWaitIdle <- (is_VkQueueWaitIdle -> True)
-  where VkQueueWaitIdle = _VkQueueWaitIdle
-
-{-# INLINE _VkQueueWaitIdle #-}
-
-_VkQueueWaitIdle :: CString
-_VkQueueWaitIdle = Ptr "vkQueueWaitIdle\NUL"##
-
-{-# INLINE is_VkQueueWaitIdle #-}
-
-is_VkQueueWaitIdle :: CString -> Bool
-is_VkQueueWaitIdle = (EQ ==) . cmpCStrings _VkQueueWaitIdle
-
-type VkQueueWaitIdle = "vkQueueWaitIdle"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
---
--- or less efficient:
---
--- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
---
--- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
---           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkQueueWaitIdle" vkQueueWaitIdleUnsafe
-               :: VkQueue -- ^ queue
-                          -> IO VkResult
-
-##else
-vkQueueWaitIdleUnsafe :: VkQueue -- ^ queue
-                                 -> IO VkResult
-vkQueueWaitIdleUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueWaitIdle)
-
-{-# NOINLINE vkQueueWaitIdleUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
---
--- or less efficient:
---
--- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
---
--- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
---           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkQueueWaitIdle" vkQueueWaitIdleSafe ::
-               VkQueue -- ^ queue
-                       -> IO VkResult
-
-##else
-vkQueueWaitIdleSafe :: VkQueue -- ^ queue
-                               -> IO VkResult
-vkQueueWaitIdleSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueWaitIdle)
-
-{-# NOINLINE vkQueueWaitIdleSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkQueueWaitIdle
--- >     ( VkQueue queue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
---
--- or less efficient:
---
--- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
---
--- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
---           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
---
-vkQueueWaitIdle :: VkQueue -- ^ queue
-                           -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkQueueWaitIdle = vkQueueWaitIdleUnsafe
-##else
-vkQueueWaitIdle = vkQueueWaitIdleSafe
-
-##endif
-{-# INLINE vkQueueWaitIdle #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkQueueWaitIdle
---   >     ( VkQueue queue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
-type HS_vkQueueWaitIdle = VkQueue -- ^ queue
-                                  -> IO VkResult
-
-type PFN_vkQueueWaitIdle = FunPtr HS_vkQueueWaitIdle
-
-foreign import ccall unsafe "dynamic" unwrapVkQueueWaitIdleUnsafe
-               :: PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
-
-foreign import ccall safe "dynamic" unwrapVkQueueWaitIdleSafe ::
-               PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
-
-instance VulkanProc "vkQueueWaitIdle" where
-        type VkProcType "vkQueueWaitIdle" = HS_vkQueueWaitIdle
-        vkProcSymbol = _VkQueueWaitIdle
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkQueueWaitIdleUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueWaitIdleSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDeviceWaitIdle :: CString
-
-pattern VkDeviceWaitIdle <- (is_VkDeviceWaitIdle -> True)
-  where VkDeviceWaitIdle = _VkDeviceWaitIdle
-
-{-# INLINE _VkDeviceWaitIdle #-}
-
-_VkDeviceWaitIdle :: CString
-_VkDeviceWaitIdle = Ptr "vkDeviceWaitIdle\NUL"##
-
-{-# INLINE is_VkDeviceWaitIdle #-}
-
-is_VkDeviceWaitIdle :: CString -> Bool
-is_VkDeviceWaitIdle = (EQ ==) . cmpCStrings _VkDeviceWaitIdle
-
-type VkDeviceWaitIdle = "vkDeviceWaitIdle"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
---
--- or less efficient:
---
--- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
---
--- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
---           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDeviceWaitIdle"
-               vkDeviceWaitIdleUnsafe :: VkDevice -- ^ device
-                                                  -> IO VkResult
-
-##else
-vkDeviceWaitIdleUnsafe :: VkDevice -- ^ device
-                                   -> IO VkResult
-vkDeviceWaitIdleUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDeviceWaitIdle)
-
-{-# NOINLINE vkDeviceWaitIdleUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
---
--- or less efficient:
---
--- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
---
--- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
---           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDeviceWaitIdle" vkDeviceWaitIdleSafe
-               :: VkDevice -- ^ device
-                           -> IO VkResult
-
-##else
-vkDeviceWaitIdleSafe :: VkDevice -- ^ device
-                                 -> IO VkResult
-vkDeviceWaitIdleSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDeviceWaitIdle)
-
-{-# NOINLINE vkDeviceWaitIdleSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkDeviceWaitIdle
--- >     ( VkDevice device
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
---
--- or less efficient:
---
--- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
---
--- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
---           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
---
-vkDeviceWaitIdle :: VkDevice -- ^ device
-                             -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkDeviceWaitIdle = vkDeviceWaitIdleUnsafe
-##else
-vkDeviceWaitIdle = vkDeviceWaitIdleSafe
-
-##endif
-{-# INLINE vkDeviceWaitIdle #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkDeviceWaitIdle
---   >     ( VkDevice device
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
-type HS_vkDeviceWaitIdle = VkDevice -- ^ device
-                                    -> IO VkResult
-
-type PFN_vkDeviceWaitIdle = FunPtr HS_vkDeviceWaitIdle
-
-foreign import ccall unsafe "dynamic" unwrapVkDeviceWaitIdleUnsafe
-               :: PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
-
-foreign import ccall safe "dynamic" unwrapVkDeviceWaitIdleSafe ::
-               PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
-
-instance VulkanProc "vkDeviceWaitIdle" where
-        type VkProcType "vkDeviceWaitIdle" = HS_vkDeviceWaitIdle
-        vkProcSymbol = _VkDeviceWaitIdle
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDeviceWaitIdleUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDeviceWaitIdleSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkAllocateMemory :: CString
-
-pattern VkAllocateMemory <- (is_VkAllocateMemory -> True)
-  where VkAllocateMemory = _VkAllocateMemory
-
-{-# INLINE _VkAllocateMemory #-}
-
-_VkAllocateMemory :: CString
-_VkAllocateMemory = Ptr "vkAllocateMemory\NUL"##
-
-{-# INLINE is_VkAllocateMemory #-}
-
-is_VkAllocateMemory :: CString -> Bool
-is_VkAllocateMemory = (EQ ==) . cmpCStrings _VkAllocateMemory
-
-type VkAllocateMemory = "vkAllocateMemory"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
---
--- or less efficient:
---
--- > myAllocateMemory <- vkGetProc @VkAllocateMemory
---
--- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
---           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkAllocateMemory"
-               vkAllocateMemoryUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                   -> IO VkResult
-
-##else
-vkAllocateMemoryUnsafe ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                                  ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                           -> IO VkResult
-vkAllocateMemoryUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkAllocateMemory)
-
-{-# NOINLINE vkAllocateMemoryUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
---
--- or less efficient:
---
--- > myAllocateMemory <- vkGetProc @VkAllocateMemory
---
--- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
---           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkAllocateMemory" vkAllocateMemorySafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                   -> IO VkResult
-
-##else
-vkAllocateMemorySafe ::
-                     VkDevice -- ^ device
-                              ->
-                       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                                ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                         -> IO VkResult
-vkAllocateMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateMemory)
-
-{-# NOINLINE vkAllocateMemorySafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
--- > VkResult vkAllocateMemory
--- >     ( VkDevice device
--- >     , const VkMemoryAllocateInfo* pAllocateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDeviceMemory* pMemory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
---
--- or less efficient:
---
--- > myAllocateMemory <- vkGetProc @VkAllocateMemory
---
--- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
---           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
---
-vkAllocateMemory ::
-                 VkDevice -- ^ device
-                          ->
-                   Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                            ->
-                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                               -> Ptr VkDeviceMemory -- ^ pMemory
-                                                                     -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkAllocateMemory = vkAllocateMemoryUnsafe
-##else
-vkAllocateMemory = vkAllocateMemorySafe
-
-##endif
-{-# INLINE vkAllocateMemory #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
---
---   > VkResult vkAllocateMemory
---   >     ( VkDevice device
---   >     , const VkMemoryAllocateInfo* pAllocateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDeviceMemory* pMemory
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
-type HS_vkAllocateMemory =
-     VkDevice -- ^ device
-              ->
-       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
-                                ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDeviceMemory -- ^ pMemory
-                                                         -> IO VkResult
-
-type PFN_vkAllocateMemory = FunPtr HS_vkAllocateMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkAllocateMemoryUnsafe
-               :: PFN_vkAllocateMemory -> HS_vkAllocateMemory
-
-foreign import ccall safe "dynamic" unwrapVkAllocateMemorySafe ::
-               PFN_vkAllocateMemory -> HS_vkAllocateMemory
-
-instance VulkanProc "vkAllocateMemory" where
-        type VkProcType "vkAllocateMemory" = HS_vkAllocateMemory
-        vkProcSymbol = _VkAllocateMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkAllocateMemoryUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkAllocateMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkFreeMemory :: CString
-
-pattern VkFreeMemory <- (is_VkFreeMemory -> True)
-  where VkFreeMemory = _VkFreeMemory
-
-{-# INLINE _VkFreeMemory #-}
-
-_VkFreeMemory :: CString
-_VkFreeMemory = Ptr "vkFreeMemory\NUL"##
-
-{-# INLINE is_VkFreeMemory #-}
-
-is_VkFreeMemory :: CString -> Bool
-is_VkFreeMemory = (EQ ==) . cmpCStrings _VkFreeMemory
-
-type VkFreeMemory = "vkFreeMemory"
-
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
---
--- or less efficient:
---
--- > myFreeMemory <- vkGetProc @VkFreeMemory
---
--- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
---           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkFreeMemory" vkFreeMemoryUnsafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkFreeMemoryUnsafe ::
-                   VkDevice -- ^ device
-                            -> VkDeviceMemory -- ^ memory
-                                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                           -> IO ()
-vkFreeMemoryUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeMemory)
-
-{-# NOINLINE vkFreeMemoryUnsafe #-}
-##endif
-
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
---
--- or less efficient:
---
--- > myFreeMemory <- vkGetProc @VkFreeMemory
---
--- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
---           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkFreeMemory" vkFreeMemorySafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkFreeMemorySafe ::
-                 VkDevice -- ^ device
-                          -> VkDeviceMemory -- ^ memory
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-vkFreeMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeMemory)
-
-{-# NOINLINE vkFreeMemorySafe #-}
-##endif
-
--- |
--- > void vkFreeMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
---
--- or less efficient:
---
--- > myFreeMemory <- vkGetProc @VkFreeMemory
---
--- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
---           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
---
-vkFreeMemory ::
-             VkDevice -- ^ device
-                      -> VkDeviceMemory -- ^ memory
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkFreeMemory = vkFreeMemoryUnsafe
-##else
-vkFreeMemory = vkFreeMemorySafe
-
-##endif
-{-# INLINE vkFreeMemory #-}
-
--- | > void vkFreeMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
-type HS_vkFreeMemory =
-     VkDevice -- ^ device
-              -> VkDeviceMemory -- ^ memory
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkFreeMemory = FunPtr HS_vkFreeMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkFreeMemoryUnsafe ::
-               PFN_vkFreeMemory -> HS_vkFreeMemory
-
-foreign import ccall safe "dynamic" unwrapVkFreeMemorySafe ::
-               PFN_vkFreeMemory -> HS_vkFreeMemory
-
-instance VulkanProc "vkFreeMemory" where
-        type VkProcType "vkFreeMemory" = HS_vkFreeMemory
-        vkProcSymbol = _VkFreeMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkFreeMemoryUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkFreeMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkMapMemory :: CString
-
-pattern VkMapMemory <- (is_VkMapMemory -> True)
-  where VkMapMemory = _VkMapMemory
-
-{-# INLINE _VkMapMemory #-}
-
-_VkMapMemory :: CString
-_VkMapMemory = Ptr "vkMapMemory\NUL"##
-
-{-# INLINE is_VkMapMemory #-}
-
-is_VkMapMemory :: CString -> Bool
-is_VkMapMemory = (EQ ==) . cmpCStrings _VkMapMemory
-
-type VkMapMemory = "vkMapMemory"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
---
--- or less efficient:
---
--- > myMapMemory <- vkGetProc @VkMapMemory
---
--- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkMapMemory@ is an alias
---           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkMapMemory" vkMapMemoryUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDeviceMemory -- ^ memory
-                                ->
-                   VkDeviceSize -- ^ offset
-                                ->
-                     VkDeviceSize -- ^ size
-                                  -> VkMemoryMapFlags -- ^ flags
-                                                      -> Ptr (Ptr Void) -- ^ ppData
-                                                                        -> IO VkResult
-
-##else
-vkMapMemoryUnsafe ::
-                  VkDevice -- ^ device
-                           ->
-                    VkDeviceMemory -- ^ memory
-                                   ->
-                      VkDeviceSize -- ^ offset
-                                   ->
-                        VkDeviceSize -- ^ size
-                                     -> VkMemoryMapFlags -- ^ flags
-                                                         -> Ptr (Ptr Void) -- ^ ppData
-                                                                           -> IO VkResult
-vkMapMemoryUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkMapMemory)
-
-{-# NOINLINE vkMapMemoryUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
---
--- or less efficient:
---
--- > myMapMemory <- vkGetProc @VkMapMemory
---
--- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkMapMemory@ is an alias
---           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkMapMemory" vkMapMemorySafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDeviceMemory -- ^ memory
-                                ->
-                   VkDeviceSize -- ^ offset
-                                ->
-                     VkDeviceSize -- ^ size
-                                  -> VkMemoryMapFlags -- ^ flags
-                                                      -> Ptr (Ptr Void) -- ^ ppData
-                                                                        -> IO VkResult
-
-##else
-vkMapMemorySafe ::
-                VkDevice -- ^ device
-                         ->
-                  VkDeviceMemory -- ^ memory
-                                 ->
-                    VkDeviceSize -- ^ offset
-                                 ->
-                      VkDeviceSize -- ^ size
-                                   -> VkMemoryMapFlags -- ^ flags
-                                                       -> Ptr (Ptr Void) -- ^ ppData
-                                                                         -> IO VkResult
-vkMapMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkMapMemory)
-
-{-# NOINLINE vkMapMemorySafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
--- > VkResult vkMapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize offset
--- >     , VkDeviceSize size
--- >     , VkMemoryMapFlags flags
--- >     , void** ppData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
---
--- or less efficient:
---
--- > myMapMemory <- vkGetProc @VkMapMemory
---
--- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkMapMemory@ is an alias
---           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
---
-vkMapMemory ::
-            VkDevice -- ^ device
-                     ->
-              VkDeviceMemory -- ^ memory
-                             ->
-                VkDeviceSize -- ^ offset
-                             ->
-                  VkDeviceSize -- ^ size
-                               -> VkMemoryMapFlags -- ^ flags
-                                                   -> Ptr (Ptr Void) -- ^ ppData
-                                                                     -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkMapMemory = vkMapMemoryUnsafe
-##else
-vkMapMemory = vkMapMemorySafe
-
-##endif
-{-# INLINE vkMapMemory #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
---
---   > VkResult vkMapMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize offset
---   >     , VkDeviceSize size
---   >     , VkMemoryMapFlags flags
---   >     , void** ppData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
-type HS_vkMapMemory =
-     VkDevice -- ^ device
-              ->
-       VkDeviceMemory -- ^ memory
-                      ->
-         VkDeviceSize -- ^ offset
-                      ->
-           VkDeviceSize -- ^ size
-                        -> VkMemoryMapFlags -- ^ flags
-                                            -> Ptr (Ptr Void) -- ^ ppData
-                                                              -> IO VkResult
-
-type PFN_vkMapMemory = FunPtr HS_vkMapMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkMapMemoryUnsafe ::
-               PFN_vkMapMemory -> HS_vkMapMemory
-
-foreign import ccall safe "dynamic" unwrapVkMapMemorySafe ::
-               PFN_vkMapMemory -> HS_vkMapMemory
-
-instance VulkanProc "vkMapMemory" where
-        type VkProcType "vkMapMemory" = HS_vkMapMemory
-        vkProcSymbol = _VkMapMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkMapMemoryUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkMapMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkUnmapMemory :: CString
-
-pattern VkUnmapMemory <- (is_VkUnmapMemory -> True)
-  where VkUnmapMemory = _VkUnmapMemory
-
-{-# INLINE _VkUnmapMemory #-}
-
-_VkUnmapMemory :: CString
-_VkUnmapMemory = Ptr "vkUnmapMemory\NUL"##
-
-{-# INLINE is_VkUnmapMemory #-}
-
-is_VkUnmapMemory :: CString -> Bool
-is_VkUnmapMemory = (EQ ==) . cmpCStrings _VkUnmapMemory
-
-type VkUnmapMemory = "vkUnmapMemory"
-
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
---
--- or less efficient:
---
--- > myUnmapMemory <- vkGetProc @VkUnmapMemory
---
--- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
---           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkUnmapMemory" vkUnmapMemoryUnsafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> IO ()
-
-##else
-vkUnmapMemoryUnsafe :: VkDevice -- ^ device
-                                -> VkDeviceMemory -- ^ memory
-                                                  -> IO ()
-vkUnmapMemoryUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkUnmapMemory)
-
-{-# NOINLINE vkUnmapMemoryUnsafe #-}
-##endif
-
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
---
--- or less efficient:
---
--- > myUnmapMemory <- vkGetProc @VkUnmapMemory
---
--- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
---           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkUnmapMemory" vkUnmapMemorySafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> IO ()
-
-##else
-vkUnmapMemorySafe :: VkDevice -- ^ device
-                              -> VkDeviceMemory -- ^ memory
-                                                -> IO ()
-vkUnmapMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkUnmapMemory)
-
-{-# NOINLINE vkUnmapMemorySafe #-}
-##endif
-
--- |
--- > void vkUnmapMemory
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
---
--- or less efficient:
---
--- > myUnmapMemory <- vkGetProc @VkUnmapMemory
---
--- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
---           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
---
-vkUnmapMemory :: VkDevice -- ^ device
-                          -> VkDeviceMemory -- ^ memory
-                                            -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkUnmapMemory = vkUnmapMemoryUnsafe
-##else
-vkUnmapMemory = vkUnmapMemorySafe
-
-##endif
-{-# INLINE vkUnmapMemory #-}
-
--- | > void vkUnmapMemory
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
-type HS_vkUnmapMemory = VkDevice -- ^ device
-                                 -> VkDeviceMemory -- ^ memory
-                                                   -> IO ()
-
-type PFN_vkUnmapMemory = FunPtr HS_vkUnmapMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkUnmapMemoryUnsafe ::
-               PFN_vkUnmapMemory -> HS_vkUnmapMemory
-
-foreign import ccall safe "dynamic" unwrapVkUnmapMemorySafe ::
-               PFN_vkUnmapMemory -> HS_vkUnmapMemory
-
-instance VulkanProc "vkUnmapMemory" where
-        type VkProcType "vkUnmapMemory" = HS_vkUnmapMemory
-        vkProcSymbol = _VkUnmapMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkUnmapMemoryUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkUnmapMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkFlushMappedMemoryRanges :: CString
-
-pattern VkFlushMappedMemoryRanges <-
-        (is_VkFlushMappedMemoryRanges -> True)
-  where VkFlushMappedMemoryRanges = _VkFlushMappedMemoryRanges
-
-{-# INLINE _VkFlushMappedMemoryRanges #-}
-
-_VkFlushMappedMemoryRanges :: CString
-_VkFlushMappedMemoryRanges = Ptr "vkFlushMappedMemoryRanges\NUL"##
-
-{-# INLINE is_VkFlushMappedMemoryRanges #-}
-
-is_VkFlushMappedMemoryRanges :: CString -> Bool
-is_VkFlushMappedMemoryRanges
-  = (EQ ==) . cmpCStrings _VkFlushMappedMemoryRanges
-
-type VkFlushMappedMemoryRanges = "vkFlushMappedMemoryRanges"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
---
--- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
---           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkFlushMappedMemoryRanges"
-               vkFlushMappedMemoryRangesUnsafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
-vkFlushMappedMemoryRangesUnsafe ::
-                                VkDevice -- ^ device
-                                         -> Word32 -- ^ memoryRangeCount
-                                                   -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                              -> IO VkResult
-vkFlushMappedMemoryRangesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkFlushMappedMemoryRanges)
-
-{-# NOINLINE vkFlushMappedMemoryRangesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
---
--- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
---           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkFlushMappedMemoryRanges"
-               vkFlushMappedMemoryRangesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
-vkFlushMappedMemoryRangesSafe ::
-                              VkDevice -- ^ device
-                                       -> Word32 -- ^ memoryRangeCount
-                                                 -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                            -> IO VkResult
-vkFlushMappedMemoryRangesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkFlushMappedMemoryRanges)
-
-{-# NOINLINE vkFlushMappedMemoryRangesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFlushMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
---
--- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
---           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
---
-vkFlushMappedMemoryRanges ::
-                          VkDevice -- ^ device
-                                   -> Word32 -- ^ memoryRangeCount
-                                             -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                        -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkFlushMappedMemoryRanges = vkFlushMappedMemoryRangesUnsafe
-##else
-vkFlushMappedMemoryRanges = vkFlushMappedMemoryRangesSafe
-
-##endif
-{-# INLINE vkFlushMappedMemoryRanges #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkFlushMappedMemoryRanges
---   >     ( VkDevice device
---   >     , uint32_t memoryRangeCount
---   >     , const VkMappedMemoryRange* pMemoryRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
-type HS_vkFlushMappedMemoryRanges =
-     VkDevice -- ^ device
-              -> Word32 -- ^ memoryRangeCount
-                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                   -> IO VkResult
-
-type PFN_vkFlushMappedMemoryRanges =
-     FunPtr HS_vkFlushMappedMemoryRanges
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkFlushMappedMemoryRangesUnsafe ::
-               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
-
-foreign import ccall safe "dynamic"
-               unwrapVkFlushMappedMemoryRangesSafe ::
-               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
-
-instance VulkanProc "vkFlushMappedMemoryRanges" where
-        type VkProcType "vkFlushMappedMemoryRanges" =
-             HS_vkFlushMappedMemoryRanges
-        vkProcSymbol = _VkFlushMappedMemoryRanges
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkFlushMappedMemoryRangesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkFlushMappedMemoryRangesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkInvalidateMappedMemoryRanges :: CString
-
-pattern VkInvalidateMappedMemoryRanges <-
-        (is_VkInvalidateMappedMemoryRanges -> True)
-  where VkInvalidateMappedMemoryRanges
-          = _VkInvalidateMappedMemoryRanges
-
-{-# INLINE _VkInvalidateMappedMemoryRanges #-}
-
-_VkInvalidateMappedMemoryRanges :: CString
-_VkInvalidateMappedMemoryRanges
-  = Ptr "vkInvalidateMappedMemoryRanges\NUL"##
-
-{-# INLINE is_VkInvalidateMappedMemoryRanges #-}
-
-is_VkInvalidateMappedMemoryRanges :: CString -> Bool
-is_VkInvalidateMappedMemoryRanges
-  = (EQ ==) . cmpCStrings _VkInvalidateMappedMemoryRanges
-
-type VkInvalidateMappedMemoryRanges =
-     "vkInvalidateMappedMemoryRanges"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
---
--- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
---           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkInvalidateMappedMemoryRanges"
-               vkInvalidateMappedMemoryRangesUnsafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
-vkInvalidateMappedMemoryRangesUnsafe ::
-                                     VkDevice -- ^ device
-                                              -> Word32 -- ^ memoryRangeCount
-                                                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                                   -> IO VkResult
-vkInvalidateMappedMemoryRangesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkInvalidateMappedMemoryRanges)
-
-{-# NOINLINE vkInvalidateMappedMemoryRangesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
---
--- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
---           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkInvalidateMappedMemoryRanges"
-               vkInvalidateMappedMemoryRangesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ memoryRangeCount
-                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                             -> IO VkResult
-
-##else
-vkInvalidateMappedMemoryRangesSafe ::
-                                   VkDevice -- ^ device
-                                            -> Word32 -- ^ memoryRangeCount
-                                                      -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                                 -> IO VkResult
-vkInvalidateMappedMemoryRangesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkInvalidateMappedMemoryRanges)
-
-{-# NOINLINE vkInvalidateMappedMemoryRangesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkInvalidateMappedMemoryRanges
--- >     ( VkDevice device
--- >     , uint32_t memoryRangeCount
--- >     , const VkMappedMemoryRange* pMemoryRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
---
--- or less efficient:
---
--- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
---
--- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
---           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
---
-vkInvalidateMappedMemoryRanges ::
-                               VkDevice -- ^ device
-                                        -> Word32 -- ^ memoryRangeCount
-                                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                                             -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkInvalidateMappedMemoryRanges
-  = vkInvalidateMappedMemoryRangesUnsafe
-##else
-vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRangesSafe
-
-##endif
-{-# INLINE vkInvalidateMappedMemoryRanges #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkInvalidateMappedMemoryRanges
---   >     ( VkDevice device
---   >     , uint32_t memoryRangeCount
---   >     , const VkMappedMemoryRange* pMemoryRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
-type HS_vkInvalidateMappedMemoryRanges =
-     VkDevice -- ^ device
-              -> Word32 -- ^ memoryRangeCount
-                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
-                                                   -> IO VkResult
-
-type PFN_vkInvalidateMappedMemoryRanges =
-     FunPtr HS_vkInvalidateMappedMemoryRanges
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkInvalidateMappedMemoryRangesUnsafe ::
-               PFN_vkInvalidateMappedMemoryRanges ->
-                 HS_vkInvalidateMappedMemoryRanges
-
-foreign import ccall safe "dynamic"
-               unwrapVkInvalidateMappedMemoryRangesSafe ::
-               PFN_vkInvalidateMappedMemoryRanges ->
-                 HS_vkInvalidateMappedMemoryRanges
-
-instance VulkanProc "vkInvalidateMappedMemoryRanges" where
-        type VkProcType "vkInvalidateMappedMemoryRanges" =
-             HS_vkInvalidateMappedMemoryRanges
-        vkProcSymbol = _VkInvalidateMappedMemoryRanges
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkInvalidateMappedMemoryRangesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkInvalidateMappedMemoryRangesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetDeviceMemoryCommitment :: CString
-
-pattern VkGetDeviceMemoryCommitment <-
-        (is_VkGetDeviceMemoryCommitment -> True)
-  where VkGetDeviceMemoryCommitment = _VkGetDeviceMemoryCommitment
-
-{-# INLINE _VkGetDeviceMemoryCommitment #-}
-
-_VkGetDeviceMemoryCommitment :: CString
-_VkGetDeviceMemoryCommitment
-  = Ptr "vkGetDeviceMemoryCommitment\NUL"##
-
-{-# INLINE is_VkGetDeviceMemoryCommitment #-}
-
-is_VkGetDeviceMemoryCommitment :: CString -> Bool
-is_VkGetDeviceMemoryCommitment
-  = (EQ ==) . cmpCStrings _VkGetDeviceMemoryCommitment
-
-type VkGetDeviceMemoryCommitment = "vkGetDeviceMemoryCommitment"
-
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
---
--- or less efficient:
---
--- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
---
--- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
---           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetDeviceMemoryCommitment"
-               vkGetDeviceMemoryCommitmentUnsafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                              -> IO ()
-
-##else
-vkGetDeviceMemoryCommitmentUnsafe ::
-                                  VkDevice -- ^ device
-                                           -> VkDeviceMemory -- ^ memory
-                                                             -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                                                 -> IO ()
-vkGetDeviceMemoryCommitmentUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetDeviceMemoryCommitment)
-
-{-# NOINLINE vkGetDeviceMemoryCommitmentUnsafe #-}
-##endif
-
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
---
--- or less efficient:
---
--- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
---
--- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
---           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetDeviceMemoryCommitment"
-               vkGetDeviceMemoryCommitmentSafe ::
-               VkDevice -- ^ device
-                        -> VkDeviceMemory -- ^ memory
-                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                              -> IO ()
-
-##else
-vkGetDeviceMemoryCommitmentSafe ::
-                                VkDevice -- ^ device
-                                         -> VkDeviceMemory -- ^ memory
-                                                           -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                                               -> IO ()
-vkGetDeviceMemoryCommitmentSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetDeviceMemoryCommitment)
-
-{-# NOINLINE vkGetDeviceMemoryCommitmentSafe #-}
-##endif
-
--- |
--- > void vkGetDeviceMemoryCommitment
--- >     ( VkDevice device
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize* pCommittedMemoryInBytes
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
---
--- or less efficient:
---
--- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
---
--- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
---           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
---
-vkGetDeviceMemoryCommitment ::
-                            VkDevice -- ^ device
-                                     -> VkDeviceMemory -- ^ memory
-                                                       -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                                           -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetDeviceMemoryCommitment = vkGetDeviceMemoryCommitmentUnsafe
-##else
-vkGetDeviceMemoryCommitment = vkGetDeviceMemoryCommitmentSafe
-
-##endif
-{-# INLINE vkGetDeviceMemoryCommitment #-}
-
--- | > void vkGetDeviceMemoryCommitment
---   >     ( VkDevice device
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize* pCommittedMemoryInBytes
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
-type HS_vkGetDeviceMemoryCommitment =
-     VkDevice -- ^ device
-              -> VkDeviceMemory -- ^ memory
-                                -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
-                                                    -> IO ()
-
-type PFN_vkGetDeviceMemoryCommitment =
-     FunPtr HS_vkGetDeviceMemoryCommitment
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetDeviceMemoryCommitmentUnsafe ::
-               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetDeviceMemoryCommitmentSafe ::
-               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
-
-instance VulkanProc "vkGetDeviceMemoryCommitment" where
-        type VkProcType "vkGetDeviceMemoryCommitment" =
-             HS_vkGetDeviceMemoryCommitment
-        vkProcSymbol = _VkGetDeviceMemoryCommitment
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetDeviceMemoryCommitmentUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceMemoryCommitmentSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkBindBufferMemory :: CString
-
-pattern VkBindBufferMemory <- (is_VkBindBufferMemory -> True)
-  where VkBindBufferMemory = _VkBindBufferMemory
-
-{-# INLINE _VkBindBufferMemory #-}
-
-_VkBindBufferMemory :: CString
-_VkBindBufferMemory = Ptr "vkBindBufferMemory\NUL"##
-
-{-# INLINE is_VkBindBufferMemory #-}
-
-is_VkBindBufferMemory :: CString -> Bool
-is_VkBindBufferMemory = (EQ ==) . cmpCStrings _VkBindBufferMemory
-
-type VkBindBufferMemory = "vkBindBufferMemory"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
---
--- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
---           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkBindBufferMemory"
-               vkBindBufferMemoryUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceMemory -- ^ memory
-                                            -> VkDeviceSize -- ^ memoryOffset
-                                                            -> IO VkResult
-
-##else
-vkBindBufferMemoryUnsafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           VkBuffer -- ^ buffer
-                                    -> VkDeviceMemory -- ^ memory
-                                                      -> VkDeviceSize -- ^ memoryOffset
-                                                                      -> IO VkResult
-vkBindBufferMemoryUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindBufferMemory)
-
-{-# NOINLINE vkBindBufferMemoryUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
---
--- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
---           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkBindBufferMemory"
-               vkBindBufferMemorySafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceMemory -- ^ memory
-                                            -> VkDeviceSize -- ^ memoryOffset
-                                                            -> IO VkResult
-
-##else
-vkBindBufferMemorySafe ::
-                       VkDevice -- ^ device
-                                ->
-                         VkBuffer -- ^ buffer
-                                  -> VkDeviceMemory -- ^ memory
-                                                    -> VkDeviceSize -- ^ memoryOffset
-                                                                    -> IO VkResult
-vkBindBufferMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory)
-
-{-# NOINLINE vkBindBufferMemorySafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
---
--- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
---           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
---
-vkBindBufferMemory ::
-                   VkDevice -- ^ device
-                            ->
-                     VkBuffer -- ^ buffer
-                              -> VkDeviceMemory -- ^ memory
-                                                -> VkDeviceSize -- ^ memoryOffset
-                                                                -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkBindBufferMemory = vkBindBufferMemoryUnsafe
-##else
-vkBindBufferMemory = vkBindBufferMemorySafe
-
-##endif
-{-# INLINE vkBindBufferMemory #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindBufferMemory
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize memoryOffset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
-type HS_vkBindBufferMemory =
-     VkDevice -- ^ device
-              ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceMemory -- ^ memory
-                                  -> VkDeviceSize -- ^ memoryOffset
-                                                  -> IO VkResult
-
-type PFN_vkBindBufferMemory = FunPtr HS_vkBindBufferMemory
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkBindBufferMemoryUnsafe ::
-               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
-
-foreign import ccall safe "dynamic" unwrapVkBindBufferMemorySafe ::
-               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
-
-instance VulkanProc "vkBindBufferMemory" where
-        type VkProcType "vkBindBufferMemory" = HS_vkBindBufferMemory
-        vkProcSymbol = _VkBindBufferMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemoryUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkBindBufferMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkBindImageMemory :: CString
-
-pattern VkBindImageMemory <- (is_VkBindImageMemory -> True)
-  where VkBindImageMemory = _VkBindImageMemory
-
-{-# INLINE _VkBindImageMemory #-}
-
-_VkBindImageMemory :: CString
-_VkBindImageMemory = Ptr "vkBindImageMemory\NUL"##
-
-{-# INLINE is_VkBindImageMemory #-}
-
-is_VkBindImageMemory :: CString -> Bool
-is_VkBindImageMemory = (EQ ==) . cmpCStrings _VkBindImageMemory
-
-type VkBindImageMemory = "vkBindImageMemory"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory <- vkGetProc @VkBindImageMemory
---
--- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
---           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkBindImageMemory"
-               vkBindImageMemoryUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         -> VkDeviceMemory -- ^ memory
-                                           -> VkDeviceSize -- ^ memoryOffset
-                                                           -> IO VkResult
-
-##else
-vkBindImageMemoryUnsafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          VkImage -- ^ image
-                                  -> VkDeviceMemory -- ^ memory
-                                                    -> VkDeviceSize -- ^ memoryOffset
-                                                                    -> IO VkResult
-vkBindImageMemoryUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindImageMemory)
-
-{-# NOINLINE vkBindImageMemoryUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory <- vkGetProc @VkBindImageMemory
---
--- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
---           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkBindImageMemory" vkBindImageMemorySafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         -> VkDeviceMemory -- ^ memory
-                                           -> VkDeviceSize -- ^ memoryOffset
-                                                           -> IO VkResult
-
-##else
-vkBindImageMemorySafe ::
-                      VkDevice -- ^ device
-                               ->
-                        VkImage -- ^ image
-                                -> VkDeviceMemory -- ^ memory
-                                                  -> VkDeviceSize -- ^ memoryOffset
-                                                                  -> IO VkResult
-vkBindImageMemorySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory)
-
-{-# NOINLINE vkBindImageMemorySafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkDeviceMemory memory
--- >     , VkDeviceSize memoryOffset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory <- vkGetProc @VkBindImageMemory
---
--- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
---           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
---
-vkBindImageMemory ::
-                  VkDevice -- ^ device
-                           ->
-                    VkImage -- ^ image
-                            -> VkDeviceMemory -- ^ memory
-                                              -> VkDeviceSize -- ^ memoryOffset
-                                                              -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkBindImageMemory = vkBindImageMemoryUnsafe
-##else
-vkBindImageMemory = vkBindImageMemorySafe
-
-##endif
-{-# INLINE vkBindImageMemory #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindImageMemory
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , VkDeviceMemory memory
---   >     , VkDeviceSize memoryOffset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
-type HS_vkBindImageMemory =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               -> VkDeviceMemory -- ^ memory
-                                 -> VkDeviceSize -- ^ memoryOffset
-                                                 -> IO VkResult
-
-type PFN_vkBindImageMemory = FunPtr HS_vkBindImageMemory
-
-foreign import ccall unsafe "dynamic" unwrapVkBindImageMemoryUnsafe
-               :: PFN_vkBindImageMemory -> HS_vkBindImageMemory
-
-foreign import ccall safe "dynamic" unwrapVkBindImageMemorySafe ::
-               PFN_vkBindImageMemory -> HS_vkBindImageMemory
-
-instance VulkanProc "vkBindImageMemory" where
-        type VkProcType "vkBindImageMemory" = HS_vkBindImageMemory
-        vkProcSymbol = _VkBindImageMemory
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkBindImageMemoryUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkBindImageMemorySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetBufferMemoryRequirements :: CString
-
-pattern VkGetBufferMemoryRequirements <-
-        (is_VkGetBufferMemoryRequirements -> True)
-  where VkGetBufferMemoryRequirements
-          = _VkGetBufferMemoryRequirements
-
-{-# INLINE _VkGetBufferMemoryRequirements #-}
-
-_VkGetBufferMemoryRequirements :: CString
-_VkGetBufferMemoryRequirements
-  = Ptr "vkGetBufferMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetBufferMemoryRequirements #-}
-
-is_VkGetBufferMemoryRequirements :: CString -> Bool
-is_VkGetBufferMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements
-
-type VkGetBufferMemoryRequirements =
-     "vkGetBufferMemoryRequirements"
-
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
---
--- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
---           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetBufferMemoryRequirements"
-               vkGetBufferMemoryRequirementsUnsafe ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                -> IO ()
-
-##else
-vkGetBufferMemoryRequirementsUnsafe ::
-                                    VkDevice -- ^ device
-                                             -> VkBuffer -- ^ buffer
-                                                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                                     -> IO ()
-vkGetBufferMemoryRequirementsUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetBufferMemoryRequirements)
-
-{-# NOINLINE vkGetBufferMemoryRequirementsUnsafe #-}
-##endif
-
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
---
--- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
---           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetBufferMemoryRequirements"
-               vkGetBufferMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                -> IO ()
-
-##else
-vkGetBufferMemoryRequirementsSafe ::
-                                  VkDevice -- ^ device
-                                           -> VkBuffer -- ^ buffer
-                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                                   -> IO ()
-vkGetBufferMemoryRequirementsSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetBufferMemoryRequirements)
-
-{-# NOINLINE vkGetBufferMemoryRequirementsSafe #-}
-##endif
-
--- |
--- > void vkGetBufferMemoryRequirements
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
---
--- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
---           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
---
-vkGetBufferMemoryRequirements ::
-                              VkDevice -- ^ device
-                                       -> VkBuffer -- ^ buffer
-                                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                               -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirementsUnsafe
-##else
-vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirementsSafe
-
-##endif
-{-# INLINE vkGetBufferMemoryRequirements #-}
-
--- | > void vkGetBufferMemoryRequirements
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , VkMemoryRequirements* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
-type HS_vkGetBufferMemoryRequirements =
-     VkDevice -- ^ device
-              -> VkBuffer -- ^ buffer
-                          -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                      -> IO ()
-
-type PFN_vkGetBufferMemoryRequirements =
-     FunPtr HS_vkGetBufferMemoryRequirements
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetBufferMemoryRequirementsUnsafe ::
-               PFN_vkGetBufferMemoryRequirements ->
-                 HS_vkGetBufferMemoryRequirements
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetBufferMemoryRequirementsSafe ::
-               PFN_vkGetBufferMemoryRequirements ->
-                 HS_vkGetBufferMemoryRequirements
-
-instance VulkanProc "vkGetBufferMemoryRequirements" where
-        type VkProcType "vkGetBufferMemoryRequirements" =
-             HS_vkGetBufferMemoryRequirements
-        vkProcSymbol = _VkGetBufferMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetBufferMemoryRequirementsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirementsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetImageMemoryRequirements :: CString
-
-pattern VkGetImageMemoryRequirements <-
-        (is_VkGetImageMemoryRequirements -> True)
-  where VkGetImageMemoryRequirements = _VkGetImageMemoryRequirements
-
-{-# INLINE _VkGetImageMemoryRequirements #-}
-
-_VkGetImageMemoryRequirements :: CString
-_VkGetImageMemoryRequirements
-  = Ptr "vkGetImageMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetImageMemoryRequirements #-}
-
-is_VkGetImageMemoryRequirements :: CString -> Bool
-is_VkGetImageMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements
-
-type VkGetImageMemoryRequirements = "vkGetImageMemoryRequirements"
-
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
---
--- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
---           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetImageMemoryRequirements"
-               vkGetImageMemoryRequirementsUnsafe ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                               -> IO ()
-
-##else
-vkGetImageMemoryRequirementsUnsafe ::
-                                   VkDevice -- ^ device
-                                            -> VkImage -- ^ image
-                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                                   -> IO ()
-vkGetImageMemoryRequirementsUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetImageMemoryRequirements)
-
-{-# NOINLINE vkGetImageMemoryRequirementsUnsafe #-}
-##endif
-
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
---
--- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
---           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetImageMemoryRequirements"
-               vkGetImageMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                               -> IO ()
-
-##else
-vkGetImageMemoryRequirementsSafe ::
-                                 VkDevice -- ^ device
-                                          -> VkImage -- ^ image
-                                                     -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                                 -> IO ()
-vkGetImageMemoryRequirementsSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageMemoryRequirements)
-
-{-# NOINLINE vkGetImageMemoryRequirementsSafe #-}
-##endif
-
--- |
--- > void vkGetImageMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , VkMemoryRequirements* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
---
--- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
---           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
---
-vkGetImageMemoryRequirements ::
-                             VkDevice -- ^ device
-                                      -> VkImage -- ^ image
-                                                 -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                                             -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetImageMemoryRequirements = vkGetImageMemoryRequirementsUnsafe
-##else
-vkGetImageMemoryRequirements = vkGetImageMemoryRequirementsSafe
-
-##endif
-{-# INLINE vkGetImageMemoryRequirements #-}
-
--- | > void vkGetImageMemoryRequirements
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , VkMemoryRequirements* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
-type HS_vkGetImageMemoryRequirements =
-     VkDevice -- ^ device
-              -> VkImage -- ^ image
-                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
-                                                     -> IO ()
-
-type PFN_vkGetImageMemoryRequirements =
-     FunPtr HS_vkGetImageMemoryRequirements
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageMemoryRequirementsUnsafe ::
-               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageMemoryRequirementsSafe ::
-               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
-
-instance VulkanProc "vkGetImageMemoryRequirements" where
-        type VkProcType "vkGetImageMemoryRequirements" =
-             HS_vkGetImageMemoryRequirements
-        vkProcSymbol = _VkGetImageMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetImageMemoryRequirementsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirementsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetImageSparseMemoryRequirements :: CString
-
-pattern VkGetImageSparseMemoryRequirements <-
-        (is_VkGetImageSparseMemoryRequirements -> True)
-  where VkGetImageSparseMemoryRequirements
-          = _VkGetImageSparseMemoryRequirements
-
-{-# INLINE _VkGetImageSparseMemoryRequirements #-}
-
-_VkGetImageSparseMemoryRequirements :: CString
-_VkGetImageSparseMemoryRequirements
-  = Ptr "vkGetImageSparseMemoryRequirements\NUL"##
-
-{-# INLINE is_VkGetImageSparseMemoryRequirements #-}
-
-is_VkGetImageSparseMemoryRequirements :: CString -> Bool
-is_VkGetImageSparseMemoryRequirements
-  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements
-
-type VkGetImageSparseMemoryRequirements =
-     "vkGetImageSparseMemoryRequirements"
-
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
---
--- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
---           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetImageSparseMemoryRequirements"
-               vkGetImageSparseMemoryRequirementsUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                     -> IO ()
-
-##else
-vkGetImageSparseMemoryRequirementsUnsafe ::
-                                         VkDevice -- ^ device
-                                                  ->
-                                           VkImage -- ^ image
-                                                   ->
-                                             Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                        ->
-                                               Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                                   -> IO ()
-vkGetImageSparseMemoryRequirementsUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetImageSparseMemoryRequirements)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirementsUnsafe #-}
-##endif
-
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
---
--- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
---           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetImageSparseMemoryRequirements"
-               vkGetImageSparseMemoryRequirementsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                     -> IO ()
-
-##else
-vkGetImageSparseMemoryRequirementsSafe ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         VkImage -- ^ image
-                                                 ->
-                                           Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                      ->
-                                             Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                                 -> IO ()
-vkGetImageSparseMemoryRequirementsSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageSparseMemoryRequirements)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirementsSafe #-}
-##endif
-
--- |
--- > void vkGetImageSparseMemoryRequirements
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
---
--- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
---           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
---
-vkGetImageSparseMemoryRequirements ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     VkImage -- ^ image
-                                             ->
-                                       Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                  -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                                                         -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetImageSparseMemoryRequirements
-  = vkGetImageSparseMemoryRequirementsUnsafe
-##else
-vkGetImageSparseMemoryRequirements
-  = vkGetImageSparseMemoryRequirementsSafe
-
-##endif
-{-# INLINE vkGetImageSparseMemoryRequirements #-}
-
--- | > void vkGetImageSparseMemoryRequirements
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , uint32_t* pSparseMemoryRequirementCount
---   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
-type HS_vkGetImageSparseMemoryRequirements =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               ->
-         Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                    -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
-                                                           -> IO ()
-
-type PFN_vkGetImageSparseMemoryRequirements =
-     FunPtr HS_vkGetImageSparseMemoryRequirements
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirementsUnsafe ::
-               PFN_vkGetImageSparseMemoryRequirements ->
-                 HS_vkGetImageSparseMemoryRequirements
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirementsSafe ::
-               PFN_vkGetImageSparseMemoryRequirements ->
-                 HS_vkGetImageSparseMemoryRequirements
-
-instance VulkanProc "vkGetImageSparseMemoryRequirements" where
-        type VkProcType "vkGetImageSparseMemoryRequirements" =
-             HS_vkGetImageSparseMemoryRequirements
-        vkProcSymbol = _VkGetImageSparseMemoryRequirements
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetImageSparseMemoryRequirementsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirementsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties :: CString
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties <-
-        (is_VkGetPhysicalDeviceSparseImageFormatProperties -> True)
-  where VkGetPhysicalDeviceSparseImageFormatProperties
-          = _VkGetPhysicalDeviceSparseImageFormatProperties
-
-{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties #-}
-
-_VkGetPhysicalDeviceSparseImageFormatProperties :: CString
-_VkGetPhysicalDeviceSparseImageFormatProperties
-  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties\NUL"##
-
-{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties #-}
-
-is_VkGetPhysicalDeviceSparseImageFormatProperties ::
-                                                  CString -> Bool
-is_VkGetPhysicalDeviceSparseImageFormatProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties
-
-type VkGetPhysicalDeviceSparseImageFormatProperties =
-     "vkGetPhysicalDeviceSparseImageFormatProperties"
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceSparseImageFormatProperties"
-               vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkSampleCountFlagBits -- ^ samples
-                                           ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageTiling -- ^ tiling
-                                       ->
-                           Ptr Word32 -- ^ pPropertyCount
-                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                           -> IO ()
-
-##else
-vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
-                                                     VkPhysicalDevice -- ^ physicalDevice
-                                                                      ->
-                                                       VkFormat -- ^ format
-                                                                ->
-                                                         VkImageType -- ^ type
-                                                                     ->
-                                                           VkSampleCountFlagBits -- ^ samples
-                                                                                 ->
-                                                             VkImageUsageFlags -- ^ usage
-                                                                               ->
-                                                               VkImageTiling -- ^ tiling
-                                                                             ->
-                                                                 Ptr Word32 -- ^ pPropertyCount
-                                                                            ->
-                                                                   Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                     -> IO ()
-vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceSparseImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
-             #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe
-               "vkGetPhysicalDeviceSparseImageFormatProperties"
-               vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 VkFormat -- ^ format
-                          ->
-                   VkImageType -- ^ type
-                               ->
-                     VkSampleCountFlagBits -- ^ samples
-                                           ->
-                       VkImageUsageFlags -- ^ usage
-                                         ->
-                         VkImageTiling -- ^ tiling
-                                       ->
-                           Ptr Word32 -- ^ pPropertyCount
-                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                           -> IO ()
-
-##else
-vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
-                                                   VkPhysicalDevice -- ^ physicalDevice
-                                                                    ->
-                                                     VkFormat -- ^ format
-                                                              ->
-                                                       VkImageType -- ^ type
-                                                                   ->
-                                                         VkSampleCountFlagBits -- ^ samples
-                                                                               ->
-                                                           VkImageUsageFlags -- ^ usage
-                                                                             ->
-                                                             VkImageTiling -- ^ tiling
-                                                                           ->
-                                                               Ptr Word32 -- ^ pPropertyCount
-                                                                          ->
-                                                                 Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                   -> IO ()
-vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatPropertiesSafe #-}
-##endif
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkImageType type
--- >     , VkSampleCountFlagBits samples
--- >     , VkImageUsageFlags usage
--- >     , VkImageTiling tiling
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
---
--- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
---           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
---
-vkGetPhysicalDeviceSparseImageFormatProperties ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 VkFormat -- ^ format
-                                                          ->
-                                                   VkImageType -- ^ type
-                                                               ->
-                                                     VkSampleCountFlagBits -- ^ samples
-                                                                           ->
-                                                       VkImageUsageFlags -- ^ usage
-                                                                         ->
-                                                         VkImageTiling -- ^ tiling
-                                                                       ->
-                                                           Ptr Word32 -- ^ pPropertyCount
-                                                                      ->
-                                                             Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                                               ->
-                                                               IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceSparseImageFormatProperties
-  = vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
-##else
-vkGetPhysicalDeviceSparseImageFormatProperties
-  = vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
-
-##endif
-{-# INLINE vkGetPhysicalDeviceSparseImageFormatProperties #-}
-
--- | > void vkGetPhysicalDeviceSparseImageFormatProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkImageType type
---   >     , VkSampleCountFlagBits samples
---   >     , VkImageUsageFlags usage
---   >     , VkImageTiling tiling
---   >     , uint32_t* pPropertyCount
---   >     , VkSparseImageFormatProperties* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceSparseImageFormatProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       VkFormat -- ^ format
-                ->
-         VkImageType -- ^ type
-                     ->
-           VkSampleCountFlagBits -- ^ samples
-                                 ->
-             VkImageUsageFlags -- ^ usage
-                               ->
-               VkImageTiling -- ^ tiling
-                             ->
-                 Ptr Word32 -- ^ pPropertyCount
-                            -> Ptr VkSparseImageFormatProperties -- ^ pProperties
-                                                                 -> IO ()
-
-type PFN_vkGetPhysicalDeviceSparseImageFormatProperties =
-     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
-
-instance VulkanProc
-           "vkGetPhysicalDeviceSparseImageFormatProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties" =
-             HS_vkGetPhysicalDeviceSparseImageFormatProperties
-        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkQueueBindSparse :: CString
-
-pattern VkQueueBindSparse <- (is_VkQueueBindSparse -> True)
-  where VkQueueBindSparse = _VkQueueBindSparse
-
-{-# INLINE _VkQueueBindSparse #-}
-
-_VkQueueBindSparse :: CString
-_VkQueueBindSparse = Ptr "vkQueueBindSparse\NUL"##
-
-{-# INLINE is_VkQueueBindSparse #-}
-
-is_VkQueueBindSparse :: CString -> Bool
-is_VkQueueBindSparse = (EQ ==) . cmpCStrings _VkQueueBindSparse
-
-type VkQueueBindSparse = "vkQueueBindSparse"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
---
--- or less efficient:
---
--- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
---
--- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
---           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkQueueBindSparse"
-               vkQueueBindSparseUnsafe ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ bindInfoCount
-                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                         -> VkFence -- ^ fence
-                                                                    -> IO VkResult
-
-##else
-vkQueueBindSparseUnsafe ::
-                        VkQueue -- ^ queue
-                                -> Word32 -- ^ bindInfoCount
-                                          -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                                  -> VkFence -- ^ fence
-                                                                             -> IO VkResult
-vkQueueBindSparseUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueBindSparse)
-
-{-# NOINLINE vkQueueBindSparseUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
---
--- or less efficient:
---
--- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
---
--- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
---           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkQueueBindSparse" vkQueueBindSparseSafe
-               ::
-               VkQueue -- ^ queue
-                       -> Word32 -- ^ bindInfoCount
-                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                         -> VkFence -- ^ fence
-                                                                    -> IO VkResult
-
-##else
-vkQueueBindSparseSafe ::
-                      VkQueue -- ^ queue
-                              -> Word32 -- ^ bindInfoCount
-                                        -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                                -> VkFence -- ^ fence
-                                                                           -> IO VkResult
-vkQueueBindSparseSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueBindSparse)
-
-{-# NOINLINE vkQueueBindSparseSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- Queues: 'sparse_binding'.
---
--- > VkResult vkQueueBindSparse
--- >     ( VkQueue queue
--- >     , uint32_t bindInfoCount
--- >     , const VkBindSparseInfo* pBindInfo
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
---
--- or less efficient:
---
--- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
---
--- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
---           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
---
-vkQueueBindSparse ::
-                  VkQueue -- ^ queue
-                          -> Word32 -- ^ bindInfoCount
-                                    -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                                            -> VkFence -- ^ fence
-                                                                       -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkQueueBindSparse = vkQueueBindSparseUnsafe
-##else
-vkQueueBindSparse = vkQueueBindSparseSafe
-
-##endif
-{-# INLINE vkQueueBindSparse #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   Queues: 'sparse_binding'.
---
---   > VkResult vkQueueBindSparse
---   >     ( VkQueue queue
---   >     , uint32_t bindInfoCount
---   >     , const VkBindSparseInfo* pBindInfo
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
-type HS_vkQueueBindSparse =
-     VkQueue -- ^ queue
-             -> Word32 -- ^ bindInfoCount
-                       -> Ptr VkBindSparseInfo -- ^ pBindInfo
-                                               -> VkFence -- ^ fence
-                                                          -> IO VkResult
-
-type PFN_vkQueueBindSparse = FunPtr HS_vkQueueBindSparse
-
-foreign import ccall unsafe "dynamic" unwrapVkQueueBindSparseUnsafe
-               :: PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
-
-foreign import ccall safe "dynamic" unwrapVkQueueBindSparseSafe ::
-               PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
-
-instance VulkanProc "vkQueueBindSparse" where
-        type VkProcType "vkQueueBindSparse" = HS_vkQueueBindSparse
-        vkProcSymbol = _VkQueueBindSparse
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkQueueBindSparseUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueBindSparseSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateFence :: CString
-
-pattern VkCreateFence <- (is_VkCreateFence -> True)
-  where VkCreateFence = _VkCreateFence
-
-{-# INLINE _VkCreateFence #-}
-
-_VkCreateFence :: CString
-_VkCreateFence = Ptr "vkCreateFence\NUL"##
-
-{-# INLINE is_VkCreateFence #-}
-
-is_VkCreateFence :: CString -> Bool
-is_VkCreateFence = (EQ ==) . cmpCStrings _VkCreateFence
-
-type VkCreateFence = "vkCreateFence"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
---
--- or less efficient:
---
--- > myCreateFence <- vkGetProc @VkCreateFence
---
--- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateFence@ is an alias
---           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateFence" vkCreateFenceUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFence -- ^ pFence
-                                                            -> IO VkResult
-
-##else
-vkCreateFenceUnsafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                            ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkFence -- ^ pFence
-                                                                 -> IO VkResult
-vkCreateFenceUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateFence)
-
-{-# NOINLINE vkCreateFenceUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
---
--- or less efficient:
---
--- > myCreateFence <- vkGetProc @VkCreateFence
---
--- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateFence@ is an alias
---           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateFence" vkCreateFenceSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFence -- ^ pFence
-                                                            -> IO VkResult
-
-##else
-vkCreateFenceSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkFence -- ^ pFence
-                                                               -> IO VkResult
-vkCreateFenceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFence)
-
-{-# NOINLINE vkCreateFenceSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFence
--- >     ( VkDevice device
--- >     , const VkFenceCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFence* pFence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
---
--- or less efficient:
---
--- > myCreateFence <- vkGetProc @VkCreateFence
---
--- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateFence@ is an alias
---           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
---
-vkCreateFence ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkFence -- ^ pFence
-                                                           -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateFence = vkCreateFenceUnsafe
-##else
-vkCreateFence = vkCreateFenceSafe
-
-##endif
-{-# INLINE vkCreateFence #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateFence
---   >     ( VkDevice device
---   >     , const VkFenceCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkFence* pFence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
-type HS_vkCreateFence =
-     VkDevice -- ^ device
-              ->
-       Ptr VkFenceCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkFence -- ^ pFence
-                                                  -> IO VkResult
-
-type PFN_vkCreateFence = FunPtr HS_vkCreateFence
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateFenceUnsafe ::
-               PFN_vkCreateFence -> HS_vkCreateFence
-
-foreign import ccall safe "dynamic" unwrapVkCreateFenceSafe ::
-               PFN_vkCreateFence -> HS_vkCreateFence
-
-instance VulkanProc "vkCreateFence" where
-        type VkProcType "vkCreateFence" = HS_vkCreateFence
-        vkProcSymbol = _VkCreateFence
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateFenceUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateFenceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyFence :: CString
-
-pattern VkDestroyFence <- (is_VkDestroyFence -> True)
-  where VkDestroyFence = _VkDestroyFence
-
-{-# INLINE _VkDestroyFence #-}
-
-_VkDestroyFence :: CString
-_VkDestroyFence = Ptr "vkDestroyFence\NUL"##
-
-{-# INLINE is_VkDestroyFence #-}
-
-is_VkDestroyFence :: CString -> Bool
-is_VkDestroyFence = (EQ ==) . cmpCStrings _VkDestroyFence
-
-type VkDestroyFence = "vkDestroyFence"
-
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
---
--- or less efficient:
---
--- > myDestroyFence <- vkGetProc @VkDestroyFence
---
--- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
---           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyFence" vkDestroyFenceUnsafe
-               :: VkDevice -- ^ device
-                           -> VkFence -- ^ fence
-                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                   -> IO ()
-
-##else
-vkDestroyFenceUnsafe ::
-                     VkDevice -- ^ device
-                              -> VkFence -- ^ fence
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyFenceUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyFence)
-
-{-# NOINLINE vkDestroyFenceUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
---
--- or less efficient:
---
--- > myDestroyFence <- vkGetProc @VkDestroyFence
---
--- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
---           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyFence" vkDestroyFenceSafe ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyFenceSafe ::
-                   VkDevice -- ^ device
-                            -> VkFence -- ^ fence
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyFenceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFence)
-
-{-# NOINLINE vkDestroyFenceSafe #-}
-##endif
-
--- |
--- > void vkDestroyFence
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
---
--- or less efficient:
---
--- > myDestroyFence <- vkGetProc @VkDestroyFence
---
--- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
---           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
---
-vkDestroyFence ::
-               VkDevice -- ^ device
-                        -> VkFence -- ^ fence
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyFence = vkDestroyFenceUnsafe
-##else
-vkDestroyFence = vkDestroyFenceSafe
-
-##endif
-{-# INLINE vkDestroyFence #-}
-
--- | > void vkDestroyFence
---   >     ( VkDevice device
---   >     , VkFence fence
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
-type HS_vkDestroyFence =
-     VkDevice -- ^ device
-              -> VkFence -- ^ fence
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyFence = FunPtr HS_vkDestroyFence
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyFenceUnsafe ::
-               PFN_vkDestroyFence -> HS_vkDestroyFence
-
-foreign import ccall safe "dynamic" unwrapVkDestroyFenceSafe ::
-               PFN_vkDestroyFence -> HS_vkDestroyFence
-
-instance VulkanProc "vkDestroyFence" where
-        type VkProcType "vkDestroyFence" = HS_vkDestroyFence
-        vkProcSymbol = _VkDestroyFence
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyFenceUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyFenceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetFences :: CString
-
-pattern VkResetFences <- (is_VkResetFences -> True)
-  where VkResetFences = _VkResetFences
-
-{-# INLINE _VkResetFences #-}
-
-_VkResetFences :: CString
-_VkResetFences = Ptr "vkResetFences\NUL"##
-
-{-# INLINE is_VkResetFences #-}
-
-is_VkResetFences :: CString -> Bool
-is_VkResetFences = (EQ ==) . cmpCStrings _VkResetFences
-
-type VkResetFences = "vkResetFences"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
---
--- or less efficient:
---
--- > myResetFences <- vkGetProc @VkResetFences
---
--- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetFences@ is an alias
---           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetFences" vkResetFencesUnsafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ fenceCount
-                                  -> Ptr VkFence -- ^ pFences
-                                                 -> IO VkResult
-
-##else
-vkResetFencesUnsafe ::
-                    VkDevice -- ^ device
-                             -> Word32 -- ^ fenceCount
-                                       -> Ptr VkFence -- ^ pFences
-                                                      -> IO VkResult
-vkResetFencesUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetFences)
-
-{-# NOINLINE vkResetFencesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
---
--- or less efficient:
---
--- > myResetFences <- vkGetProc @VkResetFences
---
--- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetFences@ is an alias
---           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetFences" vkResetFencesSafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ fenceCount
-                                  -> Ptr VkFence -- ^ pFences
-                                                 -> IO VkResult
-
-##else
-vkResetFencesSafe ::
-                  VkDevice -- ^ device
-                           -> Word32 -- ^ fenceCount
-                                     -> Ptr VkFence -- ^ pFences
-                                                    -> IO VkResult
-vkResetFencesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetFences)
-
-{-# NOINLINE vkResetFencesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
---
--- or less efficient:
---
--- > myResetFences <- vkGetProc @VkResetFences
---
--- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetFences@ is an alias
---           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
---
-vkResetFences :: VkDevice -- ^ device
-                          -> Word32 -- ^ fenceCount
-                                    -> Ptr VkFence -- ^ pFences
-                                                   -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkResetFences = vkResetFencesUnsafe
-##else
-vkResetFences = vkResetFencesSafe
-
-##endif
-{-# INLINE vkResetFences #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetFences
---   >     ( VkDevice device
---   >     , uint32_t fenceCount
---   >     , const VkFence* pFences
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
-type HS_vkResetFences =
-     VkDevice -- ^ device
-              -> Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> IO VkResult
-
-type PFN_vkResetFences = FunPtr HS_vkResetFences
-
-foreign import ccall unsafe "dynamic" unwrapVkResetFencesUnsafe ::
-               PFN_vkResetFences -> HS_vkResetFences
-
-foreign import ccall safe "dynamic" unwrapVkResetFencesSafe ::
-               PFN_vkResetFences -> HS_vkResetFences
-
-instance VulkanProc "vkResetFences" where
-        type VkProcType "vkResetFences" = HS_vkResetFences
-        vkProcSymbol = _VkResetFences
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkResetFencesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkResetFencesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetFenceStatus :: CString
-
-pattern VkGetFenceStatus <- (is_VkGetFenceStatus -> True)
-  where VkGetFenceStatus = _VkGetFenceStatus
-
-{-# INLINE _VkGetFenceStatus #-}
-
-_VkGetFenceStatus :: CString
-_VkGetFenceStatus = Ptr "vkGetFenceStatus\NUL"##
-
-{-# INLINE is_VkGetFenceStatus #-}
-
-is_VkGetFenceStatus :: CString -> Bool
-is_VkGetFenceStatus = (EQ ==) . cmpCStrings _VkGetFenceStatus
-
-type VkGetFenceStatus = "vkGetFenceStatus"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
---
--- or less efficient:
---
--- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
---
--- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
---           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetFenceStatus"
-               vkGetFenceStatusUnsafe :: VkDevice -- ^ device
-                                                  -> VkFence -- ^ fence
-                                                             -> IO VkResult
-
-##else
-vkGetFenceStatusUnsafe :: VkDevice -- ^ device
-                                   -> VkFence -- ^ fence
-                                              -> IO VkResult
-vkGetFenceStatusUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetFenceStatus)
-
-{-# NOINLINE vkGetFenceStatusUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
---
--- or less efficient:
---
--- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
---
--- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
---           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetFenceStatus" vkGetFenceStatusSafe
-               :: VkDevice -- ^ device
-                           -> VkFence -- ^ fence
-                                      -> IO VkResult
-
-##else
-vkGetFenceStatusSafe :: VkDevice -- ^ device
-                                 -> VkFence -- ^ fence
-                                            -> IO VkResult
-vkGetFenceStatusSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetFenceStatus)
-
-{-# NOINLINE vkGetFenceStatusSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetFenceStatus
--- >     ( VkDevice device
--- >     , VkFence fence
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
---
--- or less efficient:
---
--- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
---
--- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
---           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
---
-vkGetFenceStatus :: VkDevice -- ^ device
-                             -> VkFence -- ^ fence
-                                        -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetFenceStatus = vkGetFenceStatusUnsafe
-##else
-vkGetFenceStatus = vkGetFenceStatusSafe
-
-##endif
-{-# INLINE vkGetFenceStatus #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetFenceStatus
---   >     ( VkDevice device
---   >     , VkFence fence
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
-type HS_vkGetFenceStatus = VkDevice -- ^ device
-                                    -> VkFence -- ^ fence
-                                               -> IO VkResult
-
-type PFN_vkGetFenceStatus = FunPtr HS_vkGetFenceStatus
-
-foreign import ccall unsafe "dynamic" unwrapVkGetFenceStatusUnsafe
-               :: PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
-
-foreign import ccall safe "dynamic" unwrapVkGetFenceStatusSafe ::
-               PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
-
-instance VulkanProc "vkGetFenceStatus" where
-        type VkProcType "vkGetFenceStatus" = HS_vkGetFenceStatus
-        vkProcSymbol = _VkGetFenceStatus
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetFenceStatusUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetFenceStatusSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkWaitForFences :: CString
-
-pattern VkWaitForFences <- (is_VkWaitForFences -> True)
-  where VkWaitForFences = _VkWaitForFences
-
-{-# INLINE _VkWaitForFences #-}
-
-_VkWaitForFences :: CString
-_VkWaitForFences = Ptr "vkWaitForFences\NUL"##
-
-{-# INLINE is_VkWaitForFences #-}
-
-is_VkWaitForFences :: CString -> Bool
-is_VkWaitForFences = (EQ ==) . cmpCStrings _VkWaitForFences
-
-type VkWaitForFences = "vkWaitForFences"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
---
--- or less efficient:
---
--- > myWaitForFences <- vkGetProc @VkWaitForFences
---
--- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
---           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkWaitForFences" vkWaitForFencesUnsafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> VkBool32 -- ^ waitAll
-                                                   -> Word64 -- ^ timeout
-                                                             -> IO VkResult
-
-##else
-vkWaitForFencesUnsafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Word32 -- ^ fenceCount
-                               -> Ptr VkFence -- ^ pFences
-                                              -> VkBool32 -- ^ waitAll
-                                                          -> Word64 -- ^ timeout
-                                                                    -> IO VkResult
-vkWaitForFencesUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkWaitForFences)
-
-{-# NOINLINE vkWaitForFencesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
---
--- or less efficient:
---
--- > myWaitForFences <- vkGetProc @VkWaitForFences
---
--- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
---           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkWaitForFences" vkWaitForFencesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ fenceCount
-                        -> Ptr VkFence -- ^ pFences
-                                       -> VkBool32 -- ^ waitAll
-                                                   -> Word64 -- ^ timeout
-                                                             -> IO VkResult
-
-##else
-vkWaitForFencesSafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Word32 -- ^ fenceCount
-                             -> Ptr VkFence -- ^ pFences
-                                            -> VkBool32 -- ^ waitAll
-                                                        -> Word64 -- ^ timeout
-                                                                  -> IO VkResult
-vkWaitForFencesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkWaitForFences)
-
-{-# NOINLINE vkWaitForFencesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkWaitForFences
--- >     ( VkDevice device
--- >     , uint32_t fenceCount
--- >     , const VkFence* pFences
--- >     , VkBool32 waitAll
--- >     , uint64_t timeout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
---
--- or less efficient:
---
--- > myWaitForFences <- vkGetProc @VkWaitForFences
---
--- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
---           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
---
-vkWaitForFences ::
-                VkDevice -- ^ device
-                         ->
-                  Word32 -- ^ fenceCount
-                         -> Ptr VkFence -- ^ pFences
-                                        -> VkBool32 -- ^ waitAll
-                                                    -> Word64 -- ^ timeout
-                                                              -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkWaitForFences = vkWaitForFencesUnsafe
-##else
-vkWaitForFences = vkWaitForFencesSafe
-
-##endif
-{-# INLINE vkWaitForFences #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkWaitForFences
---   >     ( VkDevice device
---   >     , uint32_t fenceCount
---   >     , const VkFence* pFences
---   >     , VkBool32 waitAll
---   >     , uint64_t timeout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
-type HS_vkWaitForFences =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ fenceCount
-              -> Ptr VkFence -- ^ pFences
-                             -> VkBool32 -- ^ waitAll
-                                         -> Word64 -- ^ timeout
-                                                   -> IO VkResult
-
-type PFN_vkWaitForFences = FunPtr HS_vkWaitForFences
-
-foreign import ccall unsafe "dynamic" unwrapVkWaitForFencesUnsafe
-               :: PFN_vkWaitForFences -> HS_vkWaitForFences
-
-foreign import ccall safe "dynamic" unwrapVkWaitForFencesSafe ::
-               PFN_vkWaitForFences -> HS_vkWaitForFences
-
-instance VulkanProc "vkWaitForFences" where
-        type VkProcType "vkWaitForFences" = HS_vkWaitForFences
-        vkProcSymbol = _VkWaitForFences
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkWaitForFencesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkWaitForFencesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateSemaphore :: CString
-
-pattern VkCreateSemaphore <- (is_VkCreateSemaphore -> True)
-  where VkCreateSemaphore = _VkCreateSemaphore
-
-{-# INLINE _VkCreateSemaphore #-}
-
-_VkCreateSemaphore :: CString
-_VkCreateSemaphore = Ptr "vkCreateSemaphore\NUL"##
-
-{-# INLINE is_VkCreateSemaphore #-}
-
-is_VkCreateSemaphore :: CString -> Bool
-is_VkCreateSemaphore = (EQ ==) . cmpCStrings _VkCreateSemaphore
-
-type VkCreateSemaphore = "vkCreateSemaphore"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
---
--- or less efficient:
---
--- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
---
--- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
---           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateSemaphore"
-               vkCreateSemaphoreUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                -> IO VkResult
-
-##else
-vkCreateSemaphoreUnsafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                                    ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                         -> IO VkResult
-vkCreateSemaphoreUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateSemaphore)
-
-{-# NOINLINE vkCreateSemaphoreUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
---
--- or less efficient:
---
--- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
---
--- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
---           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateSemaphore" vkCreateSemaphoreSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                -> IO VkResult
-
-##else
-vkCreateSemaphoreSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                       -> IO VkResult
-vkCreateSemaphoreSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSemaphore)
-
-{-# NOINLINE vkCreateSemaphoreSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSemaphore
--- >     ( VkDevice device
--- >     , const VkSemaphoreCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSemaphore* pSemaphore
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
---
--- or less efficient:
---
--- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
---
--- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
---           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
---
-vkCreateSemaphore ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkSemaphore -- ^ pSemaphore
-                                                                   -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateSemaphore = vkCreateSemaphoreUnsafe
-##else
-vkCreateSemaphore = vkCreateSemaphoreSafe
-
-##endif
-{-# INLINE vkCreateSemaphore #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateSemaphore
---   >     ( VkDevice device
---   >     , const VkSemaphoreCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSemaphore* pSemaphore
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
-type HS_vkCreateSemaphore =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkSemaphore -- ^ pSemaphore
-                                                      -> IO VkResult
-
-type PFN_vkCreateSemaphore = FunPtr HS_vkCreateSemaphore
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateSemaphoreUnsafe
-               :: PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
-
-foreign import ccall safe "dynamic" unwrapVkCreateSemaphoreSafe ::
-               PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
-
-instance VulkanProc "vkCreateSemaphore" where
-        type VkProcType "vkCreateSemaphore" = HS_vkCreateSemaphore
-        vkProcSymbol = _VkCreateSemaphore
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateSemaphoreUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSemaphoreSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroySemaphore :: CString
-
-pattern VkDestroySemaphore <- (is_VkDestroySemaphore -> True)
-  where VkDestroySemaphore = _VkDestroySemaphore
-
-{-# INLINE _VkDestroySemaphore #-}
-
-_VkDestroySemaphore :: CString
-_VkDestroySemaphore = Ptr "vkDestroySemaphore\NUL"##
-
-{-# INLINE is_VkDestroySemaphore #-}
-
-is_VkDestroySemaphore :: CString -> Bool
-is_VkDestroySemaphore = (EQ ==) . cmpCStrings _VkDestroySemaphore
-
-type VkDestroySemaphore = "vkDestroySemaphore"
-
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
---
--- or less efficient:
---
--- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
---
--- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
---           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroySemaphore"
-               vkDestroySemaphoreUnsafe ::
-               VkDevice -- ^ device
-                        -> VkSemaphore -- ^ semaphore
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroySemaphoreUnsafe ::
-                         VkDevice -- ^ device
-                                  -> VkSemaphore -- ^ semaphore
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroySemaphoreUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroySemaphore)
-
-{-# NOINLINE vkDestroySemaphoreUnsafe #-}
-##endif
-
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
---
--- or less efficient:
---
--- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
---
--- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
---           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroySemaphore"
-               vkDestroySemaphoreSafe ::
-               VkDevice -- ^ device
-                        -> VkSemaphore -- ^ semaphore
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroySemaphoreSafe ::
-                       VkDevice -- ^ device
-                                -> VkSemaphore -- ^ semaphore
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroySemaphoreSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySemaphore)
-
-{-# NOINLINE vkDestroySemaphoreSafe #-}
-##endif
-
--- |
--- > void vkDestroySemaphore
--- >     ( VkDevice device
--- >     , VkSemaphore semaphore
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
---
--- or less efficient:
---
--- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
---
--- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
---           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
---
-vkDestroySemaphore ::
-                   VkDevice -- ^ device
-                            -> VkSemaphore -- ^ semaphore
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroySemaphore = vkDestroySemaphoreUnsafe
-##else
-vkDestroySemaphore = vkDestroySemaphoreSafe
-
-##endif
-{-# INLINE vkDestroySemaphore #-}
-
--- | > void vkDestroySemaphore
---   >     ( VkDevice device
---   >     , VkSemaphore semaphore
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
-type HS_vkDestroySemaphore =
-     VkDevice -- ^ device
-              -> VkSemaphore -- ^ semaphore
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroySemaphore = FunPtr HS_vkDestroySemaphore
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroySemaphoreUnsafe ::
-               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
-
-foreign import ccall safe "dynamic" unwrapVkDestroySemaphoreSafe ::
-               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
-
-instance VulkanProc "vkDestroySemaphore" where
-        type VkProcType "vkDestroySemaphore" = HS_vkDestroySemaphore
-        vkProcSymbol = _VkDestroySemaphore
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroySemaphoreUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySemaphoreSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateEvent :: CString
-
-pattern VkCreateEvent <- (is_VkCreateEvent -> True)
-  where VkCreateEvent = _VkCreateEvent
-
-{-# INLINE _VkCreateEvent #-}
-
-_VkCreateEvent :: CString
-_VkCreateEvent = Ptr "vkCreateEvent\NUL"##
-
-{-# INLINE is_VkCreateEvent #-}
-
-is_VkCreateEvent :: CString -> Bool
-is_VkCreateEvent = (EQ ==) . cmpCStrings _VkCreateEvent
-
-type VkCreateEvent = "vkCreateEvent"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
---
--- or less efficient:
---
--- > myCreateEvent <- vkGetProc @VkCreateEvent
---
--- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
---           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateEvent" vkCreateEventUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkEvent -- ^ pEvent
-                                                            -> IO VkResult
-
-##else
-vkCreateEventUnsafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                            ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkEvent -- ^ pEvent
-                                                                 -> IO VkResult
-vkCreateEventUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateEvent)
-
-{-# NOINLINE vkCreateEventUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
---
--- or less efficient:
---
--- > myCreateEvent <- vkGetProc @VkCreateEvent
---
--- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
---           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateEvent" vkCreateEventSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkEvent -- ^ pEvent
-                                                            -> IO VkResult
-
-##else
-vkCreateEventSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkEvent -- ^ pEvent
-                                                               -> IO VkResult
-vkCreateEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateEvent)
-
-{-# NOINLINE vkCreateEventSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateEvent
--- >     ( VkDevice device
--- >     , const VkEventCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkEvent* pEvent
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
---
--- or less efficient:
---
--- > myCreateEvent <- vkGetProc @VkCreateEvent
---
--- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
---           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
---
-vkCreateEvent ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkEventCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkEvent -- ^ pEvent
-                                                           -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateEvent = vkCreateEventUnsafe
-##else
-vkCreateEvent = vkCreateEventSafe
-
-##endif
-{-# INLINE vkCreateEvent #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateEvent
---   >     ( VkDevice device
---   >     , const VkEventCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkEvent* pEvent
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
-type HS_vkCreateEvent =
-     VkDevice -- ^ device
-              ->
-       Ptr VkEventCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkEvent -- ^ pEvent
-                                                  -> IO VkResult
-
-type PFN_vkCreateEvent = FunPtr HS_vkCreateEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateEventUnsafe ::
-               PFN_vkCreateEvent -> HS_vkCreateEvent
-
-foreign import ccall safe "dynamic" unwrapVkCreateEventSafe ::
-               PFN_vkCreateEvent -> HS_vkCreateEvent
-
-instance VulkanProc "vkCreateEvent" where
-        type VkProcType "vkCreateEvent" = HS_vkCreateEvent
-        vkProcSymbol = _VkCreateEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateEventUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyEvent :: CString
-
-pattern VkDestroyEvent <- (is_VkDestroyEvent -> True)
-  where VkDestroyEvent = _VkDestroyEvent
-
-{-# INLINE _VkDestroyEvent #-}
-
-_VkDestroyEvent :: CString
-_VkDestroyEvent = Ptr "vkDestroyEvent\NUL"##
-
-{-# INLINE is_VkDestroyEvent #-}
-
-is_VkDestroyEvent :: CString -> Bool
-is_VkDestroyEvent = (EQ ==) . cmpCStrings _VkDestroyEvent
-
-type VkDestroyEvent = "vkDestroyEvent"
-
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
---
--- or less efficient:
---
--- > myDestroyEvent <- vkGetProc @VkDestroyEvent
---
--- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
---           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyEvent" vkDestroyEventUnsafe
-               :: VkDevice -- ^ device
-                           -> VkEvent -- ^ event
-                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                   -> IO ()
-
-##else
-vkDestroyEventUnsafe ::
-                     VkDevice -- ^ device
-                              -> VkEvent -- ^ event
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyEventUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyEvent)
-
-{-# NOINLINE vkDestroyEventUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
---
--- or less efficient:
---
--- > myDestroyEvent <- vkGetProc @VkDestroyEvent
---
--- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
---           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyEvent" vkDestroyEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyEventSafe ::
-                   VkDevice -- ^ device
-                            -> VkEvent -- ^ event
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyEvent)
-
-{-# NOINLINE vkDestroyEventSafe #-}
-##endif
-
--- |
--- > void vkDestroyEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
---
--- or less efficient:
---
--- > myDestroyEvent <- vkGetProc @VkDestroyEvent
---
--- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
---           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
---
-vkDestroyEvent ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyEvent = vkDestroyEventUnsafe
-##else
-vkDestroyEvent = vkDestroyEventSafe
-
-##endif
-{-# INLINE vkDestroyEvent #-}
-
--- | > void vkDestroyEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
-type HS_vkDestroyEvent =
-     VkDevice -- ^ device
-              -> VkEvent -- ^ event
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyEvent = FunPtr HS_vkDestroyEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyEventUnsafe ::
-               PFN_vkDestroyEvent -> HS_vkDestroyEvent
-
-foreign import ccall safe "dynamic" unwrapVkDestroyEventSafe ::
-               PFN_vkDestroyEvent -> HS_vkDestroyEvent
-
-instance VulkanProc "vkDestroyEvent" where
-        type VkProcType "vkDestroyEvent" = HS_vkDestroyEvent
-        vkProcSymbol = _VkDestroyEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyEventUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetEventStatus :: CString
-
-pattern VkGetEventStatus <- (is_VkGetEventStatus -> True)
-  where VkGetEventStatus = _VkGetEventStatus
-
-{-# INLINE _VkGetEventStatus #-}
-
-_VkGetEventStatus :: CString
-_VkGetEventStatus = Ptr "vkGetEventStatus\NUL"##
-
-{-# INLINE is_VkGetEventStatus #-}
-
-is_VkGetEventStatus :: CString -> Bool
-is_VkGetEventStatus = (EQ ==) . cmpCStrings _VkGetEventStatus
-
-type VkGetEventStatus = "vkGetEventStatus"
-
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
---
--- or less efficient:
---
--- > myGetEventStatus <- vkGetProc @VkGetEventStatus
---
--- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
---           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetEventStatus"
-               vkGetEventStatusUnsafe :: VkDevice -- ^ device
-                                                  -> VkEvent -- ^ event
-                                                             -> IO VkResult
-
-##else
-vkGetEventStatusUnsafe :: VkDevice -- ^ device
-                                   -> VkEvent -- ^ event
-                                              -> IO VkResult
-vkGetEventStatusUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetEventStatus)
-
-{-# NOINLINE vkGetEventStatusUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
---
--- or less efficient:
---
--- > myGetEventStatus <- vkGetProc @VkGetEventStatus
---
--- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
---           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetEventStatus" vkGetEventStatusSafe
-               :: VkDevice -- ^ device
-                           -> VkEvent -- ^ event
-                                      -> IO VkResult
-
-##else
-vkGetEventStatusSafe :: VkDevice -- ^ device
-                                 -> VkEvent -- ^ event
-                                            -> IO VkResult
-vkGetEventStatusSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetEventStatus)
-
-{-# NOINLINE vkGetEventStatusSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetEventStatus
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
---
--- or less efficient:
---
--- > myGetEventStatus <- vkGetProc @VkGetEventStatus
---
--- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
---           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
---
-vkGetEventStatus :: VkDevice -- ^ device
-                             -> VkEvent -- ^ event
-                                        -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetEventStatus = vkGetEventStatusUnsafe
-##else
-vkGetEventStatus = vkGetEventStatusSafe
-
-##endif
-{-# INLINE vkGetEventStatus #-}
-
--- | Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetEventStatus
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
-type HS_vkGetEventStatus = VkDevice -- ^ device
-                                    -> VkEvent -- ^ event
-                                               -> IO VkResult
-
-type PFN_vkGetEventStatus = FunPtr HS_vkGetEventStatus
-
-foreign import ccall unsafe "dynamic" unwrapVkGetEventStatusUnsafe
-               :: PFN_vkGetEventStatus -> HS_vkGetEventStatus
-
-foreign import ccall safe "dynamic" unwrapVkGetEventStatusSafe ::
-               PFN_vkGetEventStatus -> HS_vkGetEventStatus
-
-instance VulkanProc "vkGetEventStatus" where
-        type VkProcType "vkGetEventStatus" = HS_vkGetEventStatus
-        vkProcSymbol = _VkGetEventStatus
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetEventStatusUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetEventStatusSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkSetEvent :: CString
-
-pattern VkSetEvent <- (is_VkSetEvent -> True)
-  where VkSetEvent = _VkSetEvent
-
-{-# INLINE _VkSetEvent #-}
-
-_VkSetEvent :: CString
-_VkSetEvent = Ptr "vkSetEvent\NUL"##
-
-{-# INLINE is_VkSetEvent #-}
-
-is_VkSetEvent :: CString -> Bool
-is_VkSetEvent = (EQ ==) . cmpCStrings _VkSetEvent
-
-type VkSetEvent = "vkSetEvent"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
---
--- or less efficient:
---
--- > mySetEvent <- vkGetProc @VkSetEvent
---
--- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkSetEvent@ is an alias
---           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkSetEvent" vkSetEventUnsafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkSetEventUnsafe :: VkDevice -- ^ device
-                             -> VkEvent -- ^ event
-                                        -> IO VkResult
-vkSetEventUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkSetEvent)
-
-{-# NOINLINE vkSetEventUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
---
--- or less efficient:
---
--- > mySetEvent <- vkGetProc @VkSetEvent
---
--- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkSetEvent@ is an alias
---           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkSetEvent" vkSetEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkSetEventSafe :: VkDevice -- ^ device
-                           -> VkEvent -- ^ event
-                                      -> IO VkResult
-vkSetEventSafe = unsafeDupablePerformIO (vkGetProcSafe @VkSetEvent)
-
-{-# NOINLINE vkSetEventSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkSetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
---
--- or less efficient:
---
--- > mySetEvent <- vkGetProc @VkSetEvent
---
--- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkSetEvent@ is an alias
---           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
---
-vkSetEvent :: VkDevice -- ^ device
-                       -> VkEvent -- ^ event
-                                  -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkSetEvent = vkSetEventUnsafe
-##else
-vkSetEvent = vkSetEventSafe
-
-##endif
-{-# INLINE vkSetEvent #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkSetEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
-type HS_vkSetEvent = VkDevice -- ^ device
-                              -> VkEvent -- ^ event
-                                         -> IO VkResult
-
-type PFN_vkSetEvent = FunPtr HS_vkSetEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkSetEventUnsafe ::
-               PFN_vkSetEvent -> HS_vkSetEvent
-
-foreign import ccall safe "dynamic" unwrapVkSetEventSafe ::
-               PFN_vkSetEvent -> HS_vkSetEvent
-
-instance VulkanProc "vkSetEvent" where
-        type VkProcType "vkSetEvent" = HS_vkSetEvent
-        vkProcSymbol = _VkSetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkSetEventUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkSetEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetEvent :: CString
-
-pattern VkResetEvent <- (is_VkResetEvent -> True)
-  where VkResetEvent = _VkResetEvent
-
-{-# INLINE _VkResetEvent #-}
-
-_VkResetEvent :: CString
-_VkResetEvent = Ptr "vkResetEvent\NUL"##
-
-{-# INLINE is_VkResetEvent #-}
-
-is_VkResetEvent :: CString -> Bool
-is_VkResetEvent = (EQ ==) . cmpCStrings _VkResetEvent
-
-type VkResetEvent = "vkResetEvent"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
---
--- or less efficient:
---
--- > myResetEvent <- vkGetProc @VkResetEvent
---
--- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetEvent@ is an alias
---           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetEvent" vkResetEventUnsafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkResetEventUnsafe :: VkDevice -- ^ device
-                               -> VkEvent -- ^ event
-                                          -> IO VkResult
-vkResetEventUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetEvent)
-
-{-# NOINLINE vkResetEventUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
---
--- or less efficient:
---
--- > myResetEvent <- vkGetProc @VkResetEvent
---
--- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetEvent@ is an alias
---           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetEvent" vkResetEventSafe ::
-               VkDevice -- ^ device
-                        -> VkEvent -- ^ event
-                                   -> IO VkResult
-
-##else
-vkResetEventSafe :: VkDevice -- ^ device
-                             -> VkEvent -- ^ event
-                                        -> IO VkResult
-vkResetEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetEvent)
-
-{-# NOINLINE vkResetEventSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetEvent
--- >     ( VkDevice device
--- >     , VkEvent event
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
---
--- or less efficient:
---
--- > myResetEvent <- vkGetProc @VkResetEvent
---
--- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetEvent@ is an alias
---           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
---
-vkResetEvent :: VkDevice -- ^ device
-                         -> VkEvent -- ^ event
-                                    -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkResetEvent = vkResetEventUnsafe
-##else
-vkResetEvent = vkResetEventSafe
-
-##endif
-{-# INLINE vkResetEvent #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetEvent
---   >     ( VkDevice device
---   >     , VkEvent event
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
-type HS_vkResetEvent = VkDevice -- ^ device
-                                -> VkEvent -- ^ event
-                                           -> IO VkResult
-
-type PFN_vkResetEvent = FunPtr HS_vkResetEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkResetEventUnsafe ::
-               PFN_vkResetEvent -> HS_vkResetEvent
-
-foreign import ccall safe "dynamic" unwrapVkResetEventSafe ::
-               PFN_vkResetEvent -> HS_vkResetEvent
-
-instance VulkanProc "vkResetEvent" where
-        type VkProcType "vkResetEvent" = HS_vkResetEvent
-        vkProcSymbol = _VkResetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkResetEventUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkResetEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateQueryPool :: CString
-
-pattern VkCreateQueryPool <- (is_VkCreateQueryPool -> True)
-  where VkCreateQueryPool = _VkCreateQueryPool
-
-{-# INLINE _VkCreateQueryPool #-}
-
-_VkCreateQueryPool :: CString
-_VkCreateQueryPool = Ptr "vkCreateQueryPool\NUL"##
-
-{-# INLINE is_VkCreateQueryPool #-}
-
-is_VkCreateQueryPool :: CString -> Bool
-is_VkCreateQueryPool = (EQ ==) . cmpCStrings _VkCreateQueryPool
-
-type VkCreateQueryPool = "vkCreateQueryPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
---
--- or less efficient:
---
--- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
---
--- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
---           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateQueryPool"
-               vkCreateQueryPoolUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                -> IO VkResult
-
-##else
-vkCreateQueryPoolUnsafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                                    ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                         -> IO VkResult
-vkCreateQueryPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateQueryPool)
-
-{-# NOINLINE vkCreateQueryPoolUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
---
--- or less efficient:
---
--- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
---
--- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
---           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateQueryPool" vkCreateQueryPoolSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                -> IO VkResult
-
-##else
-vkCreateQueryPoolSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                       -> IO VkResult
-vkCreateQueryPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateQueryPool)
-
-{-# NOINLINE vkCreateQueryPoolSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateQueryPool
--- >     ( VkDevice device
--- >     , const VkQueryPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkQueryPool* pQueryPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
---
--- or less efficient:
---
--- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
---
--- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
---           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
---
-vkCreateQueryPool ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkQueryPool -- ^ pQueryPool
-                                                                   -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateQueryPool = vkCreateQueryPoolUnsafe
-##else
-vkCreateQueryPool = vkCreateQueryPoolSafe
-
-##endif
-{-# INLINE vkCreateQueryPool #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateQueryPool
---   >     ( VkDevice device
---   >     , const VkQueryPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkQueryPool* pQueryPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
-type HS_vkCreateQueryPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkQueryPool -- ^ pQueryPool
-                                                      -> IO VkResult
-
-type PFN_vkCreateQueryPool = FunPtr HS_vkCreateQueryPool
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateQueryPoolUnsafe
-               :: PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
-
-foreign import ccall safe "dynamic" unwrapVkCreateQueryPoolSafe ::
-               PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
-
-instance VulkanProc "vkCreateQueryPool" where
-        type VkProcType "vkCreateQueryPool" = HS_vkCreateQueryPool
-        vkProcSymbol = _VkCreateQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateQueryPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateQueryPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyQueryPool :: CString
-
-pattern VkDestroyQueryPool <- (is_VkDestroyQueryPool -> True)
-  where VkDestroyQueryPool = _VkDestroyQueryPool
-
-{-# INLINE _VkDestroyQueryPool #-}
-
-_VkDestroyQueryPool :: CString
-_VkDestroyQueryPool = Ptr "vkDestroyQueryPool\NUL"##
-
-{-# INLINE is_VkDestroyQueryPool #-}
-
-is_VkDestroyQueryPool :: CString -> Bool
-is_VkDestroyQueryPool = (EQ ==) . cmpCStrings _VkDestroyQueryPool
-
-type VkDestroyQueryPool = "vkDestroyQueryPool"
-
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
---
--- or less efficient:
---
--- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
---
--- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
---           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyQueryPool"
-               vkDestroyQueryPoolUnsafe ::
-               VkDevice -- ^ device
-                        -> VkQueryPool -- ^ queryPool
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyQueryPoolUnsafe ::
-                         VkDevice -- ^ device
-                                  -> VkQueryPool -- ^ queryPool
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyQueryPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyQueryPool)
-
-{-# NOINLINE vkDestroyQueryPoolUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
---
--- or less efficient:
---
--- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
---
--- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
---           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyQueryPool"
-               vkDestroyQueryPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkQueryPool -- ^ queryPool
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyQueryPoolSafe ::
-                       VkDevice -- ^ device
-                                -> VkQueryPool -- ^ queryPool
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyQueryPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyQueryPool)
-
-{-# NOINLINE vkDestroyQueryPoolSafe #-}
-##endif
-
--- |
--- > void vkDestroyQueryPool
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
---
--- or less efficient:
---
--- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
---
--- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
---           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
---
-vkDestroyQueryPool ::
-                   VkDevice -- ^ device
-                            -> VkQueryPool -- ^ queryPool
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyQueryPool = vkDestroyQueryPoolUnsafe
-##else
-vkDestroyQueryPool = vkDestroyQueryPoolSafe
-
-##endif
-{-# INLINE vkDestroyQueryPool #-}
-
--- | > void vkDestroyQueryPool
---   >     ( VkDevice device
---   >     , VkQueryPool queryPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
-type HS_vkDestroyQueryPool =
-     VkDevice -- ^ device
-              -> VkQueryPool -- ^ queryPool
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyQueryPool = FunPtr HS_vkDestroyQueryPool
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyQueryPoolUnsafe ::
-               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
-
-foreign import ccall safe "dynamic" unwrapVkDestroyQueryPoolSafe ::
-               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
-
-instance VulkanProc "vkDestroyQueryPool" where
-        type VkProcType "vkDestroyQueryPool" = HS_vkDestroyQueryPool
-        vkProcSymbol = _VkDestroyQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyQueryPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyQueryPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetQueryPoolResults :: CString
-
-pattern VkGetQueryPoolResults <- (is_VkGetQueryPoolResults -> True)
-  where VkGetQueryPoolResults = _VkGetQueryPoolResults
-
-{-# INLINE _VkGetQueryPoolResults #-}
-
-_VkGetQueryPoolResults :: CString
-_VkGetQueryPoolResults = Ptr "vkGetQueryPoolResults\NUL"##
-
-{-# INLINE is_VkGetQueryPoolResults #-}
-
-is_VkGetQueryPoolResults :: CString -> Bool
-is_VkGetQueryPoolResults
-  = (EQ ==) . cmpCStrings _VkGetQueryPoolResults
-
-type VkGetQueryPoolResults = "vkGetQueryPoolResults"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
---
--- or less efficient:
---
--- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
---
--- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
---           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetQueryPoolResults"
-               vkGetQueryPoolResultsUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       CSize -- ^ dataSize
-                             ->
-                         Ptr Void -- ^ pData
-                                  -> VkDeviceSize -- ^ stride
-                                                  -> VkQueryResultFlags -- ^ flags
-                                                                        -> IO VkResult
-
-##else
-vkGetQueryPoolResultsUnsafe ::
-                            VkDevice -- ^ device
-                                     ->
-                              VkQueryPool -- ^ queryPool
-                                          ->
-                                Word32 -- ^ firstQuery
-                                       ->
-                                  Word32 -- ^ queryCount
-                                         ->
-                                    CSize -- ^ dataSize
-                                          ->
-                                      Ptr Void -- ^ pData
-                                               -> VkDeviceSize -- ^ stride
-                                                               -> VkQueryResultFlags -- ^ flags
-                                                                                     -> IO VkResult
-vkGetQueryPoolResultsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetQueryPoolResults)
-
-{-# NOINLINE vkGetQueryPoolResultsUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
---
--- or less efficient:
---
--- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
---
--- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
---           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetQueryPoolResults"
-               vkGetQueryPoolResultsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       CSize -- ^ dataSize
-                             ->
-                         Ptr Void -- ^ pData
-                                  -> VkDeviceSize -- ^ stride
-                                                  -> VkQueryResultFlags -- ^ flags
-                                                                        -> IO VkResult
-
-##else
-vkGetQueryPoolResultsSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkQueryPool -- ^ queryPool
-                                        ->
-                              Word32 -- ^ firstQuery
-                                     ->
-                                Word32 -- ^ queryCount
-                                       ->
-                                  CSize -- ^ dataSize
-                                        ->
-                                    Ptr Void -- ^ pData
-                                             -> VkDeviceSize -- ^ stride
-                                                             -> VkQueryResultFlags -- ^ flags
-                                                                                   -> IO VkResult
-vkGetQueryPoolResultsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetQueryPoolResults)
-
-{-# NOINLINE vkGetQueryPoolResultsSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
--- > VkResult vkGetQueryPoolResults
--- >     ( VkDevice device
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , size_t dataSize
--- >     , void* pData
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
---
--- or less efficient:
---
--- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
---
--- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
---           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
---
-vkGetQueryPoolResults ::
-                      VkDevice -- ^ device
-                               ->
-                        VkQueryPool -- ^ queryPool
-                                    ->
-                          Word32 -- ^ firstQuery
-                                 ->
-                            Word32 -- ^ queryCount
-                                   ->
-                              CSize -- ^ dataSize
-                                    ->
-                                Ptr Void -- ^ pData
-                                         -> VkDeviceSize -- ^ stride
-                                                         -> VkQueryResultFlags -- ^ flags
-                                                                               -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetQueryPoolResults = vkGetQueryPoolResultsUnsafe
-##else
-vkGetQueryPoolResults = vkGetQueryPoolResultsSafe
-
-##endif
-{-# INLINE vkGetQueryPoolResults #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
---
---   > VkResult vkGetQueryPoolResults
---   >     ( VkDevice device
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     , size_t dataSize
---   >     , void* pData
---   >     , VkDeviceSize stride
---   >     , VkQueryResultFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
-type HS_vkGetQueryPoolResults =
-     VkDevice -- ^ device
-              ->
-       VkQueryPool -- ^ queryPool
-                   ->
-         Word32 -- ^ firstQuery
-                ->
-           Word32 -- ^ queryCount
-                  ->
-             CSize -- ^ dataSize
-                   ->
-               Ptr Void -- ^ pData
-                        -> VkDeviceSize -- ^ stride
-                                        -> VkQueryResultFlags -- ^ flags
-                                                              -> IO VkResult
-
-type PFN_vkGetQueryPoolResults = FunPtr HS_vkGetQueryPoolResults
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetQueryPoolResultsUnsafe ::
-               PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
-
-foreign import ccall safe "dynamic" unwrapVkGetQueryPoolResultsSafe
-               :: PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
-
-instance VulkanProc "vkGetQueryPoolResults" where
-        type VkProcType "vkGetQueryPoolResults" = HS_vkGetQueryPoolResults
-        vkProcSymbol = _VkGetQueryPoolResults
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetQueryPoolResultsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetQueryPoolResultsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateBuffer :: CString
-
-pattern VkCreateBuffer <- (is_VkCreateBuffer -> True)
-  where VkCreateBuffer = _VkCreateBuffer
-
-{-# INLINE _VkCreateBuffer #-}
-
-_VkCreateBuffer :: CString
-_VkCreateBuffer = Ptr "vkCreateBuffer\NUL"##
-
-{-# INLINE is_VkCreateBuffer #-}
-
-is_VkCreateBuffer :: CString -> Bool
-is_VkCreateBuffer = (EQ ==) . cmpCStrings _VkCreateBuffer
-
-type VkCreateBuffer = "vkCreateBuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
---
--- or less efficient:
---
--- > myCreateBuffer <- vkGetProc @VkCreateBuffer
---
--- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
---           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateBuffer" vkCreateBufferUnsafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-
-##else
-vkCreateBufferUnsafe ::
-                     VkDevice -- ^ device
-                              ->
-                       Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                              ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkBuffer -- ^ pBuffer
-                                                                   -> IO VkResult
-vkCreateBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateBuffer)
-
-{-# NOINLINE vkCreateBufferUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
---
--- or less efficient:
---
--- > myCreateBuffer <- vkGetProc @VkCreateBuffer
---
--- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
---           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateBuffer" vkCreateBufferSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-
-##else
-vkCreateBufferSafe ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                            ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkBuffer -- ^ pBuffer
-                                                                 -> IO VkResult
-vkCreateBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBuffer)
-
-{-# NOINLINE vkCreateBufferSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBuffer
--- >     ( VkDevice device
--- >     , const VkBufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBuffer* pBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
---
--- or less efficient:
---
--- > myCreateBuffer <- vkGetProc @VkCreateBuffer
---
--- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
---           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
---
-vkCreateBuffer ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBuffer -- ^ pBuffer
-                                                             -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateBuffer = vkCreateBufferUnsafe
-##else
-vkCreateBuffer = vkCreateBufferSafe
-
-##endif
-{-# INLINE vkCreateBuffer #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateBuffer
---   >     ( VkDevice device
---   >     , const VkBufferCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkBuffer* pBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
-type HS_vkCreateBuffer =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferCreateInfo -- ^ pCreateInfo
-                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkBuffer -- ^ pBuffer
-                                                   -> IO VkResult
-
-type PFN_vkCreateBuffer = FunPtr HS_vkCreateBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateBufferUnsafe ::
-               PFN_vkCreateBuffer -> HS_vkCreateBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCreateBufferSafe ::
-               PFN_vkCreateBuffer -> HS_vkCreateBuffer
-
-instance VulkanProc "vkCreateBuffer" where
-        type VkProcType "vkCreateBuffer" = HS_vkCreateBuffer
-        vkProcSymbol = _VkCreateBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyBuffer :: CString
-
-pattern VkDestroyBuffer <- (is_VkDestroyBuffer -> True)
-  where VkDestroyBuffer = _VkDestroyBuffer
-
-{-# INLINE _VkDestroyBuffer #-}
-
-_VkDestroyBuffer :: CString
-_VkDestroyBuffer = Ptr "vkDestroyBuffer\NUL"##
-
-{-# INLINE is_VkDestroyBuffer #-}
-
-is_VkDestroyBuffer :: CString -> Bool
-is_VkDestroyBuffer = (EQ ==) . cmpCStrings _VkDestroyBuffer
-
-type VkDestroyBuffer = "vkDestroyBuffer"
-
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
---
--- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
---           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyBuffer" vkDestroyBufferUnsafe
-               :: VkDevice -- ^ device
-                           -> VkBuffer -- ^ buffer
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyBufferUnsafe ::
-                      VkDevice -- ^ device
-                               -> VkBuffer -- ^ buffer
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroyBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyBuffer)
-
-{-# NOINLINE vkDestroyBufferUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
---
--- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
---           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyBuffer" vkDestroyBufferSafe ::
-               VkDevice -- ^ device
-                        -> VkBuffer -- ^ buffer
-                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 -> IO ()
-
-##else
-vkDestroyBufferSafe ::
-                    VkDevice -- ^ device
-                             -> VkBuffer -- ^ buffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBuffer)
-
-{-# NOINLINE vkDestroyBufferSafe #-}
-##endif
-
--- |
--- > void vkDestroyBuffer
--- >     ( VkDevice device
--- >     , VkBuffer buffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
---
--- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
---           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
---
-vkDestroyBuffer ::
-                VkDevice -- ^ device
-                         -> VkBuffer -- ^ buffer
-                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                  -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyBuffer = vkDestroyBufferUnsafe
-##else
-vkDestroyBuffer = vkDestroyBufferSafe
-
-##endif
-{-# INLINE vkDestroyBuffer #-}
-
--- | > void vkDestroyBuffer
---   >     ( VkDevice device
---   >     , VkBuffer buffer
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
-type HS_vkDestroyBuffer =
-     VkDevice -- ^ device
-              -> VkBuffer -- ^ buffer
-                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> IO ()
-
-type PFN_vkDestroyBuffer = FunPtr HS_vkDestroyBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyBufferUnsafe
-               :: PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
-
-foreign import ccall safe "dynamic" unwrapVkDestroyBufferSafe ::
-               PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
-
-instance VulkanProc "vkDestroyBuffer" where
-        type VkProcType "vkDestroyBuffer" = HS_vkDestroyBuffer
-        vkProcSymbol = _VkDestroyBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateBufferView :: CString
-
-pattern VkCreateBufferView <- (is_VkCreateBufferView -> True)
-  where VkCreateBufferView = _VkCreateBufferView
-
-{-# INLINE _VkCreateBufferView #-}
-
-_VkCreateBufferView :: CString
-_VkCreateBufferView = Ptr "vkCreateBufferView\NUL"##
-
-{-# INLINE is_VkCreateBufferView #-}
-
-is_VkCreateBufferView :: CString -> Bool
-is_VkCreateBufferView = (EQ ==) . cmpCStrings _VkCreateBufferView
-
-type VkCreateBufferView = "vkCreateBufferView"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
---
--- or less efficient:
---
--- > myCreateBufferView <- vkGetProc @VkCreateBufferView
---
--- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
---           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateBufferView"
-               vkCreateBufferViewUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBufferView -- ^ pView
-                                                                 -> IO VkResult
-
-##else
-vkCreateBufferViewUnsafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                                      ->
-                             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> Ptr VkBufferView -- ^ pView
-                                                                           -> IO VkResult
-vkCreateBufferViewUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateBufferView)
-
-{-# NOINLINE vkCreateBufferViewUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
---
--- or less efficient:
---
--- > myCreateBufferView <- vkGetProc @VkCreateBufferView
---
--- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
---           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateBufferView"
-               vkCreateBufferViewSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkBufferView -- ^ pView
-                                                                 -> IO VkResult
-
-##else
-vkCreateBufferViewSafe ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                                    ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkBufferView -- ^ pView
-                                                                         -> IO VkResult
-vkCreateBufferViewSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBufferView)
-
-{-# NOINLINE vkCreateBufferViewSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateBufferView
--- >     ( VkDevice device
--- >     , const VkBufferViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkBufferView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
---
--- or less efficient:
---
--- > myCreateBufferView <- vkGetProc @VkCreateBufferView
---
--- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
---           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
---
-vkCreateBufferView ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                                ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkBufferView -- ^ pView
-                                                                     -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateBufferView = vkCreateBufferViewUnsafe
-##else
-vkCreateBufferView = vkCreateBufferViewSafe
-
-##endif
-{-# INLINE vkCreateBufferView #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateBufferView
---   >     ( VkDevice device
---   >     , const VkBufferViewCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkBufferView* pView
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
-type HS_vkCreateBufferView =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
-                                  ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkBufferView -- ^ pView
-                                                       -> IO VkResult
-
-type PFN_vkCreateBufferView = FunPtr HS_vkCreateBufferView
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateBufferViewUnsafe ::
-               PFN_vkCreateBufferView -> HS_vkCreateBufferView
-
-foreign import ccall safe "dynamic" unwrapVkCreateBufferViewSafe ::
-               PFN_vkCreateBufferView -> HS_vkCreateBufferView
-
-instance VulkanProc "vkCreateBufferView" where
-        type VkProcType "vkCreateBufferView" = HS_vkCreateBufferView
-        vkProcSymbol = _VkCreateBufferView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateBufferViewUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateBufferViewSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyBufferView :: CString
-
-pattern VkDestroyBufferView <- (is_VkDestroyBufferView -> True)
-  where VkDestroyBufferView = _VkDestroyBufferView
-
-{-# INLINE _VkDestroyBufferView #-}
-
-_VkDestroyBufferView :: CString
-_VkDestroyBufferView = Ptr "vkDestroyBufferView\NUL"##
-
-{-# INLINE is_VkDestroyBufferView #-}
-
-is_VkDestroyBufferView :: CString -> Bool
-is_VkDestroyBufferView = (EQ ==) . cmpCStrings _VkDestroyBufferView
-
-type VkDestroyBufferView = "vkDestroyBufferView"
-
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
---
--- or less efficient:
---
--- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
---
--- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
---           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyBufferView"
-               vkDestroyBufferViewUnsafe ::
-               VkDevice -- ^ device
-                        -> VkBufferView -- ^ bufferView
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroyBufferViewUnsafe ::
-                          VkDevice -- ^ device
-                                   -> VkBufferView -- ^ bufferView
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyBufferViewUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyBufferView)
-
-{-# NOINLINE vkDestroyBufferViewUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
---
--- or less efficient:
---
--- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
---
--- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
---           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyBufferView"
-               vkDestroyBufferViewSafe ::
-               VkDevice -- ^ device
-                        -> VkBufferView -- ^ bufferView
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroyBufferViewSafe ::
-                        VkDevice -- ^ device
-                                 -> VkBufferView -- ^ bufferView
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyBufferViewSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBufferView)
-
-{-# NOINLINE vkDestroyBufferViewSafe #-}
-##endif
-
--- |
--- > void vkDestroyBufferView
--- >     ( VkDevice device
--- >     , VkBufferView bufferView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
---
--- or less efficient:
---
--- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
---
--- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
---           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
---
-vkDestroyBufferView ::
-                    VkDevice -- ^ device
-                             -> VkBufferView -- ^ bufferView
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyBufferView = vkDestroyBufferViewUnsafe
-##else
-vkDestroyBufferView = vkDestroyBufferViewSafe
-
-##endif
-{-# INLINE vkDestroyBufferView #-}
-
--- | > void vkDestroyBufferView
---   >     ( VkDevice device
---   >     , VkBufferView bufferView
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
-type HS_vkDestroyBufferView =
-     VkDevice -- ^ device
-              -> VkBufferView -- ^ bufferView
-                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> IO ()
-
-type PFN_vkDestroyBufferView = FunPtr HS_vkDestroyBufferView
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyBufferViewUnsafe ::
-               PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
-
-foreign import ccall safe "dynamic" unwrapVkDestroyBufferViewSafe
-               :: PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
-
-instance VulkanProc "vkDestroyBufferView" where
-        type VkProcType "vkDestroyBufferView" = HS_vkDestroyBufferView
-        vkProcSymbol = _VkDestroyBufferView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyBufferViewUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyBufferViewSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateImage :: CString
-
-pattern VkCreateImage <- (is_VkCreateImage -> True)
-  where VkCreateImage = _VkCreateImage
-
-{-# INLINE _VkCreateImage #-}
-
-_VkCreateImage :: CString
-_VkCreateImage = Ptr "vkCreateImage\NUL"##
-
-{-# INLINE is_VkCreateImage #-}
-
-is_VkCreateImage :: CString -> Bool
-is_VkCreateImage = (EQ ==) . cmpCStrings _VkCreateImage
-
-type VkCreateImage = "vkCreateImage"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
---
--- or less efficient:
---
--- > myCreateImage <- vkGetProc @VkCreateImage
---
--- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateImage@ is an alias
---           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateImage" vkCreateImageUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImage -- ^ pImage
-                                                            -> IO VkResult
-
-##else
-vkCreateImageUnsafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                            ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkImage -- ^ pImage
-                                                                 -> IO VkResult
-vkCreateImageUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateImage)
-
-{-# NOINLINE vkCreateImageUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
---
--- or less efficient:
---
--- > myCreateImage <- vkGetProc @VkCreateImage
---
--- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateImage@ is an alias
---           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateImage" vkCreateImageSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                       ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImage -- ^ pImage
-                                                            -> IO VkResult
-
-##else
-vkCreateImageSafe ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                          ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkImage -- ^ pImage
-                                                               -> IO VkResult
-vkCreateImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImage)
-
-{-# NOINLINE vkCreateImageSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImage
--- >     ( VkDevice device
--- >     , const VkImageCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImage* pImage
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
---
--- or less efficient:
---
--- > myCreateImage <- vkGetProc @VkCreateImage
---
--- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateImage@ is an alias
---           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
---
-vkCreateImage ::
-              VkDevice -- ^ device
-                       ->
-                Ptr VkImageCreateInfo -- ^ pCreateInfo
-                                      ->
-                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                            -> Ptr VkImage -- ^ pImage
-                                                           -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateImage = vkCreateImageUnsafe
-##else
-vkCreateImage = vkCreateImageSafe
-
-##endif
-{-# INLINE vkCreateImage #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateImage
---   >     ( VkDevice device
---   >     , const VkImageCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkImage* pImage
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
-type HS_vkCreateImage =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageCreateInfo -- ^ pCreateInfo
-                             ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkImage -- ^ pImage
-                                                  -> IO VkResult
-
-type PFN_vkCreateImage = FunPtr HS_vkCreateImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateImageUnsafe ::
-               PFN_vkCreateImage -> HS_vkCreateImage
-
-foreign import ccall safe "dynamic" unwrapVkCreateImageSafe ::
-               PFN_vkCreateImage -> HS_vkCreateImage
-
-instance VulkanProc "vkCreateImage" where
-        type VkProcType "vkCreateImage" = HS_vkCreateImage
-        vkProcSymbol = _VkCreateImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateImageUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyImage :: CString
-
-pattern VkDestroyImage <- (is_VkDestroyImage -> True)
-  where VkDestroyImage = _VkDestroyImage
-
-{-# INLINE _VkDestroyImage #-}
-
-_VkDestroyImage :: CString
-_VkDestroyImage = Ptr "vkDestroyImage\NUL"##
-
-{-# INLINE is_VkDestroyImage #-}
-
-is_VkDestroyImage :: CString -> Bool
-is_VkDestroyImage = (EQ ==) . cmpCStrings _VkDestroyImage
-
-type VkDestroyImage = "vkDestroyImage"
-
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
---
--- or less efficient:
---
--- > myDestroyImage <- vkGetProc @VkDestroyImage
---
--- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
---           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyImage" vkDestroyImageUnsafe
-               :: VkDevice -- ^ device
-                           -> VkImage -- ^ image
-                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                   -> IO ()
-
-##else
-vkDestroyImageUnsafe ::
-                     VkDevice -- ^ device
-                              -> VkImage -- ^ image
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyImageUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyImage)
-
-{-# NOINLINE vkDestroyImageUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
---
--- or less efficient:
---
--- > myDestroyImage <- vkGetProc @VkDestroyImage
---
--- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
---           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyImage" vkDestroyImageSafe ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-
-##else
-vkDestroyImageSafe ::
-                   VkDevice -- ^ device
-                            -> VkImage -- ^ image
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImage)
-
-{-# NOINLINE vkDestroyImageSafe #-}
-##endif
-
--- |
--- > void vkDestroyImage
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
---
--- or less efficient:
---
--- > myDestroyImage <- vkGetProc @VkDestroyImage
---
--- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
---           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
---
-vkDestroyImage ::
-               VkDevice -- ^ device
-                        -> VkImage -- ^ image
-                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyImage = vkDestroyImageUnsafe
-##else
-vkDestroyImage = vkDestroyImageSafe
-
-##endif
-{-# INLINE vkDestroyImage #-}
-
--- | > void vkDestroyImage
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
-type HS_vkDestroyImage =
-     VkDevice -- ^ device
-              -> VkImage -- ^ image
-                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> IO ()
-
-type PFN_vkDestroyImage = FunPtr HS_vkDestroyImage
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyImageUnsafe ::
-               PFN_vkDestroyImage -> HS_vkDestroyImage
-
-foreign import ccall safe "dynamic" unwrapVkDestroyImageSafe ::
-               PFN_vkDestroyImage -> HS_vkDestroyImage
-
-instance VulkanProc "vkDestroyImage" where
-        type VkProcType "vkDestroyImage" = HS_vkDestroyImage
-        vkProcSymbol = _VkDestroyImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyImageUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetImageSubresourceLayout :: CString
-
-pattern VkGetImageSubresourceLayout <-
-        (is_VkGetImageSubresourceLayout -> True)
-  where VkGetImageSubresourceLayout = _VkGetImageSubresourceLayout
-
-{-# INLINE _VkGetImageSubresourceLayout #-}
-
-_VkGetImageSubresourceLayout :: CString
-_VkGetImageSubresourceLayout
-  = Ptr "vkGetImageSubresourceLayout\NUL"##
-
-{-# INLINE is_VkGetImageSubresourceLayout #-}
-
-is_VkGetImageSubresourceLayout :: CString -> Bool
-is_VkGetImageSubresourceLayout
-  = (EQ ==) . cmpCStrings _VkGetImageSubresourceLayout
-
-type VkGetImageSubresourceLayout = "vkGetImageSubresourceLayout"
-
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
---
--- or less efficient:
---
--- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
---
--- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
---           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetImageSubresourceLayout"
-               vkGetImageSubresourceLayoutUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr VkImageSubresource -- ^ pSubresource
-                                          -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                     -> IO ()
-
-##else
-vkGetImageSubresourceLayoutUnsafe ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    VkImage -- ^ image
-                                            ->
-                                      Ptr VkImageSubresource -- ^ pSubresource
-                                                             -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                                        -> IO ()
-vkGetImageSubresourceLayoutUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetImageSubresourceLayout)
-
-{-# NOINLINE vkGetImageSubresourceLayoutUnsafe #-}
-##endif
-
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
---
--- or less efficient:
---
--- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
---
--- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
---           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetImageSubresourceLayout"
-               vkGetImageSubresourceLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkImage -- ^ image
-                         ->
-                   Ptr VkImageSubresource -- ^ pSubresource
-                                          -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                     -> IO ()
-
-##else
-vkGetImageSubresourceLayoutSafe ::
-                                VkDevice -- ^ device
-                                         ->
-                                  VkImage -- ^ image
-                                          ->
-                                    Ptr VkImageSubresource -- ^ pSubresource
-                                                           -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                                      -> IO ()
-vkGetImageSubresourceLayoutSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageSubresourceLayout)
-
-{-# NOINLINE vkGetImageSubresourceLayoutSafe #-}
-##endif
-
--- |
--- > void vkGetImageSubresourceLayout
--- >     ( VkDevice device
--- >     , VkImage image
--- >     , const VkImageSubresource* pSubresource
--- >     , VkSubresourceLayout* pLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
---
--- or less efficient:
---
--- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
---
--- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
---           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
---
-vkGetImageSubresourceLayout ::
-                            VkDevice -- ^ device
-                                     ->
-                              VkImage -- ^ image
-                                      ->
-                                Ptr VkImageSubresource -- ^ pSubresource
-                                                       -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                                                  -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetImageSubresourceLayout = vkGetImageSubresourceLayoutUnsafe
-##else
-vkGetImageSubresourceLayout = vkGetImageSubresourceLayoutSafe
-
-##endif
-{-# INLINE vkGetImageSubresourceLayout #-}
-
--- | > void vkGetImageSubresourceLayout
---   >     ( VkDevice device
---   >     , VkImage image
---   >     , const VkImageSubresource* pSubresource
---   >     , VkSubresourceLayout* pLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
-type HS_vkGetImageSubresourceLayout =
-     VkDevice -- ^ device
-              ->
-       VkImage -- ^ image
-               ->
-         Ptr VkImageSubresource -- ^ pSubresource
-                                -> Ptr VkSubresourceLayout -- ^ pLayout
-                                                           -> IO ()
-
-type PFN_vkGetImageSubresourceLayout =
-     FunPtr HS_vkGetImageSubresourceLayout
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageSubresourceLayoutUnsafe ::
-               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageSubresourceLayoutSafe ::
-               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
-
-instance VulkanProc "vkGetImageSubresourceLayout" where
-        type VkProcType "vkGetImageSubresourceLayout" =
-             HS_vkGetImageSubresourceLayout
-        vkProcSymbol = _VkGetImageSubresourceLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetImageSubresourceLayoutUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageSubresourceLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateImageView :: CString
-
-pattern VkCreateImageView <- (is_VkCreateImageView -> True)
-  where VkCreateImageView = _VkCreateImageView
-
-{-# INLINE _VkCreateImageView #-}
-
-_VkCreateImageView :: CString
-_VkCreateImageView = Ptr "vkCreateImageView\NUL"##
-
-{-# INLINE is_VkCreateImageView #-}
-
-is_VkCreateImageView :: CString -> Bool
-is_VkCreateImageView = (EQ ==) . cmpCStrings _VkCreateImageView
-
-type VkCreateImageView = "vkCreateImageView"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
---
--- or less efficient:
---
--- > myCreateImageView <- vkGetProc @VkCreateImageView
---
--- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
---           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateImageView"
-               vkCreateImageViewUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImageView -- ^ pView
-                                                                -> IO VkResult
-
-##else
-vkCreateImageViewUnsafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                                    ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkImageView -- ^ pView
-                                                                         -> IO VkResult
-vkCreateImageViewUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateImageView)
-
-{-# NOINLINE vkCreateImageViewUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
---
--- or less efficient:
---
--- > myCreateImageView <- vkGetProc @VkCreateImageView
---
--- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
---           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateImageView" vkCreateImageViewSafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                           ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkImageView -- ^ pView
-                                                                -> IO VkResult
-
-##else
-vkCreateImageViewSafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                                  ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkImageView -- ^ pView
-                                                                       -> IO VkResult
-vkCreateImageViewSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImageView)
-
-{-# NOINLINE vkCreateImageViewSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateImageView
--- >     ( VkDevice device
--- >     , const VkImageViewCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkImageView* pView
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
---
--- or less efficient:
---
--- > myCreateImageView <- vkGetProc @VkCreateImageView
---
--- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
---           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
---
-vkCreateImageView ::
-                  VkDevice -- ^ device
-                           ->
-                    Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                              ->
-                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                -> Ptr VkImageView -- ^ pView
-                                                                   -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateImageView = vkCreateImageViewUnsafe
-##else
-vkCreateImageView = vkCreateImageViewSafe
-
-##endif
-{-# INLINE vkCreateImageView #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateImageView
---   >     ( VkDevice device
---   >     , const VkImageViewCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkImageView* pView
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
-type HS_vkCreateImageView =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageViewCreateInfo -- ^ pCreateInfo
-                                 ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkImageView -- ^ pView
-                                                      -> IO VkResult
-
-type PFN_vkCreateImageView = FunPtr HS_vkCreateImageView
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateImageViewUnsafe
-               :: PFN_vkCreateImageView -> HS_vkCreateImageView
-
-foreign import ccall safe "dynamic" unwrapVkCreateImageViewSafe ::
-               PFN_vkCreateImageView -> HS_vkCreateImageView
-
-instance VulkanProc "vkCreateImageView" where
-        type VkProcType "vkCreateImageView" = HS_vkCreateImageView
-        vkProcSymbol = _VkCreateImageView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateImageViewUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateImageViewSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyImageView :: CString
-
-pattern VkDestroyImageView <- (is_VkDestroyImageView -> True)
-  where VkDestroyImageView = _VkDestroyImageView
-
-{-# INLINE _VkDestroyImageView #-}
-
-_VkDestroyImageView :: CString
-_VkDestroyImageView = Ptr "vkDestroyImageView\NUL"##
-
-{-# INLINE is_VkDestroyImageView #-}
-
-is_VkDestroyImageView :: CString -> Bool
-is_VkDestroyImageView = (EQ ==) . cmpCStrings _VkDestroyImageView
-
-type VkDestroyImageView = "vkDestroyImageView"
-
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
---
--- or less efficient:
---
--- > myDestroyImageView <- vkGetProc @VkDestroyImageView
---
--- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
---           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyImageView"
-               vkDestroyImageViewUnsafe ::
-               VkDevice -- ^ device
-                        -> VkImageView -- ^ imageView
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyImageViewUnsafe ::
-                         VkDevice -- ^ device
-                                  -> VkImageView -- ^ imageView
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyImageViewUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyImageView)
-
-{-# NOINLINE vkDestroyImageViewUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
---
--- or less efficient:
---
--- > myDestroyImageView <- vkGetProc @VkDestroyImageView
---
--- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
---           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyImageView"
-               vkDestroyImageViewSafe ::
-               VkDevice -- ^ device
-                        -> VkImageView -- ^ imageView
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyImageViewSafe ::
-                       VkDevice -- ^ device
-                                -> VkImageView -- ^ imageView
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyImageViewSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImageView)
-
-{-# NOINLINE vkDestroyImageViewSafe #-}
-##endif
-
--- |
--- > void vkDestroyImageView
--- >     ( VkDevice device
--- >     , VkImageView imageView
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
---
--- or less efficient:
---
--- > myDestroyImageView <- vkGetProc @VkDestroyImageView
---
--- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
---           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
---
-vkDestroyImageView ::
-                   VkDevice -- ^ device
-                            -> VkImageView -- ^ imageView
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyImageView = vkDestroyImageViewUnsafe
-##else
-vkDestroyImageView = vkDestroyImageViewSafe
-
-##endif
-{-# INLINE vkDestroyImageView #-}
-
--- | > void vkDestroyImageView
---   >     ( VkDevice device
---   >     , VkImageView imageView
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
-type HS_vkDestroyImageView =
-     VkDevice -- ^ device
-              -> VkImageView -- ^ imageView
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyImageView = FunPtr HS_vkDestroyImageView
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyImageViewUnsafe ::
-               PFN_vkDestroyImageView -> HS_vkDestroyImageView
-
-foreign import ccall safe "dynamic" unwrapVkDestroyImageViewSafe ::
-               PFN_vkDestroyImageView -> HS_vkDestroyImageView
-
-instance VulkanProc "vkDestroyImageView" where
-        type VkProcType "vkDestroyImageView" = HS_vkDestroyImageView
-        vkProcSymbol = _VkDestroyImageView
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyImageViewUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyImageViewSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateShaderModule :: CString
-
-pattern VkCreateShaderModule <- (is_VkCreateShaderModule -> True)
-  where VkCreateShaderModule = _VkCreateShaderModule
-
-{-# INLINE _VkCreateShaderModule #-}
-
-_VkCreateShaderModule :: CString
-_VkCreateShaderModule = Ptr "vkCreateShaderModule\NUL"##
-
-{-# INLINE is_VkCreateShaderModule #-}
-
-is_VkCreateShaderModule :: CString -> Bool
-is_VkCreateShaderModule
-  = (EQ ==) . cmpCStrings _VkCreateShaderModule
-
-type VkCreateShaderModule = "vkCreateShaderModule"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
---
--- or less efficient:
---
--- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
---
--- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
---           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateShaderModule"
-               vkCreateShaderModuleUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                              ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                   -> IO VkResult
-
-##else
-vkCreateShaderModuleUnsafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                                          ->
-                               Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                               -> IO VkResult
-vkCreateShaderModuleUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateShaderModule)
-
-{-# NOINLINE vkCreateShaderModuleUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
---
--- or less efficient:
---
--- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
---
--- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
---           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateShaderModule"
-               vkCreateShaderModuleSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                              ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                   -> IO VkResult
-
-##else
-vkCreateShaderModuleSafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                                        ->
-                             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                             -> IO VkResult
-vkCreateShaderModuleSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateShaderModule)
-
-{-# NOINLINE vkCreateShaderModuleSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateShaderModule
--- >     ( VkDevice device
--- >     , const VkShaderModuleCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkShaderModule* pShaderModule
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
---
--- or less efficient:
---
--- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
---
--- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
---           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
---
-vkCreateShaderModule ::
-                     VkDevice -- ^ device
-                              ->
-                       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                                    ->
-                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                   -> Ptr VkShaderModule -- ^ pShaderModule
-                                                                         -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateShaderModule = vkCreateShaderModuleUnsafe
-##else
-vkCreateShaderModule = vkCreateShaderModuleSafe
-
-##endif
-{-# INLINE vkCreateShaderModule #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateShaderModule
---   >     ( VkDevice device
---   >     , const VkShaderModuleCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkShaderModule* pShaderModule
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
-type HS_vkCreateShaderModule =
-     VkDevice -- ^ device
-              ->
-       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
-                                    ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkShaderModule -- ^ pShaderModule
-                                                         -> IO VkResult
-
-type PFN_vkCreateShaderModule = FunPtr HS_vkCreateShaderModule
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateShaderModuleUnsafe ::
-               PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
-
-foreign import ccall safe "dynamic" unwrapVkCreateShaderModuleSafe
-               :: PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
-
-instance VulkanProc "vkCreateShaderModule" where
-        type VkProcType "vkCreateShaderModule" = HS_vkCreateShaderModule
-        vkProcSymbol = _VkCreateShaderModule
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateShaderModuleUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateShaderModuleSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyShaderModule :: CString
-
-pattern VkDestroyShaderModule <- (is_VkDestroyShaderModule -> True)
-  where VkDestroyShaderModule = _VkDestroyShaderModule
-
-{-# INLINE _VkDestroyShaderModule #-}
-
-_VkDestroyShaderModule :: CString
-_VkDestroyShaderModule = Ptr "vkDestroyShaderModule\NUL"##
-
-{-# INLINE is_VkDestroyShaderModule #-}
-
-is_VkDestroyShaderModule :: CString -> Bool
-is_VkDestroyShaderModule
-  = (EQ ==) . cmpCStrings _VkDestroyShaderModule
-
-type VkDestroyShaderModule = "vkDestroyShaderModule"
-
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
---
--- or less efficient:
---
--- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
---
--- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
---           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyShaderModule"
-               vkDestroyShaderModuleUnsafe ::
-               VkDevice -- ^ device
-                        -> VkShaderModule -- ^ shaderModule
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkDestroyShaderModuleUnsafe ::
-                            VkDevice -- ^ device
-                                     -> VkShaderModule -- ^ shaderModule
-                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                    -> IO ()
-vkDestroyShaderModuleUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyShaderModule)
-
-{-# NOINLINE vkDestroyShaderModuleUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
---
--- or less efficient:
---
--- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
---
--- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
---           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyShaderModule"
-               vkDestroyShaderModuleSafe ::
-               VkDevice -- ^ device
-                        -> VkShaderModule -- ^ shaderModule
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-##else
-vkDestroyShaderModuleSafe ::
-                          VkDevice -- ^ device
-                                   -> VkShaderModule -- ^ shaderModule
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyShaderModuleSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyShaderModule)
-
-{-# NOINLINE vkDestroyShaderModuleSafe #-}
-##endif
-
--- |
--- > void vkDestroyShaderModule
--- >     ( VkDevice device
--- >     , VkShaderModule shaderModule
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
---
--- or less efficient:
---
--- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
---
--- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
---           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
---
-vkDestroyShaderModule ::
-                      VkDevice -- ^ device
-                               -> VkShaderModule -- ^ shaderModule
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyShaderModule = vkDestroyShaderModuleUnsafe
-##else
-vkDestroyShaderModule = vkDestroyShaderModuleSafe
-
-##endif
-{-# INLINE vkDestroyShaderModule #-}
-
--- | > void vkDestroyShaderModule
---   >     ( VkDevice device
---   >     , VkShaderModule shaderModule
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
-type HS_vkDestroyShaderModule =
-     VkDevice -- ^ device
-              -> VkShaderModule -- ^ shaderModule
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkDestroyShaderModule = FunPtr HS_vkDestroyShaderModule
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyShaderModuleUnsafe ::
-               PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
-
-foreign import ccall safe "dynamic" unwrapVkDestroyShaderModuleSafe
-               :: PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
-
-instance VulkanProc "vkDestroyShaderModule" where
-        type VkProcType "vkDestroyShaderModule" = HS_vkDestroyShaderModule
-        vkProcSymbol = _VkDestroyShaderModule
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyShaderModuleUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyShaderModuleSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreatePipelineCache :: CString
-
-pattern VkCreatePipelineCache <- (is_VkCreatePipelineCache -> True)
-  where VkCreatePipelineCache = _VkCreatePipelineCache
-
-{-# INLINE _VkCreatePipelineCache #-}
-
-_VkCreatePipelineCache :: CString
-_VkCreatePipelineCache = Ptr "vkCreatePipelineCache\NUL"##
-
-{-# INLINE is_VkCreatePipelineCache #-}
-
-is_VkCreatePipelineCache :: CString -> Bool
-is_VkCreatePipelineCache
-  = (EQ ==) . cmpCStrings _VkCreatePipelineCache
-
-type VkCreatePipelineCache = "vkCreatePipelineCache"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
---
--- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
---           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreatePipelineCache"
-               vkCreatePipelineCacheUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                               ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                    -> IO VkResult
-
-##else
-vkCreatePipelineCacheUnsafe ::
-                            VkDevice -- ^ device
-                                     ->
-                              Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                                            ->
-                                Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                                 -> IO VkResult
-vkCreatePipelineCacheUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreatePipelineCache)
-
-{-# NOINLINE vkCreatePipelineCacheUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
---
--- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
---           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreatePipelineCache"
-               vkCreatePipelineCacheSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                               ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                    -> IO VkResult
-
-##else
-vkCreatePipelineCacheSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                                          ->
-                              Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                               -> IO VkResult
-vkCreatePipelineCacheSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineCache)
-
-{-# NOINLINE vkCreatePipelineCacheSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineCache
--- >     ( VkDevice device
--- >     , const VkPipelineCacheCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineCache* pPipelineCache
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
---
--- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
---           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
---
-vkCreatePipelineCache ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                                      ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                                           -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreatePipelineCache = vkCreatePipelineCacheUnsafe
-##else
-vkCreatePipelineCache = vkCreatePipelineCacheSafe
-
-##endif
-{-# INLINE vkCreatePipelineCache #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreatePipelineCache
---   >     ( VkDevice device
---   >     , const VkPipelineCacheCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipelineCache* pPipelineCache
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
-type HS_vkCreatePipelineCache =
-     VkDevice -- ^ device
-              ->
-       Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
-                                     ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkPipelineCache -- ^ pPipelineCache
-                                                          -> IO VkResult
-
-type PFN_vkCreatePipelineCache = FunPtr HS_vkCreatePipelineCache
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreatePipelineCacheUnsafe ::
-               PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
-
-foreign import ccall safe "dynamic" unwrapVkCreatePipelineCacheSafe
-               :: PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
-
-instance VulkanProc "vkCreatePipelineCache" where
-        type VkProcType "vkCreatePipelineCache" = HS_vkCreatePipelineCache
-        vkProcSymbol = _VkCreatePipelineCache
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreatePipelineCacheUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreatePipelineCacheSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyPipelineCache :: CString
-
-pattern VkDestroyPipelineCache <-
-        (is_VkDestroyPipelineCache -> True)
-  where VkDestroyPipelineCache = _VkDestroyPipelineCache
-
-{-# INLINE _VkDestroyPipelineCache #-}
-
-_VkDestroyPipelineCache :: CString
-_VkDestroyPipelineCache = Ptr "vkDestroyPipelineCache\NUL"##
-
-{-# INLINE is_VkDestroyPipelineCache #-}
-
-is_VkDestroyPipelineCache :: CString -> Bool
-is_VkDestroyPipelineCache
-  = (EQ ==) . cmpCStrings _VkDestroyPipelineCache
-
-type VkDestroyPipelineCache = "vkDestroyPipelineCache"
-
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
---
--- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
---           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyPipelineCache"
-               vkDestroyPipelineCacheUnsafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-
-##else
-vkDestroyPipelineCacheUnsafe ::
-                             VkDevice -- ^ device
-                                      -> VkPipelineCache -- ^ pipelineCache
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyPipelineCacheUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipelineCache)
-
-{-# NOINLINE vkDestroyPipelineCacheUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
---
--- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
---           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyPipelineCache"
-               vkDestroyPipelineCacheSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-
-##else
-vkDestroyPipelineCacheSafe ::
-                           VkDevice -- ^ device
-                                    -> VkPipelineCache -- ^ pipelineCache
-                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                    -> IO ()
-vkDestroyPipelineCacheSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineCache)
-
-{-# NOINLINE vkDestroyPipelineCacheSafe #-}
-##endif
-
--- |
--- > void vkDestroyPipelineCache
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
---
--- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
---           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
---
-vkDestroyPipelineCache ::
-                       VkDevice -- ^ device
-                                -> VkPipelineCache -- ^ pipelineCache
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyPipelineCache = vkDestroyPipelineCacheUnsafe
-##else
-vkDestroyPipelineCache = vkDestroyPipelineCacheSafe
-
-##endif
-{-# INLINE vkDestroyPipelineCache #-}
-
--- | > void vkDestroyPipelineCache
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
-type HS_vkDestroyPipelineCache =
-     VkDevice -- ^ device
-              -> VkPipelineCache -- ^ pipelineCache
-                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              -> IO ()
-
-type PFN_vkDestroyPipelineCache = FunPtr HS_vkDestroyPipelineCache
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyPipelineCacheUnsafe ::
-               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyPipelineCacheSafe ::
-               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
-
-instance VulkanProc "vkDestroyPipelineCache" where
-        type VkProcType "vkDestroyPipelineCache" =
-             HS_vkDestroyPipelineCache
-        vkProcSymbol = _VkDestroyPipelineCache
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineCacheUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineCacheSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPipelineCacheData :: CString
-
-pattern VkGetPipelineCacheData <-
-        (is_VkGetPipelineCacheData -> True)
-  where VkGetPipelineCacheData = _VkGetPipelineCacheData
-
-{-# INLINE _VkGetPipelineCacheData #-}
-
-_VkGetPipelineCacheData :: CString
-_VkGetPipelineCacheData = Ptr "vkGetPipelineCacheData\NUL"##
-
-{-# INLINE is_VkGetPipelineCacheData #-}
-
-is_VkGetPipelineCacheData :: CString -> Bool
-is_VkGetPipelineCacheData
-  = (EQ ==) . cmpCStrings _VkGetPipelineCacheData
-
-type VkGetPipelineCacheData = "vkGetPipelineCacheData"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
---
--- or less efficient:
---
--- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
---
--- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
---           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetPipelineCacheData"
-               vkGetPipelineCacheDataUnsafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr CSize -- ^ pDataSize
-                                                        -> Ptr Void -- ^ pData
-                                                                    -> IO VkResult
-
-##else
-vkGetPipelineCacheDataUnsafe ::
-                             VkDevice -- ^ device
-                                      -> VkPipelineCache -- ^ pipelineCache
-                                                         -> Ptr CSize -- ^ pDataSize
-                                                                      -> Ptr Void -- ^ pData
-                                                                                  -> IO VkResult
-vkGetPipelineCacheDataUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetPipelineCacheData)
-
-{-# NOINLINE vkGetPipelineCacheDataUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
---
--- or less efficient:
---
--- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
---
--- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
---           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetPipelineCacheData"
-               vkGetPipelineCacheDataSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineCache -- ^ pipelineCache
-                                           -> Ptr CSize -- ^ pDataSize
-                                                        -> Ptr Void -- ^ pData
-                                                                    -> IO VkResult
-
-##else
-vkGetPipelineCacheDataSafe ::
-                           VkDevice -- ^ device
-                                    -> VkPipelineCache -- ^ pipelineCache
-                                                       -> Ptr CSize -- ^ pDataSize
-                                                                    -> Ptr Void -- ^ pData
-                                                                                -> IO VkResult
-vkGetPipelineCacheDataSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetPipelineCacheData)
-
-{-# NOINLINE vkGetPipelineCacheDataSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkGetPipelineCacheData
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , size_t* pDataSize
--- >     , void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
---
--- or less efficient:
---
--- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
---
--- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
---           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
---
-vkGetPipelineCacheData ::
-                       VkDevice -- ^ device
-                                -> VkPipelineCache -- ^ pipelineCache
-                                                   -> Ptr CSize -- ^ pDataSize
-                                                                -> Ptr Void -- ^ pData
-                                                                            -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetPipelineCacheData = vkGetPipelineCacheDataUnsafe
-##else
-vkGetPipelineCacheData = vkGetPipelineCacheDataSafe
-
-##endif
-{-# INLINE vkGetPipelineCacheData #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkGetPipelineCacheData
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , size_t* pDataSize
---   >     , void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
-type HS_vkGetPipelineCacheData =
-     VkDevice -- ^ device
-              -> VkPipelineCache -- ^ pipelineCache
-                                 -> Ptr CSize -- ^ pDataSize
-                                              -> Ptr Void -- ^ pData
-                                                          -> IO VkResult
-
-type PFN_vkGetPipelineCacheData = FunPtr HS_vkGetPipelineCacheData
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPipelineCacheDataUnsafe ::
-               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPipelineCacheDataSafe ::
-               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
-
-instance VulkanProc "vkGetPipelineCacheData" where
-        type VkProcType "vkGetPipelineCacheData" =
-             HS_vkGetPipelineCacheData
-        vkProcSymbol = _VkGetPipelineCacheData
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetPipelineCacheDataUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPipelineCacheDataSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkMergePipelineCaches :: CString
-
-pattern VkMergePipelineCaches <- (is_VkMergePipelineCaches -> True)
-  where VkMergePipelineCaches = _VkMergePipelineCaches
-
-{-# INLINE _VkMergePipelineCaches #-}
-
-_VkMergePipelineCaches :: CString
-_VkMergePipelineCaches = Ptr "vkMergePipelineCaches\NUL"##
-
-{-# INLINE is_VkMergePipelineCaches #-}
-
-is_VkMergePipelineCaches :: CString -> Bool
-is_VkMergePipelineCaches
-  = (EQ ==) . cmpCStrings _VkMergePipelineCaches
-
-type VkMergePipelineCaches = "vkMergePipelineCaches"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
---
--- or less efficient:
---
--- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
---
--- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
---           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkMergePipelineCaches"
-               vkMergePipelineCachesUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ dstCache
-                                 -> Word32 -- ^ srcCacheCount
-                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                  -> IO VkResult
-
-##else
-vkMergePipelineCachesUnsafe ::
-                            VkDevice -- ^ device
-                                     ->
-                              VkPipelineCache -- ^ dstCache
-                                              -> Word32 -- ^ srcCacheCount
-                                                        -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                               -> IO VkResult
-vkMergePipelineCachesUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkMergePipelineCaches)
-
-{-# NOINLINE vkMergePipelineCachesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
---
--- or less efficient:
---
--- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
---
--- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
---           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkMergePipelineCaches"
-               vkMergePipelineCachesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ dstCache
-                                 -> Word32 -- ^ srcCacheCount
-                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                  -> IO VkResult
-
-##else
-vkMergePipelineCachesSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkPipelineCache -- ^ dstCache
-                                            -> Word32 -- ^ srcCacheCount
-                                                      -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                             -> IO VkResult
-vkMergePipelineCachesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkMergePipelineCaches)
-
-{-# NOINLINE vkMergePipelineCachesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkMergePipelineCaches
--- >     ( VkDevice device
--- >     , VkPipelineCache dstCache
--- >     , uint32_t srcCacheCount
--- >     , const VkPipelineCache* pSrcCaches
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
---
--- or less efficient:
---
--- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
---
--- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
---           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
---
-vkMergePipelineCaches ::
-                      VkDevice -- ^ device
-                               ->
-                        VkPipelineCache -- ^ dstCache
-                                        -> Word32 -- ^ srcCacheCount
-                                                  -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                                         -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkMergePipelineCaches = vkMergePipelineCachesUnsafe
-##else
-vkMergePipelineCaches = vkMergePipelineCachesSafe
-
-##endif
-{-# INLINE vkMergePipelineCaches #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkMergePipelineCaches
---   >     ( VkDevice device
---   >     , VkPipelineCache dstCache
---   >     , uint32_t srcCacheCount
---   >     , const VkPipelineCache* pSrcCaches
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
-type HS_vkMergePipelineCaches =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ dstCache
-                       -> Word32 -- ^ srcCacheCount
-                                 -> Ptr VkPipelineCache -- ^ pSrcCaches
-                                                        -> IO VkResult
-
-type PFN_vkMergePipelineCaches = FunPtr HS_vkMergePipelineCaches
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkMergePipelineCachesUnsafe ::
-               PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
-
-foreign import ccall safe "dynamic" unwrapVkMergePipelineCachesSafe
-               :: PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
-
-instance VulkanProc "vkMergePipelineCaches" where
-        type VkProcType "vkMergePipelineCaches" = HS_vkMergePipelineCaches
-        vkProcSymbol = _VkMergePipelineCaches
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkMergePipelineCachesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkMergePipelineCachesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateGraphicsPipelines :: CString
-
-pattern VkCreateGraphicsPipelines <-
-        (is_VkCreateGraphicsPipelines -> True)
-  where VkCreateGraphicsPipelines = _VkCreateGraphicsPipelines
-
-{-# INLINE _VkCreateGraphicsPipelines #-}
-
-_VkCreateGraphicsPipelines :: CString
-_VkCreateGraphicsPipelines = Ptr "vkCreateGraphicsPipelines\NUL"##
-
-{-# INLINE is_VkCreateGraphicsPipelines #-}
-
-is_VkCreateGraphicsPipelines :: CString -> Bool
-is_VkCreateGraphicsPipelines
-  = (EQ ==) . cmpCStrings _VkCreateGraphicsPipelines
-
-type VkCreateGraphicsPipelines = "vkCreateGraphicsPipelines"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
---
--- or less efficient:
---
--- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
---
--- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
---           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateGraphicsPipelines"
-               vkCreateGraphicsPipelinesUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                      ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
-vkCreateGraphicsPipelinesUnsafe ::
-                                VkDevice -- ^ device
-                                         ->
-                                  VkPipelineCache -- ^ pipelineCache
-                                                  ->
-                                    Word32 -- ^ createInfoCount
-                                           ->
-                                      Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                                       ->
-                                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                  -> Ptr VkPipeline -- ^ pPipelines
-                                                                                    -> IO VkResult
-vkCreateGraphicsPipelinesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCreateGraphicsPipelines)
-
-{-# NOINLINE vkCreateGraphicsPipelinesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
---
--- or less efficient:
---
--- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
---
--- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
---           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateGraphicsPipelines"
-               vkCreateGraphicsPipelinesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                      ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
-vkCreateGraphicsPipelinesSafe ::
-                              VkDevice -- ^ device
-                                       ->
-                                VkPipelineCache -- ^ pipelineCache
-                                                ->
-                                  Word32 -- ^ createInfoCount
-                                         ->
-                                    Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                                     ->
-                                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                -> Ptr VkPipeline -- ^ pPipelines
-                                                                                  -> IO VkResult
-vkCreateGraphicsPipelinesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateGraphicsPipelines)
-
-{-# NOINLINE vkCreateGraphicsPipelinesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateGraphicsPipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
---
--- or less efficient:
---
--- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
---
--- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
---           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
---
-vkCreateGraphicsPipelines ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkPipelineCache -- ^ pipelineCache
-                                            ->
-                              Word32 -- ^ createInfoCount
-                                     ->
-                                Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                                                 ->
-                                  Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> Ptr VkPipeline -- ^ pPipelines
-                                                                              -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateGraphicsPipelines = vkCreateGraphicsPipelinesUnsafe
-##else
-vkCreateGraphicsPipelines = vkCreateGraphicsPipelinesSafe
-
-##endif
-{-# INLINE vkCreateGraphicsPipelines #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateGraphicsPipelines
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , uint32_t createInfoCount
---   >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipeline* pPipelines
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
-type HS_vkCreateGraphicsPipelines =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ pipelineCache
-                       ->
-         Word32 -- ^ createInfoCount
-                ->
-           Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
-                                            ->
-             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                       -> Ptr VkPipeline -- ^ pPipelines
-                                                         -> IO VkResult
-
-type PFN_vkCreateGraphicsPipelines =
-     FunPtr HS_vkCreateGraphicsPipelines
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateGraphicsPipelinesUnsafe ::
-               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateGraphicsPipelinesSafe ::
-               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
-
-instance VulkanProc "vkCreateGraphicsPipelines" where
-        type VkProcType "vkCreateGraphicsPipelines" =
-             HS_vkCreateGraphicsPipelines
-        vkProcSymbol = _VkCreateGraphicsPipelines
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateGraphicsPipelinesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateGraphicsPipelinesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateComputePipelines :: CString
-
-pattern VkCreateComputePipelines <-
-        (is_VkCreateComputePipelines -> True)
-  where VkCreateComputePipelines = _VkCreateComputePipelines
-
-{-# INLINE _VkCreateComputePipelines #-}
-
-_VkCreateComputePipelines :: CString
-_VkCreateComputePipelines = Ptr "vkCreateComputePipelines\NUL"##
-
-{-# INLINE is_VkCreateComputePipelines #-}
-
-is_VkCreateComputePipelines :: CString -> Bool
-is_VkCreateComputePipelines
-  = (EQ ==) . cmpCStrings _VkCreateComputePipelines
-
-type VkCreateComputePipelines = "vkCreateComputePipelines"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
---
--- or less efficient:
---
--- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
---
--- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
---           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateComputePipelines"
-               vkCreateComputePipelinesUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                     ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
-vkCreateComputePipelinesUnsafe ::
-                               VkDevice -- ^ device
-                                        ->
-                                 VkPipelineCache -- ^ pipelineCache
-                                                 ->
-                                   Word32 -- ^ createInfoCount
-                                          ->
-                                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                                     ->
-                                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                                   -> IO VkResult
-vkCreateComputePipelinesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCreateComputePipelines)
-
-{-# NOINLINE vkCreateComputePipelinesUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
---
--- or less efficient:
---
--- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
---
--- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
---           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateComputePipelines"
-               vkCreateComputePipelinesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkPipelineCache -- ^ pipelineCache
-                                 ->
-                   Word32 -- ^ createInfoCount
-                          ->
-                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                     ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkPipeline -- ^ pPipelines
-                                                                   -> IO VkResult
-
-##else
-vkCreateComputePipelinesSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               VkPipelineCache -- ^ pipelineCache
-                                               ->
-                                 Word32 -- ^ createInfoCount
-                                        ->
-                                   Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                                   ->
-                                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> Ptr VkPipeline -- ^ pPipelines
-                                                                                 -> IO VkResult
-vkCreateComputePipelinesSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateComputePipelines)
-
-{-# NOINLINE vkCreateComputePipelinesSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
--- > VkResult vkCreateComputePipelines
--- >     ( VkDevice device
--- >     , VkPipelineCache pipelineCache
--- >     , uint32_t createInfoCount
--- >     , const VkComputePipelineCreateInfo* pCreateInfos
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipeline* pPipelines
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
---
--- or less efficient:
---
--- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
---
--- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
---           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
---
-vkCreateComputePipelines ::
-                         VkDevice -- ^ device
-                                  ->
-                           VkPipelineCache -- ^ pipelineCache
-                                           ->
-                             Word32 -- ^ createInfoCount
-                                    ->
-                               Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                                               ->
-                                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> Ptr VkPipeline -- ^ pPipelines
-                                                                             -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateComputePipelines = vkCreateComputePipelinesUnsafe
-##else
-vkCreateComputePipelines = vkCreateComputePipelinesSafe
-
-##endif
-{-# INLINE vkCreateComputePipelines #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
---
---   > VkResult vkCreateComputePipelines
---   >     ( VkDevice device
---   >     , VkPipelineCache pipelineCache
---   >     , uint32_t createInfoCount
---   >     , const VkComputePipelineCreateInfo* pCreateInfos
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipeline* pPipelines
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
-type HS_vkCreateComputePipelines =
-     VkDevice -- ^ device
-              ->
-       VkPipelineCache -- ^ pipelineCache
-                       ->
-         Word32 -- ^ createInfoCount
-                ->
-           Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
-                                           ->
-             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                       -> Ptr VkPipeline -- ^ pPipelines
-                                                         -> IO VkResult
-
-type PFN_vkCreateComputePipelines =
-     FunPtr HS_vkCreateComputePipelines
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateComputePipelinesUnsafe ::
-               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateComputePipelinesSafe ::
-               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
-
-instance VulkanProc "vkCreateComputePipelines" where
-        type VkProcType "vkCreateComputePipelines" =
-             HS_vkCreateComputePipelines
-        vkProcSymbol = _VkCreateComputePipelines
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateComputePipelinesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateComputePipelinesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyPipeline :: CString
-
-pattern VkDestroyPipeline <- (is_VkDestroyPipeline -> True)
-  where VkDestroyPipeline = _VkDestroyPipeline
-
-{-# INLINE _VkDestroyPipeline #-}
-
-_VkDestroyPipeline :: CString
-_VkDestroyPipeline = Ptr "vkDestroyPipeline\NUL"##
-
-{-# INLINE is_VkDestroyPipeline #-}
-
-is_VkDestroyPipeline :: CString -> Bool
-is_VkDestroyPipeline = (EQ ==) . cmpCStrings _VkDestroyPipeline
-
-type VkDestroyPipeline = "vkDestroyPipeline"
-
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
---
--- or less efficient:
---
--- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
---
--- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
---           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyPipeline"
-               vkDestroyPipelineUnsafe ::
-               VkDevice -- ^ device
-                        -> VkPipeline -- ^ pipeline
-                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                   -> IO ()
-
-##else
-vkDestroyPipelineUnsafe ::
-                        VkDevice -- ^ device
-                                 -> VkPipeline -- ^ pipeline
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-vkDestroyPipelineUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipeline)
-
-{-# NOINLINE vkDestroyPipelineUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
---
--- or less efficient:
---
--- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
---
--- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
---           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyPipeline" vkDestroyPipelineSafe
-               :: VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyPipelineSafe ::
-                      VkDevice -- ^ device
-                               -> VkPipeline -- ^ pipeline
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-vkDestroyPipelineSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipeline)
-
-{-# NOINLINE vkDestroyPipelineSafe #-}
-##endif
-
--- |
--- > void vkDestroyPipeline
--- >     ( VkDevice device
--- >     , VkPipeline pipeline
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
---
--- or less efficient:
---
--- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
---
--- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
---           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
---
-vkDestroyPipeline ::
-                  VkDevice -- ^ device
-                           -> VkPipeline -- ^ pipeline
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyPipeline = vkDestroyPipelineUnsafe
-##else
-vkDestroyPipeline = vkDestroyPipelineSafe
-
-##endif
-{-# INLINE vkDestroyPipeline #-}
-
--- | > void vkDestroyPipeline
---   >     ( VkDevice device
---   >     , VkPipeline pipeline
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
-type HS_vkDestroyPipeline =
-     VkDevice -- ^ device
-              -> VkPipeline -- ^ pipeline
-                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> IO ()
-
-type PFN_vkDestroyPipeline = FunPtr HS_vkDestroyPipeline
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroyPipelineUnsafe
-               :: PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
-
-foreign import ccall safe "dynamic" unwrapVkDestroyPipelineSafe ::
-               PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
-
-instance VulkanProc "vkDestroyPipeline" where
-        type VkProcType "vkDestroyPipeline" = HS_vkDestroyPipeline
-        vkProcSymbol = _VkDestroyPipeline
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreatePipelineLayout :: CString
-
-pattern VkCreatePipelineLayout <-
-        (is_VkCreatePipelineLayout -> True)
-  where VkCreatePipelineLayout = _VkCreatePipelineLayout
-
-{-# INLINE _VkCreatePipelineLayout #-}
-
-_VkCreatePipelineLayout :: CString
-_VkCreatePipelineLayout = Ptr "vkCreatePipelineLayout\NUL"##
-
-{-# INLINE is_VkCreatePipelineLayout #-}
-
-is_VkCreatePipelineLayout :: CString -> Bool
-is_VkCreatePipelineLayout
-  = (EQ ==) . cmpCStrings _VkCreatePipelineLayout
-
-type VkCreatePipelineLayout = "vkCreatePipelineLayout"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
---
--- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
---           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreatePipelineLayout"
-               vkCreatePipelineLayoutUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                     -> IO VkResult
-
-##else
-vkCreatePipelineLayoutUnsafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                              ->
-                                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                                   -> IO VkResult
-vkCreatePipelineLayoutUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreatePipelineLayout)
-
-{-# NOINLINE vkCreatePipelineLayoutUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
---
--- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
---           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreatePipelineLayout"
-               vkCreatePipelineLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                     -> IO VkResult
-
-##else
-vkCreatePipelineLayoutSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                            ->
-                               Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                                 -> IO VkResult
-vkCreatePipelineLayoutSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineLayout)
-
-{-# NOINLINE vkCreatePipelineLayoutSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreatePipelineLayout
--- >     ( VkDevice device
--- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkPipelineLayout* pPipelineLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
---
--- or less efficient:
---
--- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
---
--- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
---           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
---
-vkCreatePipelineLayout ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                                        ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                                             -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreatePipelineLayout = vkCreatePipelineLayoutUnsafe
-##else
-vkCreatePipelineLayout = vkCreatePipelineLayoutSafe
-
-##endif
-{-# INLINE vkCreatePipelineLayout #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreatePipelineLayout
---   >     ( VkDevice device
---   >     , const VkPipelineLayoutCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkPipelineLayout* pPipelineLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
-type HS_vkCreatePipelineLayout =
-     VkDevice -- ^ device
-              ->
-       Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
-                                      ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkPipelineLayout -- ^ pPipelineLayout
-                                                           -> IO VkResult
-
-type PFN_vkCreatePipelineLayout = FunPtr HS_vkCreatePipelineLayout
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreatePipelineLayoutUnsafe ::
-               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreatePipelineLayoutSafe ::
-               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
-
-instance VulkanProc "vkCreatePipelineLayout" where
-        type VkProcType "vkCreatePipelineLayout" =
-             HS_vkCreatePipelineLayout
-        vkProcSymbol = _VkCreatePipelineLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreatePipelineLayoutUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreatePipelineLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyPipelineLayout :: CString
-
-pattern VkDestroyPipelineLayout <-
-        (is_VkDestroyPipelineLayout -> True)
-  where VkDestroyPipelineLayout = _VkDestroyPipelineLayout
-
-{-# INLINE _VkDestroyPipelineLayout #-}
-
-_VkDestroyPipelineLayout :: CString
-_VkDestroyPipelineLayout = Ptr "vkDestroyPipelineLayout\NUL"##
-
-{-# INLINE is_VkDestroyPipelineLayout #-}
-
-is_VkDestroyPipelineLayout :: CString -> Bool
-is_VkDestroyPipelineLayout
-  = (EQ ==) . cmpCStrings _VkDestroyPipelineLayout
-
-type VkDestroyPipelineLayout = "vkDestroyPipelineLayout"
-
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
---
--- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
---           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyPipelineLayout"
-               vkDestroyPipelineLayoutUnsafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineLayout -- ^ pipelineLayout
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
-vkDestroyPipelineLayoutUnsafe ::
-                              VkDevice -- ^ device
-                                       -> VkPipelineLayout -- ^ pipelineLayout
-                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                        -> IO ()
-vkDestroyPipelineLayoutUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipelineLayout)
-
-{-# NOINLINE vkDestroyPipelineLayoutUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
---
--- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
---           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyPipelineLayout"
-               vkDestroyPipelineLayoutSafe ::
-               VkDevice -- ^ device
-                        -> VkPipelineLayout -- ^ pipelineLayout
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
-vkDestroyPipelineLayoutSafe ::
-                            VkDevice -- ^ device
-                                     -> VkPipelineLayout -- ^ pipelineLayout
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyPipelineLayoutSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineLayout)
-
-{-# NOINLINE vkDestroyPipelineLayoutSafe #-}
-##endif
-
--- |
--- > void vkDestroyPipelineLayout
--- >     ( VkDevice device
--- >     , VkPipelineLayout pipelineLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
---
--- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
---           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
---
-vkDestroyPipelineLayout ::
-                        VkDevice -- ^ device
-                                 -> VkPipelineLayout -- ^ pipelineLayout
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyPipelineLayout = vkDestroyPipelineLayoutUnsafe
-##else
-vkDestroyPipelineLayout = vkDestroyPipelineLayoutSafe
-
-##endif
-{-# INLINE vkDestroyPipelineLayout #-}
-
--- | > void vkDestroyPipelineLayout
---   >     ( VkDevice device
---   >     , VkPipelineLayout pipelineLayout
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
-type HS_vkDestroyPipelineLayout =
-     VkDevice -- ^ device
-              -> VkPipelineLayout -- ^ pipelineLayout
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyPipelineLayout =
-     FunPtr HS_vkDestroyPipelineLayout
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyPipelineLayoutUnsafe ::
-               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyPipelineLayoutSafe ::
-               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
-
-instance VulkanProc "vkDestroyPipelineLayout" where
-        type VkProcType "vkDestroyPipelineLayout" =
-             HS_vkDestroyPipelineLayout
-        vkProcSymbol = _VkDestroyPipelineLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineLayoutUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyPipelineLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateSampler :: CString
-
-pattern VkCreateSampler <- (is_VkCreateSampler -> True)
-  where VkCreateSampler = _VkCreateSampler
-
-{-# INLINE _VkCreateSampler #-}
-
-_VkCreateSampler :: CString
-_VkCreateSampler = Ptr "vkCreateSampler\NUL"##
-
-{-# INLINE is_VkCreateSampler #-}
-
-is_VkCreateSampler :: CString -> Bool
-is_VkCreateSampler = (EQ ==) . cmpCStrings _VkCreateSampler
-
-type VkCreateSampler = "vkCreateSampler"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
---
--- or less efficient:
---
--- > myCreateSampler <- vkGetProc @VkCreateSampler
---
--- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
---           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateSampler" vkCreateSamplerUnsafe
-               ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                         ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSampler -- ^ pSampler
-                                                              -> IO VkResult
-
-##else
-vkCreateSamplerUnsafe ::
-                      VkDevice -- ^ device
-                               ->
-                        Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                                ->
-                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                    -> Ptr VkSampler -- ^ pSampler
-                                                                     -> IO VkResult
-vkCreateSamplerUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateSampler)
-
-{-# NOINLINE vkCreateSamplerUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
---
--- or less efficient:
---
--- > myCreateSampler <- vkGetProc @VkCreateSampler
---
--- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
---           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateSampler" vkCreateSamplerSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                         ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkSampler -- ^ pSampler
-                                                              -> IO VkResult
-
-##else
-vkCreateSamplerSafe ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                              ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkSampler -- ^ pSampler
-                                                                   -> IO VkResult
-vkCreateSamplerSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSampler)
-
-{-# NOINLINE vkCreateSamplerSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
--- > VkResult vkCreateSampler
--- >     ( VkDevice device
--- >     , const VkSamplerCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSampler* pSampler
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
---
--- or less efficient:
---
--- > myCreateSampler <- vkGetProc @VkCreateSampler
---
--- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
---           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
---
-vkCreateSampler ::
-                VkDevice -- ^ device
-                         ->
-                  Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                                          ->
-                    Ptr VkAllocationCallbacks -- ^ pAllocator
-                                              -> Ptr VkSampler -- ^ pSampler
-                                                               -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateSampler = vkCreateSamplerUnsafe
-##else
-vkCreateSampler = vkCreateSamplerSafe
-
-##endif
-{-# INLINE vkCreateSampler #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
---
---   > VkResult vkCreateSampler
---   >     ( VkDevice device
---   >     , const VkSamplerCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSampler* pSampler
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
-type HS_vkCreateSampler =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSamplerCreateInfo -- ^ pCreateInfo
-                               ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkSampler -- ^ pSampler
-                                                    -> IO VkResult
-
-type PFN_vkCreateSampler = FunPtr HS_vkCreateSampler
-
-foreign import ccall unsafe "dynamic" unwrapVkCreateSamplerUnsafe
-               :: PFN_vkCreateSampler -> HS_vkCreateSampler
-
-foreign import ccall safe "dynamic" unwrapVkCreateSamplerSafe ::
-               PFN_vkCreateSampler -> HS_vkCreateSampler
-
-instance VulkanProc "vkCreateSampler" where
-        type VkProcType "vkCreateSampler" = HS_vkCreateSampler
-        vkProcSymbol = _VkCreateSampler
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateSamplerUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSamplerSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroySampler :: CString
-
-pattern VkDestroySampler <- (is_VkDestroySampler -> True)
-  where VkDestroySampler = _VkDestroySampler
-
-{-# INLINE _VkDestroySampler #-}
-
-_VkDestroySampler :: CString
-_VkDestroySampler = Ptr "vkDestroySampler\NUL"##
-
-{-# INLINE is_VkDestroySampler #-}
-
-is_VkDestroySampler :: CString -> Bool
-is_VkDestroySampler = (EQ ==) . cmpCStrings _VkDestroySampler
-
-type VkDestroySampler = "vkDestroySampler"
-
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
---
--- or less efficient:
---
--- > myDestroySampler <- vkGetProc @VkDestroySampler
---
--- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
---           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroySampler"
-               vkDestroySamplerUnsafe ::
-               VkDevice -- ^ device
-                        -> VkSampler -- ^ sampler
-                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                  -> IO ()
-
-##else
-vkDestroySamplerUnsafe ::
-                       VkDevice -- ^ device
-                                -> VkSampler -- ^ sampler
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-vkDestroySamplerUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroySampler)
-
-{-# NOINLINE vkDestroySamplerUnsafe #-}
-##endif
-
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
---
--- or less efficient:
---
--- > myDestroySampler <- vkGetProc @VkDestroySampler
---
--- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
---           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroySampler" vkDestroySamplerSafe
-               :: VkDevice -- ^ device
-                           -> VkSampler -- ^ sampler
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroySamplerSafe ::
-                     VkDevice -- ^ device
-                              -> VkSampler -- ^ sampler
-                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                        -> IO ()
-vkDestroySamplerSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySampler)
-
-{-# NOINLINE vkDestroySamplerSafe #-}
-##endif
-
--- |
--- > void vkDestroySampler
--- >     ( VkDevice device
--- >     , VkSampler sampler
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
---
--- or less efficient:
---
--- > myDestroySampler <- vkGetProc @VkDestroySampler
---
--- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
---           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
---
-vkDestroySampler ::
-                 VkDevice -- ^ device
-                          -> VkSampler -- ^ sampler
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroySampler = vkDestroySamplerUnsafe
-##else
-vkDestroySampler = vkDestroySamplerSafe
-
-##endif
-{-# INLINE vkDestroySampler #-}
-
--- | > void vkDestroySampler
---   >     ( VkDevice device
---   >     , VkSampler sampler
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
-type HS_vkDestroySampler =
-     VkDevice -- ^ device
-              -> VkSampler -- ^ sampler
-                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> IO ()
-
-type PFN_vkDestroySampler = FunPtr HS_vkDestroySampler
-
-foreign import ccall unsafe "dynamic" unwrapVkDestroySamplerUnsafe
-               :: PFN_vkDestroySampler -> HS_vkDestroySampler
-
-foreign import ccall safe "dynamic" unwrapVkDestroySamplerSafe ::
-               PFN_vkDestroySampler -> HS_vkDestroySampler
-
-instance VulkanProc "vkDestroySampler" where
-        type VkProcType "vkDestroySampler" = HS_vkDestroySampler
-        vkProcSymbol = _VkDestroySampler
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroySamplerUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySamplerSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateDescriptorSetLayout :: CString
-
-pattern VkCreateDescriptorSetLayout <-
-        (is_VkCreateDescriptorSetLayout -> True)
-  where VkCreateDescriptorSetLayout = _VkCreateDescriptorSetLayout
-
-{-# INLINE _VkCreateDescriptorSetLayout #-}
-
-_VkCreateDescriptorSetLayout :: CString
-_VkCreateDescriptorSetLayout
-  = Ptr "vkCreateDescriptorSetLayout\NUL"##
-
-{-# INLINE is_VkCreateDescriptorSetLayout #-}
-
-is_VkCreateDescriptorSetLayout :: CString -> Bool
-is_VkCreateDescriptorSetLayout
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorSetLayout
-
-type VkCreateDescriptorSetLayout = "vkCreateDescriptorSetLayout"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
---
--- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
---           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateDescriptorSetLayout"
-               vkCreateDescriptorSetLayoutUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                               -> IO VkResult
-
-##else
-vkCreateDescriptorSetLayoutUnsafe ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                        ->
-                                      Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                ->
-                                        Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                                                  -> IO VkResult
-vkCreateDescriptorSetLayoutUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCreateDescriptorSetLayout)
-
-{-# NOINLINE vkCreateDescriptorSetLayoutUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
---
--- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
---           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateDescriptorSetLayout"
-               vkCreateDescriptorSetLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                               -> IO VkResult
-
-##else
-vkCreateDescriptorSetLayoutSafe ::
-                                VkDevice -- ^ device
-                                         ->
-                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                      ->
-                                    Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                              ->
-                                      Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                                                -> IO VkResult
-vkCreateDescriptorSetLayoutSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCreateDescriptorSetLayout)
-
-{-# NOINLINE vkCreateDescriptorSetLayoutSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorSetLayout
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorSetLayout* pSetLayout
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
---
--- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
---           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
---
-vkCreateDescriptorSetLayout ::
-                            VkDevice -- ^ device
-                                     ->
-                              Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                  ->
-                                Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          ->
-                                  Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                                            -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateDescriptorSetLayout = vkCreateDescriptorSetLayoutUnsafe
-##else
-vkCreateDescriptorSetLayout = vkCreateDescriptorSetLayoutSafe
-
-##endif
-{-# INLINE vkCreateDescriptorSetLayout #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateDescriptorSetLayout
---   >     ( VkDevice device
---   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorSetLayout* pSetLayout
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
-type HS_vkCreateDescriptorSetLayout =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                           ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkDescriptorSetLayout -- ^ pSetLayout
-                                     -> IO VkResult
-
-type PFN_vkCreateDescriptorSetLayout =
-     FunPtr HS_vkCreateDescriptorSetLayout
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDescriptorSetLayoutUnsafe ::
-               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateDescriptorSetLayoutSafe ::
-               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
-
-instance VulkanProc "vkCreateDescriptorSetLayout" where
-        type VkProcType "vkCreateDescriptorSetLayout" =
-             HS_vkCreateDescriptorSetLayout
-        vkProcSymbol = _VkCreateDescriptorSetLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateDescriptorSetLayoutUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorSetLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyDescriptorSetLayout :: CString
-
-pattern VkDestroyDescriptorSetLayout <-
-        (is_VkDestroyDescriptorSetLayout -> True)
-  where VkDestroyDescriptorSetLayout = _VkDestroyDescriptorSetLayout
-
-{-# INLINE _VkDestroyDescriptorSetLayout #-}
-
-_VkDestroyDescriptorSetLayout :: CString
-_VkDestroyDescriptorSetLayout
-  = Ptr "vkDestroyDescriptorSetLayout\NUL"##
-
-{-# INLINE is_VkDestroyDescriptorSetLayout #-}
-
-is_VkDestroyDescriptorSetLayout :: CString -> Bool
-is_VkDestroyDescriptorSetLayout
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorSetLayout
-
-type VkDestroyDescriptorSetLayout = "vkDestroyDescriptorSetLayout"
-
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
---
--- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
---           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyDescriptorSetLayout"
-               vkDestroyDescriptorSetLayoutUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyDescriptorSetLayoutUnsafe ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                        -> IO ()
-vkDestroyDescriptorSetLayoutUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkDestroyDescriptorSetLayout)
-
-{-# NOINLINE vkDestroyDescriptorSetLayoutUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
---
--- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
---           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyDescriptorSetLayout"
-               vkDestroyDescriptorSetLayoutSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-
-##else
-vkDestroyDescriptorSetLayoutSafe ::
-                                 VkDevice -- ^ device
-                                          ->
-                                   VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyDescriptorSetLayoutSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkDestroyDescriptorSetLayout)
-
-{-# NOINLINE vkDestroyDescriptorSetLayoutSafe #-}
-##endif
-
--- |
--- > void vkDestroyDescriptorSetLayout
--- >     ( VkDevice device
--- >     , VkDescriptorSetLayout descriptorSetLayout
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
---
--- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
---           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
---
-vkDestroyDescriptorSetLayout ::
-                             VkDevice -- ^ device
-                                      ->
-                               VkDescriptorSetLayout -- ^ descriptorSetLayout
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyDescriptorSetLayout = vkDestroyDescriptorSetLayoutUnsafe
-##else
-vkDestroyDescriptorSetLayout = vkDestroyDescriptorSetLayoutSafe
-
-##endif
-{-# INLINE vkDestroyDescriptorSetLayout #-}
-
--- | > void vkDestroyDescriptorSetLayout
---   >     ( VkDevice device
---   >     , VkDescriptorSetLayout descriptorSetLayout
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
-type HS_vkDestroyDescriptorSetLayout =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorSetLayout -- ^ descriptorSetLayout
-                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                          -> IO ()
-
-type PFN_vkDestroyDescriptorSetLayout =
-     FunPtr HS_vkDestroyDescriptorSetLayout
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyDescriptorSetLayoutUnsafe ::
-               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyDescriptorSetLayoutSafe ::
-               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
-
-instance VulkanProc "vkDestroyDescriptorSetLayout" where
-        type VkProcType "vkDestroyDescriptorSetLayout" =
-             HS_vkDestroyDescriptorSetLayout
-        vkProcSymbol = _VkDestroyDescriptorSetLayout
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyDescriptorSetLayoutUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorSetLayoutSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateDescriptorPool :: CString
-
-pattern VkCreateDescriptorPool <-
-        (is_VkCreateDescriptorPool -> True)
-  where VkCreateDescriptorPool = _VkCreateDescriptorPool
-
-{-# INLINE _VkCreateDescriptorPool #-}
-
-_VkCreateDescriptorPool :: CString
-_VkCreateDescriptorPool = Ptr "vkCreateDescriptorPool\NUL"##
-
-{-# INLINE is_VkCreateDescriptorPool #-}
-
-is_VkCreateDescriptorPool :: CString -> Bool
-is_VkCreateDescriptorPool
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorPool
-
-type VkCreateDescriptorPool = "vkCreateDescriptorPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
---
--- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
---           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateDescriptorPool"
-               vkCreateDescriptorPoolUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                     -> IO VkResult
-
-##else
-vkCreateDescriptorPoolUnsafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                              ->
-                                 Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                                   -> IO VkResult
-vkCreateDescriptorPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateDescriptorPool)
-
-{-# NOINLINE vkCreateDescriptorPoolUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
---
--- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
---           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateDescriptorPool"
-               vkCreateDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                     -> IO VkResult
-
-##else
-vkCreateDescriptorPoolSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                            ->
-                               Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                         -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                                 -> IO VkResult
-vkCreateDescriptorPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDescriptorPool)
-
-{-# NOINLINE vkCreateDescriptorPoolSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
--- > VkResult vkCreateDescriptorPool
--- >     ( VkDevice device
--- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorPool* pDescriptorPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
---
--- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
---           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
---
-vkCreateDescriptorPool ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                                        ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                                             -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateDescriptorPool = vkCreateDescriptorPoolUnsafe
-##else
-vkCreateDescriptorPool = vkCreateDescriptorPoolSafe
-
-##endif
-{-# INLINE vkCreateDescriptorPool #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
---
---   > VkResult vkCreateDescriptorPool
---   >     ( VkDevice device
---   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorPool* pDescriptorPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
-type HS_vkCreateDescriptorPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
-                                      ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkDescriptorPool -- ^ pDescriptorPool
-                                                           -> IO VkResult
-
-type PFN_vkCreateDescriptorPool = FunPtr HS_vkCreateDescriptorPool
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDescriptorPoolUnsafe ::
-               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateDescriptorPoolSafe ::
-               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
-
-instance VulkanProc "vkCreateDescriptorPool" where
-        type VkProcType "vkCreateDescriptorPool" =
-             HS_vkCreateDescriptorPool
-        vkProcSymbol = _VkCreateDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateDescriptorPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyDescriptorPool :: CString
-
-pattern VkDestroyDescriptorPool <-
-        (is_VkDestroyDescriptorPool -> True)
-  where VkDestroyDescriptorPool = _VkDestroyDescriptorPool
-
-{-# INLINE _VkDestroyDescriptorPool #-}
-
-_VkDestroyDescriptorPool :: CString
-_VkDestroyDescriptorPool = Ptr "vkDestroyDescriptorPool\NUL"##
-
-{-# INLINE is_VkDestroyDescriptorPool #-}
-
-is_VkDestroyDescriptorPool :: CString -> Bool
-is_VkDestroyDescriptorPool
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorPool
-
-type VkDestroyDescriptorPool = "vkDestroyDescriptorPool"
-
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
---
--- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
---           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyDescriptorPool"
-               vkDestroyDescriptorPoolUnsafe ::
-               VkDevice -- ^ device
-                        -> VkDescriptorPool -- ^ descriptorPool
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
-vkDestroyDescriptorPoolUnsafe ::
-                              VkDevice -- ^ device
-                                       -> VkDescriptorPool -- ^ descriptorPool
-                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                        -> IO ()
-vkDestroyDescriptorPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyDescriptorPool)
-
-{-# NOINLINE vkDestroyDescriptorPoolUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
---
--- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
---           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyDescriptorPool"
-               vkDestroyDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkDescriptorPool -- ^ descriptorPool
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-##else
-vkDestroyDescriptorPoolSafe ::
-                            VkDevice -- ^ device
-                                     -> VkDescriptorPool -- ^ descriptorPool
-                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                      -> IO ()
-vkDestroyDescriptorPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDescriptorPool)
-
-{-# NOINLINE vkDestroyDescriptorPoolSafe #-}
-##endif
-
--- |
--- > void vkDestroyDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
---
--- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
---           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
---
-vkDestroyDescriptorPool ::
-                        VkDevice -- ^ device
-                                 -> VkDescriptorPool -- ^ descriptorPool
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyDescriptorPool = vkDestroyDescriptorPoolUnsafe
-##else
-vkDestroyDescriptorPool = vkDestroyDescriptorPoolSafe
-
-##endif
-{-# INLINE vkDestroyDescriptorPool #-}
-
--- | > void vkDestroyDescriptorPool
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
-type HS_vkDestroyDescriptorPool =
-     VkDevice -- ^ device
-              -> VkDescriptorPool -- ^ descriptorPool
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyDescriptorPool =
-     FunPtr HS_vkDestroyDescriptorPool
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyDescriptorPoolUnsafe ::
-               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyDescriptorPoolSafe ::
-               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
-
-instance VulkanProc "vkDestroyDescriptorPool" where
-        type VkProcType "vkDestroyDescriptorPool" =
-             HS_vkDestroyDescriptorPool
-        vkProcSymbol = _VkDestroyDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyDescriptorPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetDescriptorPool :: CString
-
-pattern VkResetDescriptorPool <- (is_VkResetDescriptorPool -> True)
-  where VkResetDescriptorPool = _VkResetDescriptorPool
-
-{-# INLINE _VkResetDescriptorPool #-}
-
-_VkResetDescriptorPool :: CString
-_VkResetDescriptorPool = Ptr "vkResetDescriptorPool\NUL"##
-
-{-# INLINE is_VkResetDescriptorPool #-}
-
-is_VkResetDescriptorPool :: CString -> Bool
-is_VkResetDescriptorPool
-  = (EQ ==) . cmpCStrings _VkResetDescriptorPool
-
-type VkResetDescriptorPool = "vkResetDescriptorPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
---
--- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
---           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetDescriptorPool"
-               vkResetDescriptorPoolUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                -> IO VkResult
-
-##else
-vkResetDescriptorPoolUnsafe ::
-                            VkDevice -- ^ device
-                                     ->
-                              VkDescriptorPool -- ^ descriptorPool
-                                               -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                             -> IO VkResult
-vkResetDescriptorPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetDescriptorPool)
-
-{-# NOINLINE vkResetDescriptorPoolUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
---
--- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
---           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetDescriptorPool"
-               vkResetDescriptorPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                -> IO VkResult
-
-##else
-vkResetDescriptorPoolSafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            VkDescriptorPool -- ^ descriptorPool
-                                             -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                           -> IO VkResult
-vkResetDescriptorPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetDescriptorPool)
-
-{-# NOINLINE vkResetDescriptorPoolSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetDescriptorPool
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , VkDescriptorPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
---
--- or less efficient:
---
--- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
---
--- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
---           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
---
-vkResetDescriptorPool ::
-                      VkDevice -- ^ device
-                               ->
-                        VkDescriptorPool -- ^ descriptorPool
-                                         -> VkDescriptorPoolResetFlags -- ^ flags
-                                                                       -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkResetDescriptorPool = vkResetDescriptorPoolUnsafe
-##else
-vkResetDescriptorPool = vkResetDescriptorPoolSafe
-
-##endif
-{-# INLINE vkResetDescriptorPool #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetDescriptorPool
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , VkDescriptorPoolResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
-type HS_vkResetDescriptorPool =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorPool -- ^ descriptorPool
-                        -> VkDescriptorPoolResetFlags -- ^ flags
-                                                      -> IO VkResult
-
-type PFN_vkResetDescriptorPool = FunPtr HS_vkResetDescriptorPool
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkResetDescriptorPoolUnsafe ::
-               PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
-
-foreign import ccall safe "dynamic" unwrapVkResetDescriptorPoolSafe
-               :: PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
-
-instance VulkanProc "vkResetDescriptorPool" where
-        type VkProcType "vkResetDescriptorPool" = HS_vkResetDescriptorPool
-        vkProcSymbol = _VkResetDescriptorPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkResetDescriptorPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkResetDescriptorPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkAllocateDescriptorSets :: CString
-
-pattern VkAllocateDescriptorSets <-
-        (is_VkAllocateDescriptorSets -> True)
-  where VkAllocateDescriptorSets = _VkAllocateDescriptorSets
-
-{-# INLINE _VkAllocateDescriptorSets #-}
-
-_VkAllocateDescriptorSets :: CString
-_VkAllocateDescriptorSets = Ptr "vkAllocateDescriptorSets\NUL"##
-
-{-# INLINE is_VkAllocateDescriptorSets #-}
-
-is_VkAllocateDescriptorSets :: CString -> Bool
-is_VkAllocateDescriptorSets
-  = (EQ ==) . cmpCStrings _VkAllocateDescriptorSets
-
-type VkAllocateDescriptorSets = "vkAllocateDescriptorSets"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
---
--- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
---           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkAllocateDescriptorSets"
-               vkAllocateDescriptorSetsUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                       -> IO VkResult
-
-##else
-vkAllocateDescriptorSetsUnsafe ::
-                               VkDevice -- ^ device
-                                        ->
-                                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                                 ->
-                                   Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                       -> IO VkResult
-vkAllocateDescriptorSetsUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkAllocateDescriptorSets)
-
-{-# NOINLINE vkAllocateDescriptorSetsUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
---
--- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
---           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkAllocateDescriptorSets"
-               vkAllocateDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                       -> IO VkResult
-
-##else
-vkAllocateDescriptorSetsSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                               ->
-                                 Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> IO VkResult
-vkAllocateDescriptorSetsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateDescriptorSets)
-
-{-# NOINLINE vkAllocateDescriptorSetsSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
--- > VkResult vkAllocateDescriptorSets
--- >     ( VkDevice device
--- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
--- >     , VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
---
--- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
---           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
---
-vkAllocateDescriptorSets ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                                           ->
-                             Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                 -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkAllocateDescriptorSets = vkAllocateDescriptorSetsUnsafe
-##else
-vkAllocateDescriptorSets = vkAllocateDescriptorSetsSafe
-
-##endif
-{-# INLINE vkAllocateDescriptorSets #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
---
---   > VkResult vkAllocateDescriptorSets
---   >     ( VkDevice device
---   >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
---   >     , VkDescriptorSet* pDescriptorSets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
-type HS_vkAllocateDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
-                                       ->
-         Ptr VkDescriptorSet -- ^ pDescriptorSets
-                             -> IO VkResult
-
-type PFN_vkAllocateDescriptorSets =
-     FunPtr HS_vkAllocateDescriptorSets
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkAllocateDescriptorSetsUnsafe ::
-               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
-
-foreign import ccall safe "dynamic"
-               unwrapVkAllocateDescriptorSetsSafe ::
-               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
-
-instance VulkanProc "vkAllocateDescriptorSets" where
-        type VkProcType "vkAllocateDescriptorSets" =
-             HS_vkAllocateDescriptorSets
-        vkProcSymbol = _VkAllocateDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkAllocateDescriptorSetsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkAllocateDescriptorSetsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkFreeDescriptorSets :: CString
-
-pattern VkFreeDescriptorSets <- (is_VkFreeDescriptorSets -> True)
-  where VkFreeDescriptorSets = _VkFreeDescriptorSets
-
-{-# INLINE _VkFreeDescriptorSets #-}
-
-_VkFreeDescriptorSets :: CString
-_VkFreeDescriptorSets = Ptr "vkFreeDescriptorSets\NUL"##
-
-{-# INLINE is_VkFreeDescriptorSets #-}
-
-is_VkFreeDescriptorSets :: CString -> Bool
-is_VkFreeDescriptorSets
-  = (EQ ==) . cmpCStrings _VkFreeDescriptorSets
-
-type VkFreeDescriptorSets = "vkFreeDescriptorSets"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
---
--- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
---           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkFreeDescriptorSets"
-               vkFreeDescriptorSetsUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> Word32 -- ^ descriptorSetCount
-                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                   -> IO VkResult
-
-##else
-vkFreeDescriptorSetsUnsafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             VkDescriptorPool -- ^ descriptorPool
-                                              -> Word32 -- ^ descriptorSetCount
-                                                        -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                               -> IO VkResult
-vkFreeDescriptorSetsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeDescriptorSets)
-
-{-# NOINLINE vkFreeDescriptorSetsUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
---
--- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
---           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkFreeDescriptorSets"
-               vkFreeDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorPool -- ^ descriptorPool
-                                  -> Word32 -- ^ descriptorSetCount
-                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                   -> IO VkResult
-
-##else
-vkFreeDescriptorSetsSafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           VkDescriptorPool -- ^ descriptorPool
-                                            -> Word32 -- ^ descriptorSetCount
-                                                      -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                             -> IO VkResult
-vkFreeDescriptorSetsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeDescriptorSets)
-
-{-# NOINLINE vkFreeDescriptorSetsSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkFreeDescriptorSets
--- >     ( VkDevice device
--- >     , VkDescriptorPool descriptorPool
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
---
--- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
---           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
---
-vkFreeDescriptorSets ::
-                     VkDevice -- ^ device
-                              ->
-                       VkDescriptorPool -- ^ descriptorPool
-                                        -> Word32 -- ^ descriptorSetCount
-                                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                         -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkFreeDescriptorSets = vkFreeDescriptorSetsUnsafe
-##else
-vkFreeDescriptorSets = vkFreeDescriptorSetsSafe
-
-##endif
-{-# INLINE vkFreeDescriptorSets #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkFreeDescriptorSets
---   >     ( VkDevice device
---   >     , VkDescriptorPool descriptorPool
---   >     , uint32_t descriptorSetCount
---   >     , const VkDescriptorSet* pDescriptorSets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
-type HS_vkFreeDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorPool -- ^ descriptorPool
-                        -> Word32 -- ^ descriptorSetCount
-                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                         -> IO VkResult
-
-type PFN_vkFreeDescriptorSets = FunPtr HS_vkFreeDescriptorSets
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkFreeDescriptorSetsUnsafe ::
-               PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
-
-foreign import ccall safe "dynamic" unwrapVkFreeDescriptorSetsSafe
-               :: PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
-
-instance VulkanProc "vkFreeDescriptorSets" where
-        type VkProcType "vkFreeDescriptorSets" = HS_vkFreeDescriptorSets
-        vkProcSymbol = _VkFreeDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkFreeDescriptorSetsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkFreeDescriptorSetsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkUpdateDescriptorSets :: CString
-
-pattern VkUpdateDescriptorSets <-
-        (is_VkUpdateDescriptorSets -> True)
-  where VkUpdateDescriptorSets = _VkUpdateDescriptorSets
-
-{-# INLINE _VkUpdateDescriptorSets #-}
-
-_VkUpdateDescriptorSets :: CString
-_VkUpdateDescriptorSets = Ptr "vkUpdateDescriptorSets\NUL"##
-
-{-# INLINE is_VkUpdateDescriptorSets #-}
-
-is_VkUpdateDescriptorSets :: CString -> Bool
-is_VkUpdateDescriptorSets
-  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSets
-
-type VkUpdateDescriptorSets = "vkUpdateDescriptorSets"
-
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
---
--- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
---           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkUpdateDescriptorSets"
-               vkUpdateDescriptorSetsUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ descriptorWriteCount
-                        ->
-                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                            ->
-                     Word32 -- ^ descriptorCopyCount
-                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                       -> IO ()
-
-##else
-vkUpdateDescriptorSetsUnsafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Word32 -- ^ descriptorWriteCount
-                                      ->
-                                 Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                                          ->
-                                   Word32 -- ^ descriptorCopyCount
-                                          -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                                     -> IO ()
-vkUpdateDescriptorSetsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkUpdateDescriptorSets)
-
-{-# NOINLINE vkUpdateDescriptorSetsUnsafe #-}
-##endif
-
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
---
--- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
---           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkUpdateDescriptorSets"
-               vkUpdateDescriptorSetsSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ descriptorWriteCount
-                        ->
-                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                            ->
-                     Word32 -- ^ descriptorCopyCount
-                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                       -> IO ()
-
-##else
-vkUpdateDescriptorSetsSafe ::
-                           VkDevice -- ^ device
-                                    ->
-                             Word32 -- ^ descriptorWriteCount
-                                    ->
-                               Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                                        ->
-                                 Word32 -- ^ descriptorCopyCount
-                                        -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                                   -> IO ()
-vkUpdateDescriptorSetsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkUpdateDescriptorSets)
-
-{-# NOINLINE vkUpdateDescriptorSetsSafe #-}
-##endif
-
--- |
--- > void vkUpdateDescriptorSets
--- >     ( VkDevice device
--- >     , uint32_t descriptorWriteCount
--- >     , const VkWriteDescriptorSet* pDescriptorWrites
--- >     , uint32_t descriptorCopyCount
--- >     , const VkCopyDescriptorSet* pDescriptorCopies
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
---
--- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
---           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
---
-vkUpdateDescriptorSets ::
-                       VkDevice -- ^ device
-                                ->
-                         Word32 -- ^ descriptorWriteCount
-                                ->
-                           Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                                    ->
-                             Word32 -- ^ descriptorCopyCount
-                                    -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                                               -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkUpdateDescriptorSets = vkUpdateDescriptorSetsUnsafe
-##else
-vkUpdateDescriptorSets = vkUpdateDescriptorSetsSafe
-
-##endif
-{-# INLINE vkUpdateDescriptorSets #-}
-
--- | > void vkUpdateDescriptorSets
---   >     ( VkDevice device
---   >     , uint32_t descriptorWriteCount
---   >     , const VkWriteDescriptorSet* pDescriptorWrites
---   >     , uint32_t descriptorCopyCount
---   >     , const VkCopyDescriptorSet* pDescriptorCopies
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
-type HS_vkUpdateDescriptorSets =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ descriptorWriteCount
-              ->
-         Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
-                                  ->
-           Word32 -- ^ descriptorCopyCount
-                  -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
-                                             -> IO ()
-
-type PFN_vkUpdateDescriptorSets = FunPtr HS_vkUpdateDescriptorSets
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkUpdateDescriptorSetsUnsafe ::
-               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
-
-foreign import ccall safe "dynamic"
-               unwrapVkUpdateDescriptorSetsSafe ::
-               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
-
-instance VulkanProc "vkUpdateDescriptorSets" where
-        type VkProcType "vkUpdateDescriptorSets" =
-             HS_vkUpdateDescriptorSets
-        vkProcSymbol = _VkUpdateDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkUpdateDescriptorSetsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateFramebuffer :: CString
-
-pattern VkCreateFramebuffer <- (is_VkCreateFramebuffer -> True)
-  where VkCreateFramebuffer = _VkCreateFramebuffer
-
-{-# INLINE _VkCreateFramebuffer #-}
-
-_VkCreateFramebuffer :: CString
-_VkCreateFramebuffer = Ptr "vkCreateFramebuffer\NUL"##
-
-{-# INLINE is_VkCreateFramebuffer #-}
-
-is_VkCreateFramebuffer :: CString -> Bool
-is_VkCreateFramebuffer = (EQ ==) . cmpCStrings _VkCreateFramebuffer
-
-type VkCreateFramebuffer = "vkCreateFramebuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
---
--- or less efficient:
---
--- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
---
--- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
---           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateFramebuffer"
-               vkCreateFramebufferUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                  -> IO VkResult
-
-##else
-vkCreateFramebufferUnsafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                                        ->
-                              Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                             -> IO VkResult
-vkCreateFramebufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateFramebuffer)
-
-{-# NOINLINE vkCreateFramebufferUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
---
--- or less efficient:
---
--- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
---
--- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
---           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateFramebuffer"
-               vkCreateFramebufferSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                  -> IO VkResult
-
-##else
-vkCreateFramebufferSafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                                      ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                           -> IO VkResult
-vkCreateFramebufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFramebuffer)
-
-{-# NOINLINE vkCreateFramebufferSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateFramebuffer
--- >     ( VkDevice device
--- >     , const VkFramebufferCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkFramebuffer* pFramebuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
---
--- or less efficient:
---
--- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
---
--- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
---           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
---
-vkCreateFramebuffer ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                                  ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                                       -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateFramebuffer = vkCreateFramebufferUnsafe
-##else
-vkCreateFramebuffer = vkCreateFramebufferSafe
-
-##endif
-{-# INLINE vkCreateFramebuffer #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateFramebuffer
---   >     ( VkDevice device
---   >     , const VkFramebufferCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkFramebuffer* pFramebuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
-type HS_vkCreateFramebuffer =
-     VkDevice -- ^ device
-              ->
-       Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
-                                   ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkFramebuffer -- ^ pFramebuffer
-                                                        -> IO VkResult
-
-type PFN_vkCreateFramebuffer = FunPtr HS_vkCreateFramebuffer
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateFramebufferUnsafe ::
-               PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
-
-foreign import ccall safe "dynamic" unwrapVkCreateFramebufferSafe
-               :: PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
-
-instance VulkanProc "vkCreateFramebuffer" where
-        type VkProcType "vkCreateFramebuffer" = HS_vkCreateFramebuffer
-        vkProcSymbol = _VkCreateFramebuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateFramebufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateFramebufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyFramebuffer :: CString
-
-pattern VkDestroyFramebuffer <- (is_VkDestroyFramebuffer -> True)
-  where VkDestroyFramebuffer = _VkDestroyFramebuffer
-
-{-# INLINE _VkDestroyFramebuffer #-}
-
-_VkDestroyFramebuffer :: CString
-_VkDestroyFramebuffer = Ptr "vkDestroyFramebuffer\NUL"##
-
-{-# INLINE is_VkDestroyFramebuffer #-}
-
-is_VkDestroyFramebuffer :: CString -> Bool
-is_VkDestroyFramebuffer
-  = (EQ ==) . cmpCStrings _VkDestroyFramebuffer
-
-type VkDestroyFramebuffer = "vkDestroyFramebuffer"
-
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
---
--- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
---           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyFramebuffer"
-               vkDestroyFramebufferUnsafe ::
-               VkDevice -- ^ device
-                        -> VkFramebuffer -- ^ framebuffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyFramebufferUnsafe ::
-                           VkDevice -- ^ device
-                                    -> VkFramebuffer -- ^ framebuffer
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyFramebufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyFramebuffer)
-
-{-# NOINLINE vkDestroyFramebufferUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
---
--- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
---           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyFramebuffer"
-               vkDestroyFramebufferSafe ::
-               VkDevice -- ^ device
-                        -> VkFramebuffer -- ^ framebuffer
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyFramebufferSafe ::
-                         VkDevice -- ^ device
-                                  -> VkFramebuffer -- ^ framebuffer
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyFramebufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFramebuffer)
-
-{-# NOINLINE vkDestroyFramebufferSafe #-}
-##endif
-
--- |
--- > void vkDestroyFramebuffer
--- >     ( VkDevice device
--- >     , VkFramebuffer framebuffer
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
---
--- or less efficient:
---
--- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
---
--- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
---           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
---
-vkDestroyFramebuffer ::
-                     VkDevice -- ^ device
-                              -> VkFramebuffer -- ^ framebuffer
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyFramebuffer = vkDestroyFramebufferUnsafe
-##else
-vkDestroyFramebuffer = vkDestroyFramebufferSafe
-
-##endif
-{-# INLINE vkDestroyFramebuffer #-}
-
--- | > void vkDestroyFramebuffer
---   >     ( VkDevice device
---   >     , VkFramebuffer framebuffer
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
-type HS_vkDestroyFramebuffer =
-     VkDevice -- ^ device
-              -> VkFramebuffer -- ^ framebuffer
-                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> IO ()
-
-type PFN_vkDestroyFramebuffer = FunPtr HS_vkDestroyFramebuffer
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyFramebufferUnsafe ::
-               PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
-
-foreign import ccall safe "dynamic" unwrapVkDestroyFramebufferSafe
-               :: PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
-
-instance VulkanProc "vkDestroyFramebuffer" where
-        type VkProcType "vkDestroyFramebuffer" = HS_vkDestroyFramebuffer
-        vkProcSymbol = _VkDestroyFramebuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyFramebufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyFramebufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateRenderPass :: CString
-
-pattern VkCreateRenderPass <- (is_VkCreateRenderPass -> True)
-  where VkCreateRenderPass = _VkCreateRenderPass
-
-{-# INLINE _VkCreateRenderPass #-}
-
-_VkCreateRenderPass :: CString
-_VkCreateRenderPass = Ptr "vkCreateRenderPass\NUL"##
-
-{-# INLINE is_VkCreateRenderPass #-}
-
-is_VkCreateRenderPass :: CString -> Bool
-is_VkCreateRenderPass = (EQ ==) . cmpCStrings _VkCreateRenderPass
-
-type VkCreateRenderPass = "vkCreateRenderPass"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
---
--- or less efficient:
---
--- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
---
--- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
---           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateRenderPass"
-               vkCreateRenderPassUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                 -> IO VkResult
-
-##else
-vkCreateRenderPassUnsafe ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                                      ->
-                             Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                       -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                           -> IO VkResult
-vkCreateRenderPassUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateRenderPass)
-
-{-# NOINLINE vkCreateRenderPassUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
---
--- or less efficient:
---
--- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
---
--- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
---           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateRenderPass"
-               vkCreateRenderPassSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                            ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                 -> IO VkResult
-
-##else
-vkCreateRenderPassSafe ::
-                       VkDevice -- ^ device
-                                ->
-                         Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                                    ->
-                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                     -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                         -> IO VkResult
-vkCreateRenderPassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateRenderPass)
-
-{-# NOINLINE vkCreateRenderPassSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateRenderPass
--- >     ( VkDevice device
--- >     , const VkRenderPassCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkRenderPass* pRenderPass
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
---
--- or less efficient:
---
--- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
---
--- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
---           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
---
-vkCreateRenderPass ::
-                   VkDevice -- ^ device
-                            ->
-                     Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                                ->
-                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                 -> Ptr VkRenderPass -- ^ pRenderPass
-                                                                     -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateRenderPass = vkCreateRenderPassUnsafe
-##else
-vkCreateRenderPass = vkCreateRenderPassSafe
-
-##endif
-{-# INLINE vkCreateRenderPass #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateRenderPass
---   >     ( VkDevice device
---   >     , const VkRenderPassCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkRenderPass* pRenderPass
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
-type HS_vkCreateRenderPass =
-     VkDevice -- ^ device
-              ->
-       Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
-                                  ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkRenderPass -- ^ pRenderPass
-                                                       -> IO VkResult
-
-type PFN_vkCreateRenderPass = FunPtr HS_vkCreateRenderPass
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateRenderPassUnsafe ::
-               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
-
-foreign import ccall safe "dynamic" unwrapVkCreateRenderPassSafe ::
-               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
-
-instance VulkanProc "vkCreateRenderPass" where
-        type VkProcType "vkCreateRenderPass" = HS_vkCreateRenderPass
-        vkProcSymbol = _VkCreateRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateRenderPassUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateRenderPassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyRenderPass :: CString
-
-pattern VkDestroyRenderPass <- (is_VkDestroyRenderPass -> True)
-  where VkDestroyRenderPass = _VkDestroyRenderPass
-
-{-# INLINE _VkDestroyRenderPass #-}
-
-_VkDestroyRenderPass :: CString
-_VkDestroyRenderPass = Ptr "vkDestroyRenderPass\NUL"##
-
-{-# INLINE is_VkDestroyRenderPass #-}
-
-is_VkDestroyRenderPass :: CString -> Bool
-is_VkDestroyRenderPass = (EQ ==) . cmpCStrings _VkDestroyRenderPass
-
-type VkDestroyRenderPass = "vkDestroyRenderPass"
-
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
---
--- or less efficient:
---
--- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
---
--- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
---           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyRenderPass"
-               vkDestroyRenderPassUnsafe ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroyRenderPassUnsafe ::
-                          VkDevice -- ^ device
-                                   -> VkRenderPass -- ^ renderPass
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyRenderPassUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyRenderPass)
-
-{-# NOINLINE vkDestroyRenderPassUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
---
--- or less efficient:
---
--- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
---
--- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
---           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyRenderPass"
-               vkDestroyRenderPassSafe ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     -> IO ()
-
-##else
-vkDestroyRenderPassSafe ::
-                        VkDevice -- ^ device
-                                 -> VkRenderPass -- ^ renderPass
-                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                              -> IO ()
-vkDestroyRenderPassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyRenderPass)
-
-{-# NOINLINE vkDestroyRenderPassSafe #-}
-##endif
-
--- |
--- > void vkDestroyRenderPass
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
---
--- or less efficient:
---
--- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
---
--- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
---           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
---
-vkDestroyRenderPass ::
-                    VkDevice -- ^ device
-                             -> VkRenderPass -- ^ renderPass
-                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                          -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyRenderPass = vkDestroyRenderPassUnsafe
-##else
-vkDestroyRenderPass = vkDestroyRenderPassSafe
-
-##endif
-{-# INLINE vkDestroyRenderPass #-}
-
--- | > void vkDestroyRenderPass
---   >     ( VkDevice device
---   >     , VkRenderPass renderPass
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
-type HS_vkDestroyRenderPass =
-     VkDevice -- ^ device
-              -> VkRenderPass -- ^ renderPass
-                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                           -> IO ()
-
-type PFN_vkDestroyRenderPass = FunPtr HS_vkDestroyRenderPass
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyRenderPassUnsafe ::
-               PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
-
-foreign import ccall safe "dynamic" unwrapVkDestroyRenderPassSafe
-               :: PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
-
-instance VulkanProc "vkDestroyRenderPass" where
-        type VkProcType "vkDestroyRenderPass" = HS_vkDestroyRenderPass
-        vkProcSymbol = _VkDestroyRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyRenderPassUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyRenderPassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetRenderAreaGranularity :: CString
-
-pattern VkGetRenderAreaGranularity <-
-        (is_VkGetRenderAreaGranularity -> True)
-  where VkGetRenderAreaGranularity = _VkGetRenderAreaGranularity
-
-{-# INLINE _VkGetRenderAreaGranularity #-}
-
-_VkGetRenderAreaGranularity :: CString
-_VkGetRenderAreaGranularity = Ptr "vkGetRenderAreaGranularity\NUL"##
-
-{-# INLINE is_VkGetRenderAreaGranularity #-}
-
-is_VkGetRenderAreaGranularity :: CString -> Bool
-is_VkGetRenderAreaGranularity
-  = (EQ ==) . cmpCStrings _VkGetRenderAreaGranularity
-
-type VkGetRenderAreaGranularity = "vkGetRenderAreaGranularity"
-
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
---
--- or less efficient:
---
--- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
---
--- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
---           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkGetRenderAreaGranularity"
-               vkGetRenderAreaGranularityUnsafe ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                          -> IO ()
-
-##else
-vkGetRenderAreaGranularityUnsafe ::
-                                 VkDevice -- ^ device
-                                          -> VkRenderPass -- ^ renderPass
-                                                          -> Ptr VkExtent2D -- ^ pGranularity
-                                                                            -> IO ()
-vkGetRenderAreaGranularityUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetRenderAreaGranularity)
-
-{-# NOINLINE vkGetRenderAreaGranularityUnsafe #-}
-##endif
-
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
---
--- or less efficient:
---
--- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
---
--- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
---           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkGetRenderAreaGranularity"
-               vkGetRenderAreaGranularitySafe ::
-               VkDevice -- ^ device
-                        -> VkRenderPass -- ^ renderPass
-                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                          -> IO ()
-
-##else
-vkGetRenderAreaGranularitySafe ::
-                               VkDevice -- ^ device
-                                        -> VkRenderPass -- ^ renderPass
-                                                        -> Ptr VkExtent2D -- ^ pGranularity
-                                                                          -> IO ()
-vkGetRenderAreaGranularitySafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetRenderAreaGranularity)
-
-{-# NOINLINE vkGetRenderAreaGranularitySafe #-}
-##endif
-
--- |
--- > void vkGetRenderAreaGranularity
--- >     ( VkDevice device
--- >     , VkRenderPass renderPass
--- >     , VkExtent2D* pGranularity
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
---
--- or less efficient:
---
--- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
---
--- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
---           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
---
-vkGetRenderAreaGranularity ::
-                           VkDevice -- ^ device
-                                    -> VkRenderPass -- ^ renderPass
-                                                    -> Ptr VkExtent2D -- ^ pGranularity
-                                                                      -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkGetRenderAreaGranularity = vkGetRenderAreaGranularityUnsafe
-##else
-vkGetRenderAreaGranularity = vkGetRenderAreaGranularitySafe
-
-##endif
-{-# INLINE vkGetRenderAreaGranularity #-}
-
--- | > void vkGetRenderAreaGranularity
---   >     ( VkDevice device
---   >     , VkRenderPass renderPass
---   >     , VkExtent2D* pGranularity
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
-type HS_vkGetRenderAreaGranularity =
-     VkDevice -- ^ device
-              -> VkRenderPass -- ^ renderPass
-                              -> Ptr VkExtent2D -- ^ pGranularity
-                                                -> IO ()
-
-type PFN_vkGetRenderAreaGranularity =
-     FunPtr HS_vkGetRenderAreaGranularity
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetRenderAreaGranularityUnsafe ::
-               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetRenderAreaGranularitySafe ::
-               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
-
-instance VulkanProc "vkGetRenderAreaGranularity" where
-        type VkProcType "vkGetRenderAreaGranularity" =
-             HS_vkGetRenderAreaGranularity
-        vkProcSymbol = _VkGetRenderAreaGranularity
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetRenderAreaGranularityUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetRenderAreaGranularitySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCreateCommandPool :: CString
-
-pattern VkCreateCommandPool <- (is_VkCreateCommandPool -> True)
-  where VkCreateCommandPool = _VkCreateCommandPool
-
-{-# INLINE _VkCreateCommandPool #-}
-
-_VkCreateCommandPool :: CString
-_VkCreateCommandPool = Ptr "vkCreateCommandPool\NUL"##
-
-{-# INLINE is_VkCreateCommandPool #-}
-
-is_VkCreateCommandPool :: CString -> Bool
-is_VkCreateCommandPool = (EQ ==) . cmpCStrings _VkCreateCommandPool
-
-type VkCreateCommandPool = "vkCreateCommandPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
---
--- or less efficient:
---
--- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
---
--- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
---           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCreateCommandPool"
-               vkCreateCommandPoolUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                  -> IO VkResult
-
-##else
-vkCreateCommandPoolUnsafe ::
-                          VkDevice -- ^ device
-                                   ->
-                            Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                                        ->
-                              Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                        -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                             -> IO VkResult
-vkCreateCommandPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateCommandPool)
-
-{-# NOINLINE vkCreateCommandPoolUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
---
--- or less efficient:
---
--- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
---
--- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
---           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCreateCommandPool"
-               vkCreateCommandPoolSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                             ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                  -> IO VkResult
-
-##else
-vkCreateCommandPoolSafe ::
-                        VkDevice -- ^ device
-                                 ->
-                          Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                                      ->
-                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                      -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                           -> IO VkResult
-vkCreateCommandPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateCommandPool)
-
-{-# NOINLINE vkCreateCommandPoolSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateCommandPool
--- >     ( VkDevice device
--- >     , const VkCommandPoolCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkCommandPool* pCommandPool
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
---
--- or less efficient:
---
--- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
---
--- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
---           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
---
-vkCreateCommandPool ::
-                    VkDevice -- ^ device
-                             ->
-                      Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                                  ->
-                        Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                  -> Ptr VkCommandPool -- ^ pCommandPool
-                                                                       -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkCreateCommandPool = vkCreateCommandPoolUnsafe
-##else
-vkCreateCommandPool = vkCreateCommandPoolSafe
-
-##endif
-{-# INLINE vkCreateCommandPool #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateCommandPool
---   >     ( VkDevice device
---   >     , const VkCommandPoolCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkCommandPool* pCommandPool
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
-type HS_vkCreateCommandPool =
-     VkDevice -- ^ device
-              ->
-       Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
-                                   ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   -> Ptr VkCommandPool -- ^ pCommandPool
-                                                        -> IO VkResult
-
-type PFN_vkCreateCommandPool = FunPtr HS_vkCreateCommandPool
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateCommandPoolUnsafe ::
-               PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
-
-foreign import ccall safe "dynamic" unwrapVkCreateCommandPoolSafe
-               :: PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
-
-instance VulkanProc "vkCreateCommandPool" where
-        type VkProcType "vkCreateCommandPool" = HS_vkCreateCommandPool
-        vkProcSymbol = _VkCreateCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateCommandPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateCommandPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyCommandPool :: CString
-
-pattern VkDestroyCommandPool <- (is_VkDestroyCommandPool -> True)
-  where VkDestroyCommandPool = _VkDestroyCommandPool
-
-{-# INLINE _VkDestroyCommandPool #-}
-
-_VkDestroyCommandPool :: CString
-_VkDestroyCommandPool = Ptr "vkDestroyCommandPool\NUL"##
-
-{-# INLINE is_VkDestroyCommandPool #-}
-
-is_VkDestroyCommandPool :: CString -> Bool
-is_VkDestroyCommandPool
-  = (EQ ==) . cmpCStrings _VkDestroyCommandPool
-
-type VkDestroyCommandPool = "vkDestroyCommandPool"
-
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
---
--- or less efficient:
---
--- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
---
--- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
---           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkDestroyCommandPool"
-               vkDestroyCommandPoolUnsafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyCommandPoolUnsafe ::
-                           VkDevice -- ^ device
-                                    -> VkCommandPool -- ^ commandPool
-                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                  -> IO ()
-vkDestroyCommandPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyCommandPool)
-
-{-# NOINLINE vkDestroyCommandPoolUnsafe #-}
-##endif
-
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
---
--- or less efficient:
---
--- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
---
--- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
---           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkDestroyCommandPool"
-               vkDestroyCommandPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-
-##else
-vkDestroyCommandPoolSafe ::
-                         VkDevice -- ^ device
-                                  -> VkCommandPool -- ^ commandPool
-                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                -> IO ()
-vkDestroyCommandPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyCommandPool)
-
-{-# NOINLINE vkDestroyCommandPoolSafe #-}
-##endif
-
--- |
--- > void vkDestroyCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
---
--- or less efficient:
---
--- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
---
--- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
---           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
---
-vkDestroyCommandPool ::
-                     VkDevice -- ^ device
-                              -> VkCommandPool -- ^ commandPool
-                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                            -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkDestroyCommandPool = vkDestroyCommandPoolUnsafe
-##else
-vkDestroyCommandPool = vkDestroyCommandPoolSafe
-
-##endif
-{-# INLINE vkDestroyCommandPool #-}
-
--- | > void vkDestroyCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
-type HS_vkDestroyCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                            -> IO ()
-
-type PFN_vkDestroyCommandPool = FunPtr HS_vkDestroyCommandPool
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyCommandPoolUnsafe ::
-               PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
-
-foreign import ccall safe "dynamic" unwrapVkDestroyCommandPoolSafe
-               :: PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
-
-instance VulkanProc "vkDestroyCommandPool" where
-        type VkProcType "vkDestroyCommandPool" = HS_vkDestroyCommandPool
-        vkProcSymbol = _VkDestroyCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyCommandPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyCommandPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetCommandPool :: CString
-
-pattern VkResetCommandPool <- (is_VkResetCommandPool -> True)
-  where VkResetCommandPool = _VkResetCommandPool
-
-{-# INLINE _VkResetCommandPool #-}
-
-_VkResetCommandPool :: CString
-_VkResetCommandPool = Ptr "vkResetCommandPool\NUL"##
-
-{-# INLINE is_VkResetCommandPool #-}
-
-is_VkResetCommandPool :: CString -> Bool
-is_VkResetCommandPool = (EQ ==) . cmpCStrings _VkResetCommandPool
-
-type VkResetCommandPool = "vkResetCommandPool"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
---
--- or less efficient:
---
--- > myResetCommandPool <- vkGetProc @VkResetCommandPool
---
--- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
---           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetCommandPool"
-               vkResetCommandPoolUnsafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolResetFlags -- ^ flags
-                                                                    -> IO VkResult
-
-##else
-vkResetCommandPoolUnsafe ::
-                         VkDevice -- ^ device
-                                  -> VkCommandPool -- ^ commandPool
-                                                   -> VkCommandPoolResetFlags -- ^ flags
-                                                                              -> IO VkResult
-vkResetCommandPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetCommandPool)
-
-{-# NOINLINE vkResetCommandPoolUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
---
--- or less efficient:
---
--- > myResetCommandPool <- vkGetProc @VkResetCommandPool
---
--- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
---           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetCommandPool"
-               vkResetCommandPoolSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolResetFlags -- ^ flags
-                                                                    -> IO VkResult
-
-##else
-vkResetCommandPoolSafe ::
-                       VkDevice -- ^ device
-                                -> VkCommandPool -- ^ commandPool
-                                                 -> VkCommandPoolResetFlags -- ^ flags
-                                                                            -> IO VkResult
-vkResetCommandPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandPool)
-
-{-# NOINLINE vkResetCommandPoolSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
---
--- or less efficient:
---
--- > myResetCommandPool <- vkGetProc @VkResetCommandPool
---
--- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
---           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
---
-vkResetCommandPool ::
-                   VkDevice -- ^ device
-                            -> VkCommandPool -- ^ commandPool
-                                             -> VkCommandPoolResetFlags -- ^ flags
-                                                                        -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkResetCommandPool = vkResetCommandPoolUnsafe
-##else
-vkResetCommandPool = vkResetCommandPoolSafe
-
-##endif
-{-# INLINE vkResetCommandPool #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , VkCommandPoolResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
-type HS_vkResetCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> VkCommandPoolResetFlags -- ^ flags
-                                                          -> IO VkResult
-
-type PFN_vkResetCommandPool = FunPtr HS_vkResetCommandPool
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkResetCommandPoolUnsafe ::
-               PFN_vkResetCommandPool -> HS_vkResetCommandPool
-
-foreign import ccall safe "dynamic" unwrapVkResetCommandPoolSafe ::
-               PFN_vkResetCommandPool -> HS_vkResetCommandPool
-
-instance VulkanProc "vkResetCommandPool" where
-        type VkProcType "vkResetCommandPool" = HS_vkResetCommandPool
-        vkProcSymbol = _VkResetCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkResetCommandPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkResetCommandPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkAllocateCommandBuffers :: CString
-
-pattern VkAllocateCommandBuffers <-
-        (is_VkAllocateCommandBuffers -> True)
-  where VkAllocateCommandBuffers = _VkAllocateCommandBuffers
-
-{-# INLINE _VkAllocateCommandBuffers #-}
-
-_VkAllocateCommandBuffers :: CString
-_VkAllocateCommandBuffers = Ptr "vkAllocateCommandBuffers\NUL"##
-
-{-# INLINE is_VkAllocateCommandBuffers #-}
-
-is_VkAllocateCommandBuffers :: CString -> Bool
-is_VkAllocateCommandBuffers
-  = (EQ ==) . cmpCStrings _VkAllocateCommandBuffers
-
-type VkAllocateCommandBuffers = "vkAllocateCommandBuffers"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
---
--- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
---           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkAllocateCommandBuffers"
-               vkAllocateCommandBuffersUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                       -> IO VkResult
-
-##else
-vkAllocateCommandBuffersUnsafe ::
-                               VkDevice -- ^ device
-                                        ->
-                                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                                 ->
-                                   Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                       -> IO VkResult
-vkAllocateCommandBuffersUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkAllocateCommandBuffers)
-
-{-# NOINLINE vkAllocateCommandBuffersUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
---
--- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
---           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkAllocateCommandBuffers"
-               vkAllocateCommandBuffersSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                 ->
-                   Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                       -> IO VkResult
-
-##else
-vkAllocateCommandBuffersSafe ::
-                             VkDevice -- ^ device
-                                      ->
-                               Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                               ->
-                                 Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                     -> IO VkResult
-vkAllocateCommandBuffersSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateCommandBuffers)
-
-{-# NOINLINE vkAllocateCommandBuffersSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkAllocateCommandBuffers
--- >     ( VkDevice device
--- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
--- >     , VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
---
--- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
---           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
---
-vkAllocateCommandBuffers ::
-                         VkDevice -- ^ device
-                                  ->
-                           Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                                           ->
-                             Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                 -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkAllocateCommandBuffers = vkAllocateCommandBuffersUnsafe
-##else
-vkAllocateCommandBuffers = vkAllocateCommandBuffersSafe
-
-##endif
-{-# INLINE vkAllocateCommandBuffers #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkAllocateCommandBuffers
---   >     ( VkDevice device
---   >     , const VkCommandBufferAllocateInfo* pAllocateInfo
---   >     , VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
-type HS_vkAllocateCommandBuffers =
-     VkDevice -- ^ device
-              ->
-       Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
-                                       ->
-         Ptr VkCommandBuffer -- ^ pCommandBuffers
-                             -> IO VkResult
-
-type PFN_vkAllocateCommandBuffers =
-     FunPtr HS_vkAllocateCommandBuffers
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkAllocateCommandBuffersUnsafe ::
-               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
-
-foreign import ccall safe "dynamic"
-               unwrapVkAllocateCommandBuffersSafe ::
-               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
-
-instance VulkanProc "vkAllocateCommandBuffers" where
-        type VkProcType "vkAllocateCommandBuffers" =
-             HS_vkAllocateCommandBuffers
-        vkProcSymbol = _VkAllocateCommandBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkAllocateCommandBuffersUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkAllocateCommandBuffersSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkFreeCommandBuffers :: CString
-
-pattern VkFreeCommandBuffers <- (is_VkFreeCommandBuffers -> True)
-  where VkFreeCommandBuffers = _VkFreeCommandBuffers
-
-{-# INLINE _VkFreeCommandBuffers #-}
-
-_VkFreeCommandBuffers :: CString
-_VkFreeCommandBuffers = Ptr "vkFreeCommandBuffers\NUL"##
-
-{-# INLINE is_VkFreeCommandBuffers #-}
-
-is_VkFreeCommandBuffers :: CString -> Bool
-is_VkFreeCommandBuffers
-  = (EQ ==) . cmpCStrings _VkFreeCommandBuffers
-
-type VkFreeCommandBuffers = "vkFreeCommandBuffers"
-
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
---
--- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
---           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkFreeCommandBuffers"
-               vkFreeCommandBuffersUnsafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-
-##else
-vkFreeCommandBuffersUnsafe ::
-                           VkDevice -- ^ device
-                                    -> VkCommandPool -- ^ commandPool
-                                                     -> Word32 -- ^ commandBufferCount
-                                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                                      -> IO ()
-vkFreeCommandBuffersUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeCommandBuffers)
-
-{-# NOINLINE vkFreeCommandBuffersUnsafe #-}
-##endif
-
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
---
--- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
---           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkFreeCommandBuffers"
-               vkFreeCommandBuffersSafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-
-##else
-vkFreeCommandBuffersSafe ::
-                         VkDevice -- ^ device
-                                  -> VkCommandPool -- ^ commandPool
-                                                   -> Word32 -- ^ commandBufferCount
-                                                             -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                                    -> IO ()
-vkFreeCommandBuffersSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeCommandBuffers)
-
-{-# NOINLINE vkFreeCommandBuffersSafe #-}
-##endif
-
--- |
--- > void vkFreeCommandBuffers
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
---
--- or less efficient:
---
--- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
---
--- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
---           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
---
-vkFreeCommandBuffers ::
-                     VkDevice -- ^ device
-                              -> VkCommandPool -- ^ commandPool
-                                               -> Word32 -- ^ commandBufferCount
-                                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                                -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkFreeCommandBuffers = vkFreeCommandBuffersUnsafe
-##else
-vkFreeCommandBuffers = vkFreeCommandBuffersSafe
-
-##endif
-{-# INLINE vkFreeCommandBuffers #-}
-
--- | > void vkFreeCommandBuffers
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , uint32_t commandBufferCount
---   >     , const VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
-type HS_vkFreeCommandBuffers =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-type PFN_vkFreeCommandBuffers = FunPtr HS_vkFreeCommandBuffers
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkFreeCommandBuffersUnsafe ::
-               PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
-
-foreign import ccall safe "dynamic" unwrapVkFreeCommandBuffersSafe
-               :: PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
-
-instance VulkanProc "vkFreeCommandBuffers" where
-        type VkProcType "vkFreeCommandBuffers" = HS_vkFreeCommandBuffers
-        vkProcSymbol = _VkFreeCommandBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkFreeCommandBuffersUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkFreeCommandBuffersSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkBeginCommandBuffer :: CString
-
-pattern VkBeginCommandBuffer <- (is_VkBeginCommandBuffer -> True)
-  where VkBeginCommandBuffer = _VkBeginCommandBuffer
-
-{-# INLINE _VkBeginCommandBuffer #-}
-
-_VkBeginCommandBuffer :: CString
-_VkBeginCommandBuffer = Ptr "vkBeginCommandBuffer\NUL"##
-
-{-# INLINE is_VkBeginCommandBuffer #-}
-
-is_VkBeginCommandBuffer :: CString -> Bool
-is_VkBeginCommandBuffer
-  = (EQ ==) . cmpCStrings _VkBeginCommandBuffer
-
-type VkBeginCommandBuffer = "vkBeginCommandBuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
---
--- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
---           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkBeginCommandBuffer"
-               vkBeginCommandBufferUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                               -> IO VkResult
-
-##else
-vkBeginCommandBufferUnsafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                                           -> IO VkResult
-vkBeginCommandBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBeginCommandBuffer)
-
-{-# NOINLINE vkBeginCommandBufferUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
---
--- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
---           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkBeginCommandBuffer"
-               vkBeginCommandBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                               -> IO VkResult
-
-##else
-vkBeginCommandBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                                         -> IO VkResult
-vkBeginCommandBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBeginCommandBuffer)
-
-{-# NOINLINE vkBeginCommandBufferSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBeginCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkCommandBufferBeginInfo* pBeginInfo
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
---
--- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
---           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
---
-vkBeginCommandBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                                     -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkBeginCommandBuffer = vkBeginCommandBufferUnsafe
-##else
-vkBeginCommandBuffer = vkBeginCommandBufferSafe
-
-##endif
-{-# INLINE vkBeginCommandBuffer #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBeginCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , const VkCommandBufferBeginInfo* pBeginInfo
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
-type HS_vkBeginCommandBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
-                                                     -> IO VkResult
-
-type PFN_vkBeginCommandBuffer = FunPtr HS_vkBeginCommandBuffer
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkBeginCommandBufferUnsafe ::
-               PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
-
-foreign import ccall safe "dynamic" unwrapVkBeginCommandBufferSafe
-               :: PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
-
-instance VulkanProc "vkBeginCommandBuffer" where
-        type VkProcType "vkBeginCommandBuffer" = HS_vkBeginCommandBuffer
-        vkProcSymbol = _VkBeginCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkBeginCommandBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkBeginCommandBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkEndCommandBuffer :: CString
-
-pattern VkEndCommandBuffer <- (is_VkEndCommandBuffer -> True)
-  where VkEndCommandBuffer = _VkEndCommandBuffer
-
-{-# INLINE _VkEndCommandBuffer #-}
-
-_VkEndCommandBuffer :: CString
-_VkEndCommandBuffer = Ptr "vkEndCommandBuffer\NUL"##
-
-{-# INLINE is_VkEndCommandBuffer #-}
-
-is_VkEndCommandBuffer :: CString -> Bool
-is_VkEndCommandBuffer = (EQ ==) . cmpCStrings _VkEndCommandBuffer
-
-type VkEndCommandBuffer = "vkEndCommandBuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
---
--- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
---           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkEndCommandBuffer"
-               vkEndCommandBufferUnsafe :: VkCommandBuffer -- ^ commandBuffer
-                                                           -> IO VkResult
-
-##else
-vkEndCommandBufferUnsafe :: VkCommandBuffer -- ^ commandBuffer
-                                            -> IO VkResult
-vkEndCommandBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkEndCommandBuffer)
-
-{-# NOINLINE vkEndCommandBufferUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
---
--- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
---           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkEndCommandBuffer"
-               vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> IO VkResult
-
-##else
-vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> IO VkResult
-vkEndCommandBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkEndCommandBuffer)
-
-{-# NOINLINE vkEndCommandBufferSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkEndCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
---
--- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
---           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
---
-vkEndCommandBuffer :: VkCommandBuffer -- ^ commandBuffer
-                                      -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkEndCommandBuffer = vkEndCommandBufferUnsafe
-##else
-vkEndCommandBuffer = vkEndCommandBufferSafe
-
-##endif
-{-# INLINE vkEndCommandBuffer #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkEndCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
-type HS_vkEndCommandBuffer = VkCommandBuffer -- ^ commandBuffer
-                                             -> IO VkResult
-
-type PFN_vkEndCommandBuffer = FunPtr HS_vkEndCommandBuffer
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEndCommandBufferUnsafe ::
-               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
-
-foreign import ccall safe "dynamic" unwrapVkEndCommandBufferSafe ::
-               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
-
-instance VulkanProc "vkEndCommandBuffer" where
-        type VkProcType "vkEndCommandBuffer" = HS_vkEndCommandBuffer
-        vkProcSymbol = _VkEndCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkEndCommandBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkEndCommandBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkResetCommandBuffer :: CString
-
-pattern VkResetCommandBuffer <- (is_VkResetCommandBuffer -> True)
-  where VkResetCommandBuffer = _VkResetCommandBuffer
-
-{-# INLINE _VkResetCommandBuffer #-}
-
-_VkResetCommandBuffer :: CString
-_VkResetCommandBuffer = Ptr "vkResetCommandBuffer\NUL"##
-
-{-# INLINE is_VkResetCommandBuffer #-}
-
-is_VkResetCommandBuffer :: CString -> Bool
-is_VkResetCommandBuffer
-  = (EQ ==) . cmpCStrings _VkResetCommandBuffer
-
-type VkResetCommandBuffer = "vkResetCommandBuffer"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
---
--- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
---           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkResetCommandBuffer"
-               vkResetCommandBufferUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkCommandBufferResetFlags -- ^ flags
-                                                            -> IO VkResult
-
-##else
-vkResetCommandBufferUnsafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> VkCommandBufferResetFlags -- ^ flags
-                                                                        -> IO VkResult
-vkResetCommandBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetCommandBuffer)
-
-{-# NOINLINE vkResetCommandBufferUnsafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
---
--- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
---           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkResetCommandBuffer"
-               vkResetCommandBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkCommandBufferResetFlags -- ^ flags
-                                                            -> IO VkResult
-
-##else
-vkResetCommandBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkCommandBufferResetFlags -- ^ flags
-                                                                      -> IO VkResult
-vkResetCommandBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandBuffer)
-
-{-# NOINLINE vkResetCommandBufferSafe #-}
-##endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkResetCommandBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkCommandBufferResetFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
---
--- or less efficient:
---
--- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
---
--- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
---           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
---
-vkResetCommandBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkCommandBufferResetFlags -- ^ flags
-                                                                  -> IO VkResult
-##ifdef UNSAFE_FFI_DEFAULT
-vkResetCommandBuffer = vkResetCommandBufferUnsafe
-##else
-vkResetCommandBuffer = vkResetCommandBufferSafe
-
-##endif
-{-# INLINE vkResetCommandBuffer #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkResetCommandBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkCommandBufferResetFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
-type HS_vkResetCommandBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkCommandBufferResetFlags -- ^ flags
-                                                  -> IO VkResult
-
-type PFN_vkResetCommandBuffer = FunPtr HS_vkResetCommandBuffer
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkResetCommandBufferUnsafe ::
-               PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
-
-foreign import ccall safe "dynamic" unwrapVkResetCommandBufferSafe
-               :: PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
-
-instance VulkanProc "vkResetCommandBuffer" where
-        type VkProcType "vkResetCommandBuffer" = HS_vkResetCommandBuffer
-        vkProcSymbol = _VkResetCommandBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkResetCommandBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkResetCommandBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBindPipeline :: CString
-
-pattern VkCmdBindPipeline <- (is_VkCmdBindPipeline -> True)
-  where VkCmdBindPipeline = _VkCmdBindPipeline
-
-{-# INLINE _VkCmdBindPipeline #-}
-
-_VkCmdBindPipeline :: CString
-_VkCmdBindPipeline = Ptr "vkCmdBindPipeline\NUL"##
-
-{-# INLINE is_VkCmdBindPipeline #-}
-
-is_VkCmdBindPipeline :: CString -> Bool
-is_VkCmdBindPipeline = (EQ ==) . cmpCStrings _VkCmdBindPipeline
-
-type VkCmdBindPipeline = "vkCmdBindPipeline"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
---
--- or less efficient:
---
--- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
---
--- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
---           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBindPipeline"
-               vkCmdBindPipelineUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                      -> VkPipeline -- ^ pipeline
-                                                                    -> IO ()
-
-##else
-vkCmdBindPipelineUnsafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                               -> VkPipeline -- ^ pipeline
-                                                                             -> IO ()
-vkCmdBindPipelineUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindPipeline)
-
-{-# NOINLINE vkCmdBindPipelineUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
---
--- or less efficient:
---
--- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
---
--- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
---           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBindPipeline" vkCmdBindPipelineSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-
-##else
-vkCmdBindPipelineSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                             -> VkPipeline -- ^ pipeline
-                                                                           -> IO ()
-vkCmdBindPipelineSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindPipeline)
-
-{-# NOINLINE vkCmdBindPipelineSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindPipeline
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipeline pipeline
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
---
--- or less efficient:
---
--- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
---
--- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
---           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
---
-vkCmdBindPipeline ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                         -> VkPipeline -- ^ pipeline
-                                                                       -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdBindPipeline = vkCmdBindPipelineUnsafe
-##else
-vkCmdBindPipeline = vkCmdBindPipelineSafe
-
-##endif
-{-# INLINE vkCmdBindPipeline #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindPipeline
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineBindPoint pipelineBindPoint
---   >     , VkPipeline pipeline
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
-type HS_vkCmdBindPipeline =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkPipelineBindPoint -- ^ pipelineBindPoint
-                                            -> VkPipeline -- ^ pipeline
-                                                          -> IO ()
-
-type PFN_vkCmdBindPipeline = FunPtr HS_vkCmdBindPipeline
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBindPipelineUnsafe
-               :: PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
-
-foreign import ccall safe "dynamic" unwrapVkCmdBindPipelineSafe ::
-               PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
-
-instance VulkanProc "vkCmdBindPipeline" where
-        type VkProcType "vkCmdBindPipeline" = HS_vkCmdBindPipeline
-        vkProcSymbol = _VkCmdBindPipeline
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdBindPipelineUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBindPipelineSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetViewport :: CString
-
-pattern VkCmdSetViewport <- (is_VkCmdSetViewport -> True)
-  where VkCmdSetViewport = _VkCmdSetViewport
-
-{-# INLINE _VkCmdSetViewport #-}
-
-_VkCmdSetViewport :: CString
-_VkCmdSetViewport = Ptr "vkCmdSetViewport\NUL"##
-
-{-# INLINE is_VkCmdSetViewport #-}
-
-is_VkCmdSetViewport :: CString -> Bool
-is_VkCmdSetViewport = (EQ ==) . cmpCStrings _VkCmdSetViewport
-
-type VkCmdSetViewport = "vkCmdSetViewport"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
---
--- or less efficient:
---
--- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
---
--- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
---           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetViewport"
-               vkCmdSetViewportUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstViewport
-                                         -> Word32 -- ^ viewportCount
-                                                   -> Ptr VkViewport -- ^ pViewports
-                                                                     -> IO ()
-
-##else
-vkCmdSetViewportUnsafe ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       -> Word32 -- ^ firstViewport
-                                                 -> Word32 -- ^ viewportCount
-                                                           -> Ptr VkViewport -- ^ pViewports
-                                                                             -> IO ()
-vkCmdSetViewportUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetViewport)
-
-{-# NOINLINE vkCmdSetViewportUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
---
--- or less efficient:
---
--- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
---
--- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
---           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetViewport" vkCmdSetViewportSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ firstViewport
-                                            -> Word32 -- ^ viewportCount
-                                                      -> Ptr VkViewport -- ^ pViewports
-                                                                        -> IO ()
-
-##else
-vkCmdSetViewportSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Word32 -- ^ firstViewport
-                                               -> Word32 -- ^ viewportCount
-                                                         -> Ptr VkViewport -- ^ pViewports
-                                                                           -> IO ()
-vkCmdSetViewportSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetViewport)
-
-{-# NOINLINE vkCmdSetViewportSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetViewport
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstViewport
--- >     , uint32_t viewportCount
--- >     , const VkViewport* pViewports
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
---
--- or less efficient:
---
--- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
---
--- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
---           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
---
-vkCmdSetViewport ::
-                 VkCommandBuffer -- ^ commandBuffer
-                                 -> Word32 -- ^ firstViewport
-                                           -> Word32 -- ^ viewportCount
-                                                     -> Ptr VkViewport -- ^ pViewports
-                                                                       -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetViewport = vkCmdSetViewportUnsafe
-##else
-vkCmdSetViewport = vkCmdSetViewportSafe
-
-##endif
-{-# INLINE vkCmdSetViewport #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetViewport
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstViewport
---   >     , uint32_t viewportCount
---   >     , const VkViewport* pViewports
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
-type HS_vkCmdSetViewport =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ firstViewport
-                               -> Word32 -- ^ viewportCount
-                                         -> Ptr VkViewport -- ^ pViewports
-                                                           -> IO ()
-
-type PFN_vkCmdSetViewport = FunPtr HS_vkCmdSetViewport
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetViewportUnsafe
-               :: PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetViewportSafe ::
-               PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
-
-instance VulkanProc "vkCmdSetViewport" where
-        type VkProcType "vkCmdSetViewport" = HS_vkCmdSetViewport
-        vkProcSymbol = _VkCmdSetViewport
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetViewportUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetViewportSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetScissor :: CString
-
-pattern VkCmdSetScissor <- (is_VkCmdSetScissor -> True)
-  where VkCmdSetScissor = _VkCmdSetScissor
-
-{-# INLINE _VkCmdSetScissor #-}
-
-_VkCmdSetScissor :: CString
-_VkCmdSetScissor = Ptr "vkCmdSetScissor\NUL"##
-
-{-# INLINE is_VkCmdSetScissor #-}
-
-is_VkCmdSetScissor :: CString -> Bool
-is_VkCmdSetScissor = (EQ ==) . cmpCStrings _VkCmdSetScissor
-
-type VkCmdSetScissor = "vkCmdSetScissor"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
---
--- or less efficient:
---
--- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
---
--- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
---           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetScissor" vkCmdSetScissorUnsafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ firstScissor
-                                            -> Word32 -- ^ scissorCount
-                                                      -> Ptr VkRect2D -- ^ pScissors
-                                                                      -> IO ()
-
-##else
-vkCmdSetScissorUnsafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> Word32 -- ^ firstScissor
-                                                -> Word32 -- ^ scissorCount
-                                                          -> Ptr VkRect2D -- ^ pScissors
-                                                                          -> IO ()
-vkCmdSetScissorUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetScissor)
-
-{-# NOINLINE vkCmdSetScissorUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
---
--- or less efficient:
---
--- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
---
--- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
---           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetScissor" vkCmdSetScissorSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ firstScissor
-                                         -> Word32 -- ^ scissorCount
-                                                   -> Ptr VkRect2D -- ^ pScissors
-                                                                   -> IO ()
-
-##else
-vkCmdSetScissorSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> Word32 -- ^ firstScissor
-                                              -> Word32 -- ^ scissorCount
-                                                        -> Ptr VkRect2D -- ^ pScissors
-                                                                        -> IO ()
-vkCmdSetScissorSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetScissor)
-
-{-# NOINLINE vkCmdSetScissorSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetScissor
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstScissor
--- >     , uint32_t scissorCount
--- >     , const VkRect2D* pScissors
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
---
--- or less efficient:
---
--- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
---
--- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
---           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
---
-vkCmdSetScissor ::
-                VkCommandBuffer -- ^ commandBuffer
-                                -> Word32 -- ^ firstScissor
-                                          -> Word32 -- ^ scissorCount
-                                                    -> Ptr VkRect2D -- ^ pScissors
-                                                                    -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetScissor = vkCmdSetScissorUnsafe
-##else
-vkCmdSetScissor = vkCmdSetScissorSafe
-
-##endif
-{-# INLINE vkCmdSetScissor #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetScissor
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstScissor
---   >     , uint32_t scissorCount
---   >     , const VkRect2D* pScissors
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
-type HS_vkCmdSetScissor =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ firstScissor
-                               -> Word32 -- ^ scissorCount
-                                         -> Ptr VkRect2D -- ^ pScissors
-                                                         -> IO ()
-
-type PFN_vkCmdSetScissor = FunPtr HS_vkCmdSetScissor
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetScissorUnsafe
-               :: PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetScissorSafe ::
-               PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
-
-instance VulkanProc "vkCmdSetScissor" where
-        type VkProcType "vkCmdSetScissor" = HS_vkCmdSetScissor
-        vkProcSymbol = _VkCmdSetScissor
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetScissorUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetScissorSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetLineWidth :: CString
-
-pattern VkCmdSetLineWidth <- (is_VkCmdSetLineWidth -> True)
-  where VkCmdSetLineWidth = _VkCmdSetLineWidth
-
-{-# INLINE _VkCmdSetLineWidth #-}
-
-_VkCmdSetLineWidth :: CString
-_VkCmdSetLineWidth = Ptr "vkCmdSetLineWidth\NUL"##
-
-{-# INLINE is_VkCmdSetLineWidth #-}
-
-is_VkCmdSetLineWidth :: CString -> Bool
-is_VkCmdSetLineWidth = (EQ ==) . cmpCStrings _VkCmdSetLineWidth
-
-type VkCmdSetLineWidth = "vkCmdSetLineWidth"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
---
--- or less efficient:
---
--- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
---
--- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
---           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetLineWidth"
-               vkCmdSetLineWidthUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> #{type float} -> IO ()
-
-##else
-vkCmdSetLineWidthUnsafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        -> #{type float} -> IO ()
-vkCmdSetLineWidthUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetLineWidth)
-
-{-# NOINLINE vkCmdSetLineWidthUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
---
--- or less efficient:
---
--- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
---
--- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
---           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetLineWidth" vkCmdSetLineWidthSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-
-##else
-vkCmdSetLineWidthSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> #{type float} -> IO ()
-vkCmdSetLineWidthSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetLineWidth)
-
-{-# NOINLINE vkCmdSetLineWidthSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetLineWidth
--- >     ( VkCommandBuffer commandBuffer
--- >     , float lineWidth
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
---
--- or less efficient:
---
--- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
---
--- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
---           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
---
-vkCmdSetLineWidth ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> #{type float} -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetLineWidth = vkCmdSetLineWidthUnsafe
-##else
-vkCmdSetLineWidth = vkCmdSetLineWidthSafe
-
-##endif
-{-# INLINE vkCmdSetLineWidth #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetLineWidth
---   >     ( VkCommandBuffer commandBuffer
---   >     , float lineWidth
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
-type HS_vkCmdSetLineWidth =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> #{type float} -> IO ()
-
-type PFN_vkCmdSetLineWidth = FunPtr HS_vkCmdSetLineWidth
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetLineWidthUnsafe
-               :: PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetLineWidthSafe ::
-               PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
-
-instance VulkanProc "vkCmdSetLineWidth" where
-        type VkProcType "vkCmdSetLineWidth" = HS_vkCmdSetLineWidth
-        vkProcSymbol = _VkCmdSetLineWidth
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetLineWidthUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetLineWidthSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetDepthBias :: CString
-
-pattern VkCmdSetDepthBias <- (is_VkCmdSetDepthBias -> True)
-  where VkCmdSetDepthBias = _VkCmdSetDepthBias
-
-{-# INLINE _VkCmdSetDepthBias #-}
-
-_VkCmdSetDepthBias :: CString
-_VkCmdSetDepthBias = Ptr "vkCmdSetDepthBias\NUL"##
-
-{-# INLINE is_VkCmdSetDepthBias #-}
-
-is_VkCmdSetDepthBias :: CString -> Bool
-is_VkCmdSetDepthBias = (EQ ==) . cmpCStrings _VkCmdSetDepthBias
-
-type VkCmdSetDepthBias = "vkCmdSetDepthBias"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
---
--- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
---           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetDepthBias"
-               vkCmdSetDepthBiasUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} ->
-                   #{type float} -> #{type float} -> IO ()
-
-##else
-vkCmdSetDepthBiasUnsafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          #{type float} ->
-                            #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBiasUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDepthBias)
-
-{-# NOINLINE vkCmdSetDepthBiasUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
---
--- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
---           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetDepthBias" vkCmdSetDepthBiasSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} ->
-                   #{type float} -> #{type float} -> IO ()
-
-##else
-vkCmdSetDepthBiasSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        #{type float} ->
-                          #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBiasSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBias)
-
-{-# NOINLINE vkCmdSetDepthBiasSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBias
--- >     ( VkCommandBuffer commandBuffer
--- >     , float depthBiasConstantFactor
--- >     , float depthBiasClamp
--- >     , float depthBiasSlopeFactor
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
---
--- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
---           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
---
-vkCmdSetDepthBias ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    #{type float} ->
-                      #{type float} -> #{type float} -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetDepthBias = vkCmdSetDepthBiasUnsafe
-##else
-vkCmdSetDepthBias = vkCmdSetDepthBiasSafe
-
-##endif
-{-# INLINE vkCmdSetDepthBias #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDepthBias
---   >     ( VkCommandBuffer commandBuffer
---   >     , float depthBiasConstantFactor
---   >     , float depthBiasClamp
---   >     , float depthBiasSlopeFactor
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
-type HS_vkCmdSetDepthBias =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       #{type float} ->
-         #{type float} -> #{type float} -> IO ()
-
-type PFN_vkCmdSetDepthBias = FunPtr HS_vkCmdSetDepthBias
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetDepthBiasUnsafe
-               :: PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBiasSafe ::
-               PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
-
-instance VulkanProc "vkCmdSetDepthBias" where
-        type VkProcType "vkCmdSetDepthBias" = HS_vkCmdSetDepthBias
-        vkProcSymbol = _VkCmdSetDepthBias
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDepthBiasUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBiasSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetBlendConstants :: CString
-
-pattern VkCmdSetBlendConstants <-
-        (is_VkCmdSetBlendConstants -> True)
-  where VkCmdSetBlendConstants = _VkCmdSetBlendConstants
-
-{-# INLINE _VkCmdSetBlendConstants #-}
-
-_VkCmdSetBlendConstants :: CString
-_VkCmdSetBlendConstants = Ptr "vkCmdSetBlendConstants\NUL"##
-
-{-# INLINE is_VkCmdSetBlendConstants #-}
-
-is_VkCmdSetBlendConstants :: CString -> Bool
-is_VkCmdSetBlendConstants
-  = (EQ ==) . cmpCStrings _VkCmdSetBlendConstants
-
-type VkCmdSetBlendConstants = "vkCmdSetBlendConstants"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
---
--- or less efficient:
---
--- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
---
--- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
---           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetBlendConstants"
-               vkCmdSetBlendConstantsUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr #{type float} -- ^ blendConstants
-                                                                -> IO ()
-
-##else
-vkCmdSetBlendConstantsUnsafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             -> Ptr #{type float} -- ^ blendConstants
-                                                                              -> IO ()
-vkCmdSetBlendConstantsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetBlendConstants)
-
-{-# NOINLINE vkCmdSetBlendConstantsUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
---
--- or less efficient:
---
--- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
---
--- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
---           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetBlendConstants"
-               vkCmdSetBlendConstantsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Ptr #{type float} -- ^ blendConstants
-                                                                -> IO ()
-
-##else
-vkCmdSetBlendConstantsSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> Ptr #{type float} -- ^ blendConstants
-                                                                            -> IO ()
-vkCmdSetBlendConstantsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetBlendConstants)
-
-{-# NOINLINE vkCmdSetBlendConstantsSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetBlendConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , const float blendConstants[4]
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
---
--- or less efficient:
---
--- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
---
--- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
---           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
---
-vkCmdSetBlendConstants ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       -> Ptr #{type float} -- ^ blendConstants
-                                                                        -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetBlendConstants = vkCmdSetBlendConstantsUnsafe
-##else
-vkCmdSetBlendConstants = vkCmdSetBlendConstantsSafe
-
-##endif
-{-# INLINE vkCmdSetBlendConstants #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetBlendConstants
---   >     ( VkCommandBuffer commandBuffer
---   >     , const float blendConstants[4]
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
-type HS_vkCmdSetBlendConstants =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Ptr #{type float} -- ^ blendConstants
-                                                      -> IO ()
-
-type PFN_vkCmdSetBlendConstants = FunPtr HS_vkCmdSetBlendConstants
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetBlendConstantsUnsafe ::
-               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdSetBlendConstantsSafe ::
-               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
-
-instance VulkanProc "vkCmdSetBlendConstants" where
-        type VkProcType "vkCmdSetBlendConstants" =
-             HS_vkCmdSetBlendConstants
-        vkProcSymbol = _VkCmdSetBlendConstants
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetBlendConstantsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetBlendConstantsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetDepthBounds :: CString
-
-pattern VkCmdSetDepthBounds <- (is_VkCmdSetDepthBounds -> True)
-  where VkCmdSetDepthBounds = _VkCmdSetDepthBounds
-
-{-# INLINE _VkCmdSetDepthBounds #-}
-
-_VkCmdSetDepthBounds :: CString
-_VkCmdSetDepthBounds = Ptr "vkCmdSetDepthBounds\NUL"##
-
-{-# INLINE is_VkCmdSetDepthBounds #-}
-
-is_VkCmdSetDepthBounds :: CString -> Bool
-is_VkCmdSetDepthBounds = (EQ ==) . cmpCStrings _VkCmdSetDepthBounds
-
-type VkCmdSetDepthBounds = "vkCmdSetDepthBounds"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
---
--- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
---           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetDepthBounds"
-               vkCmdSetDepthBoundsUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} -> #{type float} -> IO ()
-
-##else
-vkCmdSetDepthBoundsUnsafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          ->
-                            #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBoundsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDepthBounds)
-
-{-# NOINLINE vkCmdSetDepthBoundsUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
---
--- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
---           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetDepthBounds"
-               vkCmdSetDepthBoundsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 #{type float} -> #{type float} -> IO ()
-
-##else
-vkCmdSetDepthBoundsSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          #{type float} -> #{type float} -> IO ()
-vkCmdSetDepthBoundsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBounds)
-
-{-# NOINLINE vkCmdSetDepthBoundsSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDepthBounds
--- >     ( VkCommandBuffer commandBuffer
--- >     , float minDepthBounds
--- >     , float maxDepthBounds
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
---
--- or less efficient:
---
--- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
---
--- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
---           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
---
-vkCmdSetDepthBounds ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      #{type float} -> #{type float} -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetDepthBounds = vkCmdSetDepthBoundsUnsafe
-##else
-vkCmdSetDepthBounds = vkCmdSetDepthBoundsSafe
-
-##endif
-{-# INLINE vkCmdSetDepthBounds #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDepthBounds
---   >     ( VkCommandBuffer commandBuffer
---   >     , float minDepthBounds
---   >     , float maxDepthBounds
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
-type HS_vkCmdSetDepthBounds =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       #{type float} -> #{type float} -> IO ()
-
-type PFN_vkCmdSetDepthBounds = FunPtr HS_vkCmdSetDepthBounds
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetDepthBoundsUnsafe ::
-               PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBoundsSafe
-               :: PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
-
-instance VulkanProc "vkCmdSetDepthBounds" where
-        type VkProcType "vkCmdSetDepthBounds" = HS_vkCmdSetDepthBounds
-        vkProcSymbol = _VkCmdSetDepthBounds
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDepthBoundsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBoundsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetStencilCompareMask :: CString
-
-pattern VkCmdSetStencilCompareMask <-
-        (is_VkCmdSetStencilCompareMask -> True)
-  where VkCmdSetStencilCompareMask = _VkCmdSetStencilCompareMask
-
-{-# INLINE _VkCmdSetStencilCompareMask #-}
-
-_VkCmdSetStencilCompareMask :: CString
-_VkCmdSetStencilCompareMask = Ptr "vkCmdSetStencilCompareMask\NUL"##
-
-{-# INLINE is_VkCmdSetStencilCompareMask #-}
-
-is_VkCmdSetStencilCompareMask :: CString -> Bool
-is_VkCmdSetStencilCompareMask
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilCompareMask
-
-type VkCmdSetStencilCompareMask = "vkCmdSetStencilCompareMask"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
---
--- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
---           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetStencilCompareMask"
-               vkCmdSetStencilCompareMaskUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ compareMask
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilCompareMaskUnsafe ::
-                                 VkCommandBuffer -- ^ commandBuffer
-                                                 -> VkStencilFaceFlags -- ^ faceMask
-                                                                       -> Word32 -- ^ compareMask
-                                                                                 -> IO ()
-vkCmdSetStencilCompareMaskUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCmdSetStencilCompareMask)
-
-{-# NOINLINE vkCmdSetStencilCompareMaskUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
---
--- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
---           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetStencilCompareMask"
-               vkCmdSetStencilCompareMaskSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ compareMask
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilCompareMaskSafe ::
-                               VkCommandBuffer -- ^ commandBuffer
-                                               -> VkStencilFaceFlags -- ^ faceMask
-                                                                     -> Word32 -- ^ compareMask
-                                                                               -> IO ()
-vkCmdSetStencilCompareMaskSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCmdSetStencilCompareMask)
-
-{-# NOINLINE vkCmdSetStencilCompareMaskSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilCompareMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t compareMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
---
--- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
---           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
---
-vkCmdSetStencilCompareMask ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> VkStencilFaceFlags -- ^ faceMask
-                                                                 -> Word32 -- ^ compareMask
-                                                                           -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetStencilCompareMask = vkCmdSetStencilCompareMaskUnsafe
-##else
-vkCmdSetStencilCompareMask = vkCmdSetStencilCompareMaskSafe
-
-##endif
-{-# INLINE vkCmdSetStencilCompareMask #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilCompareMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t compareMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
-type HS_vkCmdSetStencilCompareMask =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ compareMask
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilCompareMask =
-     FunPtr HS_vkCmdSetStencilCompareMask
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetStencilCompareMaskUnsafe ::
-               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdSetStencilCompareMaskSafe ::
-               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
-
-instance VulkanProc "vkCmdSetStencilCompareMask" where
-        type VkProcType "vkCmdSetStencilCompareMask" =
-             HS_vkCmdSetStencilCompareMask
-        vkProcSymbol = _VkCmdSetStencilCompareMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilCompareMaskUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilCompareMaskSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetStencilWriteMask :: CString
-
-pattern VkCmdSetStencilWriteMask <-
-        (is_VkCmdSetStencilWriteMask -> True)
-  where VkCmdSetStencilWriteMask = _VkCmdSetStencilWriteMask
-
-{-# INLINE _VkCmdSetStencilWriteMask #-}
-
-_VkCmdSetStencilWriteMask :: CString
-_VkCmdSetStencilWriteMask = Ptr "vkCmdSetStencilWriteMask\NUL"##
-
-{-# INLINE is_VkCmdSetStencilWriteMask #-}
-
-is_VkCmdSetStencilWriteMask :: CString -> Bool
-is_VkCmdSetStencilWriteMask
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilWriteMask
-
-type VkCmdSetStencilWriteMask = "vkCmdSetStencilWriteMask"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
---
--- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
---           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetStencilWriteMask"
-               vkCmdSetStencilWriteMaskUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ writeMask
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilWriteMaskUnsafe ::
-                               VkCommandBuffer -- ^ commandBuffer
-                                               -> VkStencilFaceFlags -- ^ faceMask
-                                                                     -> Word32 -- ^ writeMask
-                                                                               -> IO ()
-vkCmdSetStencilWriteMaskUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCmdSetStencilWriteMask)
-
-{-# NOINLINE vkCmdSetStencilWriteMaskUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
---
--- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
---           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetStencilWriteMask"
-               vkCmdSetStencilWriteMaskSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ writeMask
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilWriteMaskSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             -> VkStencilFaceFlags -- ^ faceMask
-                                                                   -> Word32 -- ^ writeMask
-                                                                             -> IO ()
-vkCmdSetStencilWriteMaskSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilWriteMask)
-
-{-# NOINLINE vkCmdSetStencilWriteMaskSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilWriteMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t writeMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
---
--- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
---           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
---
-vkCmdSetStencilWriteMask ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkStencilFaceFlags -- ^ faceMask
-                                                               -> Word32 -- ^ writeMask
-                                                                         -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetStencilWriteMask = vkCmdSetStencilWriteMaskUnsafe
-##else
-vkCmdSetStencilWriteMask = vkCmdSetStencilWriteMaskSafe
-
-##endif
-{-# INLINE vkCmdSetStencilWriteMask #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilWriteMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t writeMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
-type HS_vkCmdSetStencilWriteMask =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ writeMask
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilWriteMask =
-     FunPtr HS_vkCmdSetStencilWriteMask
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetStencilWriteMaskUnsafe ::
-               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdSetStencilWriteMaskSafe ::
-               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
-
-instance VulkanProc "vkCmdSetStencilWriteMask" where
-        type VkProcType "vkCmdSetStencilWriteMask" =
-             HS_vkCmdSetStencilWriteMask
-        vkProcSymbol = _VkCmdSetStencilWriteMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilWriteMaskUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilWriteMaskSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetStencilReference :: CString
-
-pattern VkCmdSetStencilReference <-
-        (is_VkCmdSetStencilReference -> True)
-  where VkCmdSetStencilReference = _VkCmdSetStencilReference
-
-{-# INLINE _VkCmdSetStencilReference #-}
-
-_VkCmdSetStencilReference :: CString
-_VkCmdSetStencilReference = Ptr "vkCmdSetStencilReference\NUL"##
-
-{-# INLINE is_VkCmdSetStencilReference #-}
-
-is_VkCmdSetStencilReference :: CString -> Bool
-is_VkCmdSetStencilReference
-  = (EQ ==) . cmpCStrings _VkCmdSetStencilReference
-
-type VkCmdSetStencilReference = "vkCmdSetStencilReference"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
---
--- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
---           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetStencilReference"
-               vkCmdSetStencilReferenceUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ reference
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilReferenceUnsafe ::
-                               VkCommandBuffer -- ^ commandBuffer
-                                               -> VkStencilFaceFlags -- ^ faceMask
-                                                                     -> Word32 -- ^ reference
-                                                                               -> IO ()
-vkCmdSetStencilReferenceUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCmdSetStencilReference)
-
-{-# NOINLINE vkCmdSetStencilReferenceUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
---
--- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
---           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetStencilReference"
-               vkCmdSetStencilReferenceSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkStencilFaceFlags -- ^ faceMask
-                                                     -> Word32 -- ^ reference
-                                                               -> IO ()
-
-##else
-vkCmdSetStencilReferenceSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             -> VkStencilFaceFlags -- ^ faceMask
-                                                                   -> Word32 -- ^ reference
-                                                                             -> IO ()
-vkCmdSetStencilReferenceSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilReference)
-
-{-# NOINLINE vkCmdSetStencilReferenceSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetStencilReference
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkStencilFaceFlags faceMask
--- >     , uint32_t reference
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
---
--- or less efficient:
---
--- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
---
--- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
---           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
---
-vkCmdSetStencilReference ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkStencilFaceFlags -- ^ faceMask
-                                                               -> Word32 -- ^ reference
-                                                                         -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetStencilReference = vkCmdSetStencilReferenceUnsafe
-##else
-vkCmdSetStencilReference = vkCmdSetStencilReferenceSafe
-
-##endif
-{-# INLINE vkCmdSetStencilReference #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetStencilReference
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkStencilFaceFlags faceMask
---   >     , uint32_t reference
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
-type HS_vkCmdSetStencilReference =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkStencilFaceFlags -- ^ faceMask
-                                           -> Word32 -- ^ reference
-                                                     -> IO ()
-
-type PFN_vkCmdSetStencilReference =
-     FunPtr HS_vkCmdSetStencilReference
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetStencilReferenceUnsafe ::
-               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdSetStencilReferenceSafe ::
-               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
-
-instance VulkanProc "vkCmdSetStencilReference" where
-        type VkProcType "vkCmdSetStencilReference" =
-             HS_vkCmdSetStencilReference
-        vkProcSymbol = _VkCmdSetStencilReference
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilReferenceUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetStencilReferenceSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBindDescriptorSets :: CString
-
-pattern VkCmdBindDescriptorSets <-
-        (is_VkCmdBindDescriptorSets -> True)
-  where VkCmdBindDescriptorSets = _VkCmdBindDescriptorSets
-
-{-# INLINE _VkCmdBindDescriptorSets #-}
-
-_VkCmdBindDescriptorSets :: CString
-_VkCmdBindDescriptorSets = Ptr "vkCmdBindDescriptorSets\NUL"##
-
-{-# INLINE is_VkCmdBindDescriptorSets #-}
-
-is_VkCmdBindDescriptorSets :: CString -> Bool
-is_VkCmdBindDescriptorSets
-  = (EQ ==) . cmpCStrings _VkCmdBindDescriptorSets
-
-type VkCmdBindDescriptorSets = "vkCmdBindDescriptorSets"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
---
--- or less efficient:
---
--- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
---
--- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
---           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBindDescriptorSets"
-               vkCmdBindDescriptorSetsUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineBindPoint -- ^ pipelineBindPoint
-                                     ->
-                   VkPipelineLayout -- ^ layout
-                                    ->
-                     Word32 -- ^ firstSet
-                            ->
-                       Word32 -- ^ descriptorSetCount
-                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> Word32 -- ^ dynamicOffsetCount
-                                                               -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                             -> IO ()
-
-##else
-vkCmdBindDescriptorSetsUnsafe ::
-                              VkCommandBuffer -- ^ commandBuffer
-                                              ->
-                                VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                    ->
-                                  VkPipelineLayout -- ^ layout
-                                                   ->
-                                    Word32 -- ^ firstSet
-                                           ->
-                                      Word32 -- ^ descriptorSetCount
-                                             -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                    -> Word32 -- ^ dynamicOffsetCount
-                                                                              -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                                            -> IO ()
-vkCmdBindDescriptorSetsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindDescriptorSets)
-
-{-# NOINLINE vkCmdBindDescriptorSetsUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
---
--- or less efficient:
---
--- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
---
--- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
---           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBindDescriptorSets"
-               vkCmdBindDescriptorSetsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineBindPoint -- ^ pipelineBindPoint
-                                     ->
-                   VkPipelineLayout -- ^ layout
-                                    ->
-                     Word32 -- ^ firstSet
-                            ->
-                       Word32 -- ^ descriptorSetCount
-                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                     -> Word32 -- ^ dynamicOffsetCount
-                                                               -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                             -> IO ()
-
-##else
-vkCmdBindDescriptorSetsSafe ::
-                            VkCommandBuffer -- ^ commandBuffer
-                                            ->
-                              VkPipelineBindPoint -- ^ pipelineBindPoint
-                                                  ->
-                                VkPipelineLayout -- ^ layout
-                                                 ->
-                                  Word32 -- ^ firstSet
-                                         ->
-                                    Word32 -- ^ descriptorSetCount
-                                           -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                                  -> Word32 -- ^ dynamicOffsetCount
-                                                                            -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                                          -> IO ()
-vkCmdBindDescriptorSetsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindDescriptorSets)
-
-{-# NOINLINE vkCmdBindDescriptorSetsSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindDescriptorSets
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineBindPoint pipelineBindPoint
--- >     , VkPipelineLayout layout
--- >     , uint32_t firstSet
--- >     , uint32_t descriptorSetCount
--- >     , const VkDescriptorSet* pDescriptorSets
--- >     , uint32_t dynamicOffsetCount
--- >     , const uint32_t* pDynamicOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
---
--- or less efficient:
---
--- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
---
--- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
---           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
---
-vkCmdBindDescriptorSets ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkPipelineBindPoint -- ^ pipelineBindPoint
-                                              ->
-                            VkPipelineLayout -- ^ layout
-                                             ->
-                              Word32 -- ^ firstSet
-                                     ->
-                                Word32 -- ^ descriptorSetCount
-                                       -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                                              -> Word32 -- ^ dynamicOffsetCount
-                                                                        -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                                      -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdBindDescriptorSets = vkCmdBindDescriptorSetsUnsafe
-##else
-vkCmdBindDescriptorSets = vkCmdBindDescriptorSetsSafe
-
-##endif
-{-# INLINE vkCmdBindDescriptorSets #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindDescriptorSets
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineBindPoint pipelineBindPoint
---   >     , VkPipelineLayout layout
---   >     , uint32_t firstSet
---   >     , uint32_t descriptorSetCount
---   >     , const VkDescriptorSet* pDescriptorSets
---   >     , uint32_t dynamicOffsetCount
---   >     , const uint32_t* pDynamicOffsets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
-type HS_vkCmdBindDescriptorSets =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineBindPoint -- ^ pipelineBindPoint
-                           ->
-         VkPipelineLayout -- ^ layout
-                          ->
-           Word32 -- ^ firstSet
-                  ->
-             Word32 -- ^ descriptorSetCount
-                    -> Ptr VkDescriptorSet -- ^ pDescriptorSets
-                                           -> Word32 -- ^ dynamicOffsetCount
-                                                     -> Ptr Word32 -- ^ pDynamicOffsets
-                                                                   -> IO ()
-
-type PFN_vkCmdBindDescriptorSets =
-     FunPtr HS_vkCmdBindDescriptorSets
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdBindDescriptorSetsUnsafe ::
-               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdBindDescriptorSetsSafe ::
-               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
-
-instance VulkanProc "vkCmdBindDescriptorSets" where
-        type VkProcType "vkCmdBindDescriptorSets" =
-             HS_vkCmdBindDescriptorSets
-        vkProcSymbol = _VkCmdBindDescriptorSets
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdBindDescriptorSetsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBindDescriptorSetsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBindIndexBuffer :: CString
-
-pattern VkCmdBindIndexBuffer <- (is_VkCmdBindIndexBuffer -> True)
-  where VkCmdBindIndexBuffer = _VkCmdBindIndexBuffer
-
-{-# INLINE _VkCmdBindIndexBuffer #-}
-
-_VkCmdBindIndexBuffer :: CString
-_VkCmdBindIndexBuffer = Ptr "vkCmdBindIndexBuffer\NUL"##
-
-{-# INLINE is_VkCmdBindIndexBuffer #-}
-
-is_VkCmdBindIndexBuffer :: CString -> Bool
-is_VkCmdBindIndexBuffer
-  = (EQ ==) . cmpCStrings _VkCmdBindIndexBuffer
-
-type VkCmdBindIndexBuffer = "vkCmdBindIndexBuffer"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
---
--- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
---           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBindIndexBuffer"
-               vkCmdBindIndexBufferUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> VkIndexType -- ^ indexType
-                                                                          -> IO ()
-
-##else
-vkCmdBindIndexBufferUnsafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> VkBuffer -- ^ buffer
-                                                       -> VkDeviceSize -- ^ offset
-                                                                       -> VkIndexType -- ^ indexType
-                                                                                      -> IO ()
-vkCmdBindIndexBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindIndexBuffer)
-
-{-# NOINLINE vkCmdBindIndexBufferUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
---
--- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
---           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBindIndexBuffer"
-               vkCmdBindIndexBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> VkIndexType -- ^ indexType
-                                                                          -> IO ()
-
-##else
-vkCmdBindIndexBufferSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> VkBuffer -- ^ buffer
-                                                     -> VkDeviceSize -- ^ offset
-                                                                     -> VkIndexType -- ^ indexType
-                                                                                    -> IO ()
-vkCmdBindIndexBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindIndexBuffer)
-
-{-# NOINLINE vkCmdBindIndexBufferSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindIndexBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , VkIndexType indexType
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
---
--- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
---           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
---
-vkCmdBindIndexBuffer ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkBuffer -- ^ buffer
-                                                 -> VkDeviceSize -- ^ offset
-                                                                 -> VkIndexType -- ^ indexType
-                                                                                -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdBindIndexBuffer = vkCmdBindIndexBufferUnsafe
-##else
-vkCmdBindIndexBuffer = vkCmdBindIndexBufferSafe
-
-##endif
-{-# INLINE vkCmdBindIndexBuffer #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindIndexBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , VkIndexType indexType
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
-type HS_vkCmdBindIndexBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> VkIndexType -- ^ indexType
-                                                                -> IO ()
-
-type PFN_vkCmdBindIndexBuffer = FunPtr HS_vkCmdBindIndexBuffer
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdBindIndexBufferUnsafe ::
-               PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCmdBindIndexBufferSafe
-               :: PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
-
-instance VulkanProc "vkCmdBindIndexBuffer" where
-        type VkProcType "vkCmdBindIndexBuffer" = HS_vkCmdBindIndexBuffer
-        vkProcSymbol = _VkCmdBindIndexBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdBindIndexBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBindIndexBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBindVertexBuffers :: CString
-
-pattern VkCmdBindVertexBuffers <-
-        (is_VkCmdBindVertexBuffers -> True)
-  where VkCmdBindVertexBuffers = _VkCmdBindVertexBuffers
-
-{-# INLINE _VkCmdBindVertexBuffers #-}
-
-_VkCmdBindVertexBuffers :: CString
-_VkCmdBindVertexBuffers = Ptr "vkCmdBindVertexBuffers\NUL"##
-
-{-# INLINE is_VkCmdBindVertexBuffers #-}
-
-is_VkCmdBindVertexBuffers :: CString -> Bool
-is_VkCmdBindVertexBuffers
-  = (EQ ==) . cmpCStrings _VkCmdBindVertexBuffers
-
-type VkCmdBindVertexBuffers = "vkCmdBindVertexBuffers"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
---
--- or less efficient:
---
--- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
---
--- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
---           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBindVertexBuffers"
-               vkCmdBindVertexBuffersUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ firstBinding
-                        -> Word32 -- ^ bindingCount
-                                  -> Ptr VkBuffer -- ^ pBuffers
-                                                  -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                      -> IO ()
-
-##else
-vkCmdBindVertexBuffersUnsafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             ->
-                               Word32 -- ^ firstBinding
-                                      -> Word32 -- ^ bindingCount
-                                                -> Ptr VkBuffer -- ^ pBuffers
-                                                                -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                                    -> IO ()
-vkCmdBindVertexBuffersUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindVertexBuffers)
-
-{-# NOINLINE vkCmdBindVertexBuffersUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
---
--- or less efficient:
---
--- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
---
--- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
---           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBindVertexBuffers"
-               vkCmdBindVertexBuffersSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ firstBinding
-                        -> Word32 -- ^ bindingCount
-                                  -> Ptr VkBuffer -- ^ pBuffers
-                                                  -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                      -> IO ()
-
-##else
-vkCmdBindVertexBuffersSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             Word32 -- ^ firstBinding
-                                    -> Word32 -- ^ bindingCount
-                                              -> Ptr VkBuffer -- ^ pBuffers
-                                                              -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                                  -> IO ()
-vkCmdBindVertexBuffersSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindVertexBuffers)
-
-{-# NOINLINE vkCmdBindVertexBuffersSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @both@
---
--- > void vkCmdBindVertexBuffers
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t firstBinding
--- >     , uint32_t bindingCount
--- >     , const VkBuffer* pBuffers
--- >     , const VkDeviceSize* pOffsets
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
---
--- or less efficient:
---
--- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
---
--- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
---           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
---
-vkCmdBindVertexBuffers ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         Word32 -- ^ firstBinding
-                                -> Word32 -- ^ bindingCount
-                                          -> Ptr VkBuffer -- ^ pBuffers
-                                                          -> Ptr VkDeviceSize -- ^ pOffsets
-                                                                              -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdBindVertexBuffers = vkCmdBindVertexBuffersUnsafe
-##else
-vkCmdBindVertexBuffers = vkCmdBindVertexBuffersSafe
-
-##endif
-{-# INLINE vkCmdBindVertexBuffers #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @both@
---
---   > void vkCmdBindVertexBuffers
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t firstBinding
---   >     , uint32_t bindingCount
---   >     , const VkBuffer* pBuffers
---   >     , const VkDeviceSize* pOffsets
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
-type HS_vkCmdBindVertexBuffers =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ firstBinding
-              -> Word32 -- ^ bindingCount
-                        -> Ptr VkBuffer -- ^ pBuffers
-                                        -> Ptr VkDeviceSize -- ^ pOffsets
-                                                            -> IO ()
-
-type PFN_vkCmdBindVertexBuffers = FunPtr HS_vkCmdBindVertexBuffers
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdBindVertexBuffersUnsafe ::
-               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdBindVertexBuffersSafe ::
-               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
-
-instance VulkanProc "vkCmdBindVertexBuffers" where
-        type VkProcType "vkCmdBindVertexBuffers" =
-             HS_vkCmdBindVertexBuffers
-        vkProcSymbol = _VkCmdBindVertexBuffers
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdBindVertexBuffersUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBindVertexBuffersSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDraw :: CString
-
-pattern VkCmdDraw <- (is_VkCmdDraw -> True)
-  where VkCmdDraw = _VkCmdDraw
-
-{-# INLINE _VkCmdDraw #-}
-
-_VkCmdDraw :: CString
-_VkCmdDraw = Ptr "vkCmdDraw\NUL"##
-
-{-# INLINE is_VkCmdDraw #-}
-
-is_VkCmdDraw :: CString -> Bool
-is_VkCmdDraw = (EQ ==) . cmpCStrings _VkCmdDraw
-
-type VkCmdDraw = "vkCmdDraw"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
---
--- or less efficient:
---
--- > myCmdDraw <- vkGetProc @VkCmdDraw
---
--- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
---           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDraw" vkCmdDrawUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ vertexCount
-                                         -> Word32 -- ^ instanceCount
-                                                   -> Word32 -- ^ firstVertex
-                                                             -> Word32 -- ^ firstInstance
-                                                                       -> IO ()
-
-##else
-vkCmdDrawUnsafe ::
-                VkCommandBuffer -- ^ commandBuffer
-                                -> Word32 -- ^ vertexCount
-                                          -> Word32 -- ^ instanceCount
-                                                    -> Word32 -- ^ firstVertex
-                                                              -> Word32 -- ^ firstInstance
-                                                                        -> IO ()
-vkCmdDrawUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDraw)
-
-{-# NOINLINE vkCmdDrawUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
---
--- or less efficient:
---
--- > myCmdDraw <- vkGetProc @VkCmdDraw
---
--- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
---           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDraw" vkCmdDrawSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ vertexCount
-                                         -> Word32 -- ^ instanceCount
-                                                   -> Word32 -- ^ firstVertex
-                                                             -> Word32 -- ^ firstInstance
-                                                                       -> IO ()
-
-##else
-vkCmdDrawSafe ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> Word32 -- ^ vertexCount
-                                        -> Word32 -- ^ instanceCount
-                                                  -> Word32 -- ^ firstVertex
-                                                            -> Word32 -- ^ firstInstance
-                                                                      -> IO ()
-vkCmdDrawSafe = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDraw)
-
-{-# NOINLINE vkCmdDrawSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDraw
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t vertexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstVertex
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
---
--- or less efficient:
---
--- > myCmdDraw <- vkGetProc @VkCmdDraw
---
--- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
---           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
---
-vkCmdDraw ::
-          VkCommandBuffer -- ^ commandBuffer
-                          -> Word32 -- ^ vertexCount
-                                    -> Word32 -- ^ instanceCount
-                                              -> Word32 -- ^ firstVertex
-                                                        -> Word32 -- ^ firstInstance
-                                                                  -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdDraw = vkCmdDrawUnsafe
-##else
-vkCmdDraw = vkCmdDrawSafe
-
-##endif
-{-# INLINE vkCmdDraw #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDraw
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t vertexCount
---   >     , uint32_t instanceCount
---   >     , uint32_t firstVertex
---   >     , uint32_t firstInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
-type HS_vkCmdDraw =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ vertexCount
-                               -> Word32 -- ^ instanceCount
-                                         -> Word32 -- ^ firstVertex
-                                                   -> Word32 -- ^ firstInstance
-                                                             -> IO ()
-
-type PFN_vkCmdDraw = FunPtr HS_vkCmdDraw
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDrawUnsafe ::
-               PFN_vkCmdDraw -> HS_vkCmdDraw
-
-foreign import ccall safe "dynamic" unwrapVkCmdDrawSafe ::
-               PFN_vkCmdDraw -> HS_vkCmdDraw
-
-instance VulkanProc "vkCmdDraw" where
-        type VkProcType "vkCmdDraw" = HS_vkCmdDraw
-        vkProcSymbol = _VkCmdDraw
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDrawIndexed :: CString
-
-pattern VkCmdDrawIndexed <- (is_VkCmdDrawIndexed -> True)
-  where VkCmdDrawIndexed = _VkCmdDrawIndexed
-
-{-# INLINE _VkCmdDrawIndexed #-}
-
-_VkCmdDrawIndexed :: CString
-_VkCmdDrawIndexed = Ptr "vkCmdDrawIndexed\NUL"##
-
-{-# INLINE is_VkCmdDrawIndexed #-}
-
-is_VkCmdDrawIndexed :: CString -> Bool
-is_VkCmdDrawIndexed = (EQ ==) . cmpCStrings _VkCmdDrawIndexed
-
-type VkCmdDrawIndexed = "vkCmdDrawIndexed"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
---
--- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
---           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDrawIndexed"
-               vkCmdDrawIndexedUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ indexCount
-                        -> Word32 -- ^ instanceCount
-                                  -> Word32 -- ^ firstIndex
-                                            -> Int32 -- ^ vertexOffset
-                                                     -> Word32 -- ^ firstInstance
-                                                               -> IO ()
-
-##else
-vkCmdDrawIndexedUnsafe ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         Word32 -- ^ indexCount
-                                -> Word32 -- ^ instanceCount
-                                          -> Word32 -- ^ firstIndex
-                                                    -> Int32 -- ^ vertexOffset
-                                                             -> Word32 -- ^ firstInstance
-                                                                       -> IO ()
-vkCmdDrawIndexedUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDrawIndexed)
-
-{-# NOINLINE vkCmdDrawIndexedUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
---
--- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
---           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDrawIndexed" vkCmdDrawIndexedSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ indexCount
-                        -> Word32 -- ^ instanceCount
-                                  -> Word32 -- ^ firstIndex
-                                            -> Int32 -- ^ vertexOffset
-                                                     -> Word32 -- ^ firstInstance
-                                                               -> IO ()
-
-##else
-vkCmdDrawIndexedSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       Word32 -- ^ indexCount
-                              -> Word32 -- ^ instanceCount
-                                        -> Word32 -- ^ firstIndex
-                                                  -> Int32 -- ^ vertexOffset
-                                                           -> Word32 -- ^ firstInstance
-                                                                     -> IO ()
-vkCmdDrawIndexedSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexed)
-
-{-# NOINLINE vkCmdDrawIndexedSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexed
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t indexCount
--- >     , uint32_t instanceCount
--- >     , uint32_t firstIndex
--- >     , int32_t vertexOffset
--- >     , uint32_t firstInstance
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
---
--- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
---           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
---
-vkCmdDrawIndexed ::
-                 VkCommandBuffer -- ^ commandBuffer
-                                 ->
-                   Word32 -- ^ indexCount
-                          -> Word32 -- ^ instanceCount
-                                    -> Word32 -- ^ firstIndex
-                                              -> Int32 -- ^ vertexOffset
-                                                       -> Word32 -- ^ firstInstance
-                                                                 -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdDrawIndexed = vkCmdDrawIndexedUnsafe
-##else
-vkCmdDrawIndexed = vkCmdDrawIndexedSafe
-
-##endif
-{-# INLINE vkCmdDrawIndexed #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndexed
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t indexCount
---   >     , uint32_t instanceCount
---   >     , uint32_t firstIndex
---   >     , int32_t vertexOffset
---   >     , uint32_t firstInstance
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
-type HS_vkCmdDrawIndexed =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ indexCount
-              -> Word32 -- ^ instanceCount
-                        -> Word32 -- ^ firstIndex
-                                  -> Int32 -- ^ vertexOffset
-                                           -> Word32 -- ^ firstInstance
-                                                     -> IO ()
-
-type PFN_vkCmdDrawIndexed = FunPtr HS_vkCmdDrawIndexed
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndexedUnsafe
-               :: PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
-
-foreign import ccall safe "dynamic" unwrapVkCmdDrawIndexedSafe ::
-               PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
-
-instance VulkanProc "vkCmdDrawIndexed" where
-        type VkProcType "vkCmdDrawIndexed" = HS_vkCmdDrawIndexed
-        vkProcSymbol = _VkCmdDrawIndexed
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndexedUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDrawIndirect :: CString
-
-pattern VkCmdDrawIndirect <- (is_VkCmdDrawIndirect -> True)
-  where VkCmdDrawIndirect = _VkCmdDrawIndirect
-
-{-# INLINE _VkCmdDrawIndirect #-}
-
-_VkCmdDrawIndirect :: CString
-_VkCmdDrawIndirect = Ptr "vkCmdDrawIndirect\NUL"##
-
-{-# INLINE is_VkCmdDrawIndirect #-}
-
-is_VkCmdDrawIndirect :: CString -> Bool
-is_VkCmdDrawIndirect = (EQ ==) . cmpCStrings _VkCmdDrawIndirect
-
-type VkCmdDrawIndirect = "vkCmdDrawIndirect"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
---
--- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
---           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDrawIndirect"
-               vkCmdDrawIndirectUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
-vkCmdDrawIndirectUnsafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkBuffer -- ^ buffer
-                                   -> VkDeviceSize -- ^ offset
-                                                   -> Word32 -- ^ drawCount
-                                                             -> Word32 -- ^ stride
-                                                                       -> IO ()
-vkCmdDrawIndirectUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDrawIndirect)
-
-{-# NOINLINE vkCmdDrawIndirectUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
---
--- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
---           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDrawIndirect" vkCmdDrawIndirectSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
-vkCmdDrawIndirectSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> Word32 -- ^ drawCount
-                                                           -> Word32 -- ^ stride
-                                                                     -> IO ()
-vkCmdDrawIndirectSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndirect)
-
-{-# NOINLINE vkCmdDrawIndirectSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
---
--- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
---           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
---
-vkCmdDrawIndirect ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkBuffer -- ^ buffer
-                             -> VkDeviceSize -- ^ offset
-                                             -> Word32 -- ^ drawCount
-                                                       -> Word32 -- ^ stride
-                                                                 -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdDrawIndirect = vkCmdDrawIndirectUnsafe
-##else
-vkCmdDrawIndirect = vkCmdDrawIndirectSafe
-
-##endif
-{-# INLINE vkCmdDrawIndirect #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , uint32_t drawCount
---   >     , uint32_t stride
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
-type HS_vkCmdDrawIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceSize -- ^ offset
-                                -> Word32 -- ^ drawCount
-                                          -> Word32 -- ^ stride
-                                                    -> IO ()
-
-type PFN_vkCmdDrawIndirect = FunPtr HS_vkCmdDrawIndirect
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndirectUnsafe
-               :: PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
-
-foreign import ccall safe "dynamic" unwrapVkCmdDrawIndirectSafe ::
-               PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
-
-instance VulkanProc "vkCmdDrawIndirect" where
-        type VkProcType "vkCmdDrawIndirect" = HS_vkCmdDrawIndirect
-        vkProcSymbol = _VkCmdDrawIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDrawIndexedIndirect :: CString
-
-pattern VkCmdDrawIndexedIndirect <-
-        (is_VkCmdDrawIndexedIndirect -> True)
-  where VkCmdDrawIndexedIndirect = _VkCmdDrawIndexedIndirect
-
-{-# INLINE _VkCmdDrawIndexedIndirect #-}
-
-_VkCmdDrawIndexedIndirect :: CString
-_VkCmdDrawIndexedIndirect = Ptr "vkCmdDrawIndexedIndirect\NUL"##
-
-{-# INLINE is_VkCmdDrawIndexedIndirect #-}
-
-is_VkCmdDrawIndexedIndirect :: CString -> Bool
-is_VkCmdDrawIndexedIndirect
-  = (EQ ==) . cmpCStrings _VkCmdDrawIndexedIndirect
-
-type VkCmdDrawIndexedIndirect = "vkCmdDrawIndexedIndirect"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
---
--- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
---           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDrawIndexedIndirect"
-               vkCmdDrawIndexedIndirectUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
-vkCmdDrawIndexedIndirectUnsafe ::
-                               VkCommandBuffer -- ^ commandBuffer
-                                               ->
-                                 VkBuffer -- ^ buffer
-                                          -> VkDeviceSize -- ^ offset
-                                                          -> Word32 -- ^ drawCount
-                                                                    -> Word32 -- ^ stride
-                                                                              -> IO ()
-vkCmdDrawIndexedIndirectUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCmdDrawIndexedIndirect)
-
-{-# NOINLINE vkCmdDrawIndexedIndirectUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
---
--- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
---           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDrawIndexedIndirect"
-               vkCmdDrawIndexedIndirectSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ buffer
-                          -> VkDeviceSize -- ^ offset
-                                          -> Word32 -- ^ drawCount
-                                                    -> Word32 -- ^ stride
-                                                              -> IO ()
-
-##else
-vkCmdDrawIndexedIndirectSafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             ->
-                               VkBuffer -- ^ buffer
-                                        -> VkDeviceSize -- ^ offset
-                                                        -> Word32 -- ^ drawCount
-                                                                  -> Word32 -- ^ stride
-                                                                            -> IO ()
-vkCmdDrawIndexedIndirectSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexedIndirect)
-
-{-# NOINLINE vkCmdDrawIndexedIndirectSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdDrawIndexedIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     , uint32_t drawCount
--- >     , uint32_t stride
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
---
--- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
---           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
---
-vkCmdDrawIndexedIndirect ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkBuffer -- ^ buffer
-                                    -> VkDeviceSize -- ^ offset
-                                                    -> Word32 -- ^ drawCount
-                                                              -> Word32 -- ^ stride
-                                                                        -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdDrawIndexedIndirect = vkCmdDrawIndexedIndirectUnsafe
-##else
-vkCmdDrawIndexedIndirect = vkCmdDrawIndexedIndirectSafe
-
-##endif
-{-# INLINE vkCmdDrawIndexedIndirect #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdDrawIndexedIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     , uint32_t drawCount
---   >     , uint32_t stride
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
-type HS_vkCmdDrawIndexedIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ buffer
-                -> VkDeviceSize -- ^ offset
-                                -> Word32 -- ^ drawCount
-                                          -> Word32 -- ^ stride
-                                                    -> IO ()
-
-type PFN_vkCmdDrawIndexedIndirect =
-     FunPtr HS_vkCmdDrawIndexedIndirect
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdDrawIndexedIndirectUnsafe ::
-               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdDrawIndexedIndirectSafe ::
-               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
-
-instance VulkanProc "vkCmdDrawIndexedIndirect" where
-        type VkProcType "vkCmdDrawIndexedIndirect" =
-             HS_vkCmdDrawIndexedIndirect
-        vkProcSymbol = _VkCmdDrawIndexedIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndexedIndirectUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDispatch :: CString
-
-pattern VkCmdDispatch <- (is_VkCmdDispatch -> True)
-  where VkCmdDispatch = _VkCmdDispatch
-
-{-# INLINE _VkCmdDispatch #-}
-
-_VkCmdDispatch :: CString
-_VkCmdDispatch = Ptr "vkCmdDispatch\NUL"##
-
-{-# INLINE is_VkCmdDispatch #-}
-
-is_VkCmdDispatch :: CString -> Bool
-is_VkCmdDispatch = (EQ ==) . cmpCStrings _VkCmdDispatch
-
-type VkCmdDispatch = "vkCmdDispatch"
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
---
--- or less efficient:
---
--- > myCmdDispatch <- vkGetProc @VkCmdDispatch
---
--- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
---           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDispatch" vkCmdDispatchUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ groupCountX
-                                         -> Word32 -- ^ groupCountY
-                                                   -> Word32 -- ^ groupCountZ
-                                                             -> IO ()
-
-##else
-vkCmdDispatchUnsafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> Word32 -- ^ groupCountX
-                                              -> Word32 -- ^ groupCountY
-                                                        -> Word32 -- ^ groupCountZ
-                                                                  -> IO ()
-vkCmdDispatchUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatch)
-
-{-# NOINLINE vkCmdDispatchUnsafe #-}
-##endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
---
--- or less efficient:
---
--- > myCmdDispatch <- vkGetProc @VkCmdDispatch
---
--- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
---           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDispatch" vkCmdDispatchSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ groupCountX
-                                         -> Word32 -- ^ groupCountY
-                                                   -> Word32 -- ^ groupCountZ
-                                                             -> IO ()
-
-##else
-vkCmdDispatchSafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> Word32 -- ^ groupCountX
-                                            -> Word32 -- ^ groupCountY
-                                                      -> Word32 -- ^ groupCountZ
-                                                                -> IO ()
-vkCmdDispatchSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatch)
-
-{-# NOINLINE vkCmdDispatchSafe #-}
-##endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatch
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
---
--- or less efficient:
---
--- > myCmdDispatch <- vkGetProc @VkCmdDispatch
---
--- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
---           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
---
-vkCmdDispatch ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> Word32 -- ^ groupCountX
-                                        -> Word32 -- ^ groupCountY
-                                                  -> Word32 -- ^ groupCountZ
-                                                            -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdDispatch = vkCmdDispatchUnsafe
-##else
-vkCmdDispatch = vkCmdDispatchSafe
-
-##endif
-{-# INLINE vkCmdDispatch #-}
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @compute@
---
---   > void vkCmdDispatch
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t groupCountX
---   >     , uint32_t groupCountY
---   >     , uint32_t groupCountZ
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
-type HS_vkCmdDispatch =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ groupCountX
-                               -> Word32 -- ^ groupCountY
-                                         -> Word32 -- ^ groupCountZ
-                                                   -> IO ()
-
-type PFN_vkCmdDispatch = FunPtr HS_vkCmdDispatch
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchUnsafe ::
-               PFN_vkCmdDispatch -> HS_vkCmdDispatch
-
-foreign import ccall safe "dynamic" unwrapVkCmdDispatchSafe ::
-               PFN_vkCmdDispatch -> HS_vkCmdDispatch
-
-instance VulkanProc "vkCmdDispatch" where
-        type VkProcType "vkCmdDispatch" = HS_vkCmdDispatch
-        vkProcSymbol = _VkCmdDispatch
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDispatchSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDispatchIndirect :: CString
-
-pattern VkCmdDispatchIndirect <- (is_VkCmdDispatchIndirect -> True)
-  where VkCmdDispatchIndirect = _VkCmdDispatchIndirect
-
-{-# INLINE _VkCmdDispatchIndirect #-}
-
-_VkCmdDispatchIndirect :: CString
-_VkCmdDispatchIndirect = Ptr "vkCmdDispatchIndirect\NUL"##
-
-{-# INLINE is_VkCmdDispatchIndirect #-}
-
-is_VkCmdDispatchIndirect :: CString -> Bool
-is_VkCmdDispatchIndirect
-  = (EQ ==) . cmpCStrings _VkCmdDispatchIndirect
-
-type VkCmdDispatchIndirect = "vkCmdDispatchIndirect"
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
---
--- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
---           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdDispatchIndirect"
-               vkCmdDispatchIndirectUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> IO ()
-
-##else
-vkCmdDispatchIndirectUnsafe ::
-                            VkCommandBuffer -- ^ commandBuffer
-                                            -> VkBuffer -- ^ buffer
-                                                        -> VkDeviceSize -- ^ offset
-                                                                        -> IO ()
-vkCmdDispatchIndirectUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatchIndirect)
-
-{-# NOINLINE vkCmdDispatchIndirectUnsafe #-}
-##endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
---
--- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
---           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdDispatchIndirect"
-               vkCmdDispatchIndirectSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkBuffer -- ^ buffer
-                                           -> VkDeviceSize -- ^ offset
-                                                           -> IO ()
-
-##else
-vkCmdDispatchIndirectSafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          -> VkBuffer -- ^ buffer
-                                                      -> VkDeviceSize -- ^ offset
-                                                                      -> IO ()
-vkCmdDispatchIndirectSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchIndirect)
-
-{-# NOINLINE vkCmdDispatchIndirectSafe #-}
-##endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @compute@
---
--- > void vkCmdDispatchIndirect
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer buffer
--- >     , VkDeviceSize offset
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
---
--- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
---           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
---
-vkCmdDispatchIndirect ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> VkBuffer -- ^ buffer
-                                                  -> VkDeviceSize -- ^ offset
-                                                                  -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdDispatchIndirect = vkCmdDispatchIndirectUnsafe
-##else
-vkCmdDispatchIndirect = vkCmdDispatchIndirectSafe
-
-##endif
-{-# INLINE vkCmdDispatchIndirect #-}
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @compute@
---
---   > void vkCmdDispatchIndirect
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer buffer
---   >     , VkDeviceSize offset
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
-type HS_vkCmdDispatchIndirect =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkBuffer -- ^ buffer
-                                 -> VkDeviceSize -- ^ offset
-                                                 -> IO ()
-
-type PFN_vkCmdDispatchIndirect = FunPtr HS_vkCmdDispatchIndirect
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdDispatchIndirectUnsafe ::
-               PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
-
-foreign import ccall safe "dynamic" unwrapVkCmdDispatchIndirectSafe
-               :: PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
-
-instance VulkanProc "vkCmdDispatchIndirect" where
-        type VkProcType "vkCmdDispatchIndirect" = HS_vkCmdDispatchIndirect
-        vkProcSymbol = _VkCmdDispatchIndirect
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchIndirectUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDispatchIndirectSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyBuffer :: CString
-
-pattern VkCmdCopyBuffer <- (is_VkCmdCopyBuffer -> True)
-  where VkCmdCopyBuffer = _VkCmdCopyBuffer
-
-{-# INLINE _VkCmdCopyBuffer #-}
-
-_VkCmdCopyBuffer :: CString
-_VkCmdCopyBuffer = Ptr "vkCmdCopyBuffer\NUL"##
-
-{-# INLINE is_VkCmdCopyBuffer #-}
-
-is_VkCmdCopyBuffer :: CString -> Bool
-is_VkCmdCopyBuffer = (EQ ==) . cmpCStrings _VkCmdCopyBuffer
-
-type VkCmdCopyBuffer = "vkCmdCopyBuffer"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
---
--- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
---           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyBuffer" vkCmdCopyBufferUnsafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          -> VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferCopy -- ^ pRegions
-                                                                    -> IO ()
-
-##else
-vkCmdCopyBufferUnsafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkBuffer -- ^ srcBuffer
-                                 -> VkBuffer -- ^ dstBuffer
-                                             -> Word32 -- ^ regionCount
-                                                       -> Ptr VkBufferCopy -- ^ pRegions
-                                                                           -> IO ()
-vkCmdCopyBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyBuffer)
-
-{-# NOINLINE vkCmdCopyBufferUnsafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
---
--- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
---           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyBuffer" vkCmdCopyBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          -> VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferCopy -- ^ pRegions
-                                                                    -> IO ()
-
-##else
-vkCmdCopyBufferSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkBuffer -- ^ srcBuffer
-                               -> VkBuffer -- ^ dstBuffer
-                                           -> Word32 -- ^ regionCount
-                                                     -> Ptr VkBufferCopy -- ^ pRegions
-                                                                         -> IO ()
-vkCmdCopyBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBuffer)
-
-{-# NOINLINE vkCmdCopyBufferSafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
---
--- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
---           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
---
-vkCmdCopyBuffer ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkBuffer -- ^ srcBuffer
-                           -> VkBuffer -- ^ dstBuffer
-                                       -> Word32 -- ^ regionCount
-                                                 -> Ptr VkBufferCopy -- ^ pRegions
-                                                                     -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdCopyBuffer = vkCmdCopyBufferUnsafe
-##else
-vkCmdCopyBuffer = vkCmdCopyBufferSafe
-
-##endif
-{-# INLINE vkCmdCopyBuffer #-}
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer srcBuffer
---   >     , VkBuffer dstBuffer
---   >     , uint32_t regionCount
---   >     , const VkBufferCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
-type HS_vkCmdCopyBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ srcBuffer
-                -> VkBuffer -- ^ dstBuffer
-                            -> Word32 -- ^ regionCount
-                                      -> Ptr VkBufferCopy -- ^ pRegions
-                                                          -> IO ()
-
-type PFN_vkCmdCopyBuffer = FunPtr HS_vkCmdCopyBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdCopyBufferUnsafe
-               :: PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCmdCopyBufferSafe ::
-               PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
-
-instance VulkanProc "vkCmdCopyBuffer" where
-        type VkProcType "vkCmdCopyBuffer" = HS_vkCmdCopyBuffer
-        vkProcSymbol = _VkCmdCopyBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyImage :: CString
-
-pattern VkCmdCopyImage <- (is_VkCmdCopyImage -> True)
-  where VkCmdCopyImage = _VkCmdCopyImage
-
-{-# INLINE _VkCmdCopyImage #-}
-
-_VkCmdCopyImage :: CString
-_VkCmdCopyImage = Ptr "vkCmdCopyImage\NUL"##
-
-{-# INLINE is_VkCmdCopyImage #-}
-
-is_VkCmdCopyImage :: CString -> Bool
-is_VkCmdCopyImage = (EQ ==) . cmpCStrings _VkCmdCopyImage
-
-type VkCmdCopyImage = "vkCmdCopyImage"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
---
--- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
---           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyImage" vkCmdCopyImageUnsafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-
-##else
-vkCmdCopyImageUnsafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       VkImage -- ^ srcImage
-                               ->
-                         VkImageLayout -- ^ srcImageLayout
-                                       ->
-                           VkImage -- ^ dstImage
-                                   -> VkImageLayout -- ^ dstImageLayout
-                                                    -> Word32 -- ^ regionCount
-                                                              -> Ptr VkImageCopy -- ^ pRegions
-                                                                                 -> IO ()
-vkCmdCopyImageUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyImage)
-
-{-# NOINLINE vkCmdCopyImageUnsafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
---
--- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
---           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyImage" vkCmdCopyImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-
-##else
-vkCmdCopyImageSafe ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkImage -- ^ srcImage
-                             ->
-                       VkImageLayout -- ^ srcImageLayout
-                                     ->
-                         VkImage -- ^ dstImage
-                                 -> VkImageLayout -- ^ dstImageLayout
-                                                  -> Word32 -- ^ regionCount
-                                                            -> Ptr VkImageCopy -- ^ pRegions
-                                                                               -> IO ()
-vkCmdCopyImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImage)
-
-{-# NOINLINE vkCmdCopyImageSafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
---
--- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
---           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
---
-vkCmdCopyImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageCopy -- ^ pRegions
-                                                                           -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdCopyImage = vkCmdCopyImageUnsafe
-##else
-vkCmdCopyImage = vkCmdCopyImageSafe
-
-##endif
-{-# INLINE vkCmdCopyImage #-}
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
-type HS_vkCmdCopyImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   -> VkImageLayout -- ^ dstImageLayout
-                                    -> Word32 -- ^ regionCount
-                                              -> Ptr VkImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-type PFN_vkCmdCopyImage = FunPtr HS_vkCmdCopyImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdCopyImageUnsafe ::
-               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
-
-foreign import ccall safe "dynamic" unwrapVkCmdCopyImageSafe ::
-               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
-
-instance VulkanProc "vkCmdCopyImage" where
-        type VkProcType "vkCmdCopyImage" = HS_vkCmdCopyImage
-        vkProcSymbol = _VkCmdCopyImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyImageUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBlitImage :: CString
-
-pattern VkCmdBlitImage <- (is_VkCmdBlitImage -> True)
-  where VkCmdBlitImage = _VkCmdBlitImage
-
-{-# INLINE _VkCmdBlitImage #-}
-
-_VkCmdBlitImage :: CString
-_VkCmdBlitImage = Ptr "vkCmdBlitImage\NUL"##
-
-{-# INLINE is_VkCmdBlitImage #-}
-
-is_VkCmdBlitImage :: CString -> Bool
-is_VkCmdBlitImage = (EQ ==) . cmpCStrings _VkCmdBlitImage
-
-type VkCmdBlitImage = "vkCmdBlitImage"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
---
--- or less efficient:
---
--- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
---
--- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
---           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBlitImage" vkCmdBlitImageUnsafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-
-##else
-vkCmdBlitImageUnsafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       VkImage -- ^ srcImage
-                               ->
-                         VkImageLayout -- ^ srcImageLayout
-                                       ->
-                           VkImage -- ^ dstImage
-                                   ->
-                             VkImageLayout -- ^ dstImageLayout
-                                           -> Word32 -- ^ regionCount
-                                                     -> Ptr VkImageBlit -- ^ pRegions
-                                                                        -> VkFilter -- ^ filter
-                                                                                    -> IO ()
-vkCmdBlitImageUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBlitImage)
-
-{-# NOINLINE vkCmdBlitImageUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
---
--- or less efficient:
---
--- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
---
--- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
---           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBlitImage" vkCmdBlitImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-
-##else
-vkCmdBlitImageSafe ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkImage -- ^ srcImage
-                             ->
-                       VkImageLayout -- ^ srcImageLayout
-                                     ->
-                         VkImage -- ^ dstImage
-                                 ->
-                           VkImageLayout -- ^ dstImageLayout
-                                         -> Word32 -- ^ regionCount
-                                                   -> Ptr VkImageBlit -- ^ pRegions
-                                                                      -> VkFilter -- ^ filter
-                                                                                  -> IO ()
-vkCmdBlitImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBlitImage)
-
-{-# NOINLINE vkCmdBlitImageSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdBlitImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageBlit* pRegions
--- >     , VkFilter filter
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
---
--- or less efficient:
---
--- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
---
--- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
---           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
---
-vkCmdBlitImage ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             ->
-                       VkImageLayout -- ^ dstImageLayout
-                                     -> Word32 -- ^ regionCount
-                                               -> Ptr VkImageBlit -- ^ pRegions
-                                                                  -> VkFilter -- ^ filter
-                                                                              -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdBlitImage = vkCmdBlitImageUnsafe
-##else
-vkCmdBlitImage = vkCmdBlitImageSafe
-
-##endif
-{-# INLINE vkCmdBlitImage #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdBlitImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageBlit* pRegions
---   >     , VkFilter filter
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
-type HS_vkCmdBlitImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   ->
-             VkImageLayout -- ^ dstImageLayout
-                           -> Word32 -- ^ regionCount
-                                     -> Ptr VkImageBlit -- ^ pRegions
-                                                        -> VkFilter -- ^ filter
-                                                                    -> IO ()
-
-type PFN_vkCmdBlitImage = FunPtr HS_vkCmdBlitImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBlitImageUnsafe ::
-               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
-
-foreign import ccall safe "dynamic" unwrapVkCmdBlitImageSafe ::
-               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
-
-instance VulkanProc "vkCmdBlitImage" where
-        type VkProcType "vkCmdBlitImage" = HS_vkCmdBlitImage
-        vkProcSymbol = _VkCmdBlitImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdBlitImageUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBlitImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyBufferToImage :: CString
-
-pattern VkCmdCopyBufferToImage <-
-        (is_VkCmdCopyBufferToImage -> True)
-  where VkCmdCopyBufferToImage = _VkCmdCopyBufferToImage
-
-{-# INLINE _VkCmdCopyBufferToImage #-}
-
-_VkCmdCopyBufferToImage :: CString
-_VkCmdCopyBufferToImage = Ptr "vkCmdCopyBufferToImage\NUL"##
-
-{-# INLINE is_VkCmdCopyBufferToImage #-}
-
-is_VkCmdCopyBufferToImage :: CString -> Bool
-is_VkCmdCopyBufferToImage
-  = (EQ ==) . cmpCStrings _VkCmdCopyBufferToImage
-
-type VkCmdCopyBufferToImage = "vkCmdCopyBufferToImage"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
---
--- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
---           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyBufferToImage"
-               vkCmdCopyBufferToImageUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          ->
-                   VkImage -- ^ dstImage
-                           ->
-                     VkImageLayout -- ^ dstImageLayout
-                                   -> Word32 -- ^ regionCount
-                                             -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                      -> IO ()
-
-##else
-vkCmdCopyBufferToImageUnsafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             ->
-                               VkBuffer -- ^ srcBuffer
-                                        ->
-                                 VkImage -- ^ dstImage
-                                         ->
-                                   VkImageLayout -- ^ dstImageLayout
-                                                 -> Word32 -- ^ regionCount
-                                                           -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                                    -> IO ()
-vkCmdCopyBufferToImageUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyBufferToImage)
-
-{-# NOINLINE vkCmdCopyBufferToImageUnsafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
---
--- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
---           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyBufferToImage"
-               vkCmdCopyBufferToImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ srcBuffer
-                          ->
-                   VkImage -- ^ dstImage
-                           ->
-                     VkImageLayout -- ^ dstImageLayout
-                                   -> Word32 -- ^ regionCount
-                                             -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                      -> IO ()
-
-##else
-vkCmdCopyBufferToImageSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             VkBuffer -- ^ srcBuffer
-                                      ->
-                               VkImage -- ^ dstImage
-                                       ->
-                                 VkImageLayout -- ^ dstImageLayout
-                                               -> Word32 -- ^ regionCount
-                                                         -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                                  -> IO ()
-vkCmdCopyBufferToImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBufferToImage)
-
-{-# NOINLINE vkCmdCopyBufferToImageSafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyBufferToImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer srcBuffer
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
---
--- or less efficient:
---
--- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
---
--- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
---           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
---
-vkCmdCopyBufferToImage ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkBuffer -- ^ srcBuffer
-                                  ->
-                           VkImage -- ^ dstImage
-                                   ->
-                             VkImageLayout -- ^ dstImageLayout
-                                           -> Word32 -- ^ regionCount
-                                                     -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                              -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdCopyBufferToImage = vkCmdCopyBufferToImageUnsafe
-##else
-vkCmdCopyBufferToImage = vkCmdCopyBufferToImageSafe
-
-##endif
-{-# INLINE vkCmdCopyBufferToImage #-}
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyBufferToImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer srcBuffer
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkBufferImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
-type HS_vkCmdCopyBufferToImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ srcBuffer
-                ->
-         VkImage -- ^ dstImage
-                 ->
-           VkImageLayout -- ^ dstImageLayout
-                         -> Word32 -- ^ regionCount
-                                   -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                            -> IO ()
-
-type PFN_vkCmdCopyBufferToImage = FunPtr HS_vkCmdCopyBufferToImage
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdCopyBufferToImageUnsafe ::
-               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdCopyBufferToImageSafe ::
-               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
-
-instance VulkanProc "vkCmdCopyBufferToImage" where
-        type VkProcType "vkCmdCopyBufferToImage" =
-             HS_vkCmdCopyBufferToImage
-        vkProcSymbol = _VkCmdCopyBufferToImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyBufferToImageUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferToImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyImageToBuffer :: CString
-
-pattern VkCmdCopyImageToBuffer <-
-        (is_VkCmdCopyImageToBuffer -> True)
-  where VkCmdCopyImageToBuffer = _VkCmdCopyImageToBuffer
-
-{-# INLINE _VkCmdCopyImageToBuffer #-}
-
-_VkCmdCopyImageToBuffer :: CString
-_VkCmdCopyImageToBuffer = Ptr "vkCmdCopyImageToBuffer\NUL"##
-
-{-# INLINE is_VkCmdCopyImageToBuffer #-}
-
-is_VkCmdCopyImageToBuffer :: CString -> Bool
-is_VkCmdCopyImageToBuffer
-  = (EQ ==) . cmpCStrings _VkCmdCopyImageToBuffer
-
-type VkCmdCopyImageToBuffer = "vkCmdCopyImageToBuffer"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
---
--- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
---           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyImageToBuffer"
-               vkCmdCopyImageToBufferUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkBuffer -- ^ dstBuffer
-                              -> Word32 -- ^ regionCount
-                                        -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-##else
-vkCmdCopyImageToBufferUnsafe ::
-                             VkCommandBuffer -- ^ commandBuffer
-                                             ->
-                               VkImage -- ^ srcImage
-                                       ->
-                                 VkImageLayout -- ^ srcImageLayout
-                                               ->
-                                   VkBuffer -- ^ dstBuffer
-                                            -> Word32 -- ^ regionCount
-                                                      -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                               -> IO ()
-vkCmdCopyImageToBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyImageToBuffer)
-
-{-# NOINLINE vkCmdCopyImageToBufferUnsafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
---
--- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
---           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyImageToBuffer"
-               vkCmdCopyImageToBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkBuffer -- ^ dstBuffer
-                              -> Word32 -- ^ regionCount
-                                        -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                 -> IO ()
-
-##else
-vkCmdCopyImageToBufferSafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             VkImage -- ^ srcImage
-                                     ->
-                               VkImageLayout -- ^ srcImageLayout
-                                             ->
-                                 VkBuffer -- ^ dstBuffer
-                                          -> Word32 -- ^ regionCount
-                                                    -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                             -> IO ()
-vkCmdCopyImageToBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImageToBuffer)
-
-{-# NOINLINE vkCmdCopyImageToBufferSafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyImageToBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkBuffer dstBuffer
--- >     , uint32_t regionCount
--- >     , const VkBufferImageCopy* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
---
--- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
---           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
---
-vkCmdCopyImageToBuffer ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkImage -- ^ srcImage
-                                 ->
-                           VkImageLayout -- ^ srcImageLayout
-                                         ->
-                             VkBuffer -- ^ dstBuffer
-                                      -> Word32 -- ^ regionCount
-                                                -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                                         -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdCopyImageToBuffer = vkCmdCopyImageToBufferUnsafe
-##else
-vkCmdCopyImageToBuffer = vkCmdCopyImageToBufferSafe
-
-##endif
-{-# INLINE vkCmdCopyImageToBuffer #-}
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyImageToBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkBuffer dstBuffer
---   >     , uint32_t regionCount
---   >     , const VkBufferImageCopy* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
-type HS_vkCmdCopyImageToBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkBuffer -- ^ dstBuffer
-                    -> Word32 -- ^ regionCount
-                              -> Ptr VkBufferImageCopy -- ^ pRegions
-                                                       -> IO ()
-
-type PFN_vkCmdCopyImageToBuffer = FunPtr HS_vkCmdCopyImageToBuffer
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdCopyImageToBufferUnsafe ::
-               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdCopyImageToBufferSafe ::
-               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
-
-instance VulkanProc "vkCmdCopyImageToBuffer" where
-        type VkProcType "vkCmdCopyImageToBuffer" =
-             HS_vkCmdCopyImageToBuffer
-        vkProcSymbol = _VkCmdCopyImageToBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyImageToBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyImageToBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdUpdateBuffer :: CString
-
-pattern VkCmdUpdateBuffer <- (is_VkCmdUpdateBuffer -> True)
-  where VkCmdUpdateBuffer = _VkCmdUpdateBuffer
-
-{-# INLINE _VkCmdUpdateBuffer #-}
-
-_VkCmdUpdateBuffer :: CString
-_VkCmdUpdateBuffer = Ptr "vkCmdUpdateBuffer\NUL"##
-
-{-# INLINE is_VkCmdUpdateBuffer #-}
-
-is_VkCmdUpdateBuffer :: CString -> Bool
-is_VkCmdUpdateBuffer = (EQ ==) . cmpCStrings _VkCmdUpdateBuffer
-
-type VkCmdUpdateBuffer = "vkCmdUpdateBuffer"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
---
--- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
---           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdUpdateBuffer"
-               vkCmdUpdateBufferUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ dataSize
-                                                          -> Ptr Void -- ^ pData
-                                                                      -> IO ()
-
-##else
-vkCmdUpdateBufferUnsafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkBuffer -- ^ dstBuffer
-                                   -> VkDeviceSize -- ^ dstOffset
-                                                   -> VkDeviceSize -- ^ dataSize
-                                                                   -> Ptr Void -- ^ pData
-                                                                               -> IO ()
-vkCmdUpdateBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdUpdateBuffer)
-
-{-# NOINLINE vkCmdUpdateBufferUnsafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
---
--- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
---           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdUpdateBuffer" vkCmdUpdateBufferSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ dataSize
-                                                          -> Ptr Void -- ^ pData
-                                                                      -> IO ()
-
-##else
-vkCmdUpdateBufferSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkBuffer -- ^ dstBuffer
-                                 -> VkDeviceSize -- ^ dstOffset
-                                                 -> VkDeviceSize -- ^ dataSize
-                                                                 -> Ptr Void -- ^ pData
-                                                                             -> IO ()
-vkCmdUpdateBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdUpdateBuffer)
-
-{-# NOINLINE vkCmdUpdateBufferSafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdUpdateBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize dataSize
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
---
--- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
---           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
---
-vkCmdUpdateBuffer ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkBuffer -- ^ dstBuffer
-                             -> VkDeviceSize -- ^ dstOffset
-                                             -> VkDeviceSize -- ^ dataSize
-                                                             -> Ptr Void -- ^ pData
-                                                                         -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdUpdateBuffer = vkCmdUpdateBufferUnsafe
-##else
-vkCmdUpdateBuffer = vkCmdUpdateBufferSafe
-
-##endif
-{-# INLINE vkCmdUpdateBuffer #-}
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdUpdateBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize dataSize
---   >     , const void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
-type HS_vkCmdUpdateBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ dstBuffer
-                -> VkDeviceSize -- ^ dstOffset
-                                -> VkDeviceSize -- ^ dataSize
-                                                -> Ptr Void -- ^ pData
-                                                            -> IO ()
-
-type PFN_vkCmdUpdateBuffer = FunPtr HS_vkCmdUpdateBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdUpdateBufferUnsafe
-               :: PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCmdUpdateBufferSafe ::
-               PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
-
-instance VulkanProc "vkCmdUpdateBuffer" where
-        type VkProcType "vkCmdUpdateBuffer" = HS_vkCmdUpdateBuffer
-        vkProcSymbol = _VkCmdUpdateBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdUpdateBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdUpdateBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdFillBuffer :: CString
-
-pattern VkCmdFillBuffer <- (is_VkCmdFillBuffer -> True)
-  where VkCmdFillBuffer = _VkCmdFillBuffer
-
-{-# INLINE _VkCmdFillBuffer #-}
-
-_VkCmdFillBuffer :: CString
-_VkCmdFillBuffer = Ptr "vkCmdFillBuffer\NUL"##
-
-{-# INLINE is_VkCmdFillBuffer #-}
-
-is_VkCmdFillBuffer :: CString -> Bool
-is_VkCmdFillBuffer = (EQ ==) . cmpCStrings _VkCmdFillBuffer
-
-type VkCmdFillBuffer = "vkCmdFillBuffer"
-
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
---
--- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
---           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdFillBuffer" vkCmdFillBufferUnsafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ size
-                                                          -> Word32 -- ^ data
-                                                                    -> IO ()
-
-##else
-vkCmdFillBufferUnsafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkBuffer -- ^ dstBuffer
-                                 -> VkDeviceSize -- ^ dstOffset
-                                                 -> VkDeviceSize -- ^ size
-                                                                 -> Word32 -- ^ data
-                                                                           -> IO ()
-vkCmdFillBufferUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdFillBuffer)
-
-{-# NOINLINE vkCmdFillBufferUnsafe #-}
-##endif
-
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
---
--- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
---           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdFillBuffer" vkCmdFillBufferSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkBuffer -- ^ dstBuffer
-                          -> VkDeviceSize -- ^ dstOffset
-                                          -> VkDeviceSize -- ^ size
-                                                          -> Word32 -- ^ data
-                                                                    -> IO ()
-
-##else
-vkCmdFillBufferSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkBuffer -- ^ dstBuffer
-                               -> VkDeviceSize -- ^ dstOffset
-                                               -> VkDeviceSize -- ^ size
-                                                               -> Word32 -- ^ data
-                                                                         -> IO ()
-vkCmdFillBufferSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdFillBuffer)
-
-{-# NOINLINE vkCmdFillBufferSafe #-}
-##endif
-
--- |
--- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdFillBuffer
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize size
--- >     , uint32_t data
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
---
--- or less efficient:
---
--- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
---
--- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
---           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
---
-vkCmdFillBuffer ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkBuffer -- ^ dstBuffer
-                           -> VkDeviceSize -- ^ dstOffset
-                                           -> VkDeviceSize -- ^ size
-                                                           -> Word32 -- ^ data
-                                                                     -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdFillBuffer = vkCmdFillBufferUnsafe
-##else
-vkCmdFillBuffer = vkCmdFillBufferSafe
-
-##endif
-{-# INLINE vkCmdFillBuffer #-}
-
--- | transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
---
---   Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdFillBuffer
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize size
---   >     , uint32_t data
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
-type HS_vkCmdFillBuffer =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkBuffer -- ^ dstBuffer
-                -> VkDeviceSize -- ^ dstOffset
-                                -> VkDeviceSize -- ^ size
-                                                -> Word32 -- ^ data
-                                                          -> IO ()
-
-type PFN_vkCmdFillBuffer = FunPtr HS_vkCmdFillBuffer
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdFillBufferUnsafe
-               :: PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
-
-foreign import ccall safe "dynamic" unwrapVkCmdFillBufferSafe ::
-               PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
-
-instance VulkanProc "vkCmdFillBuffer" where
-        type VkProcType "vkCmdFillBuffer" = HS_vkCmdFillBuffer
-        vkProcSymbol = _VkCmdFillBuffer
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdFillBufferUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdFillBufferSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdClearColorImage :: CString
-
-pattern VkCmdClearColorImage <- (is_VkCmdClearColorImage -> True)
-  where VkCmdClearColorImage = _VkCmdClearColorImage
-
-{-# INLINE _VkCmdClearColorImage #-}
-
-_VkCmdClearColorImage :: CString
-_VkCmdClearColorImage = Ptr "vkCmdClearColorImage\NUL"##
-
-{-# INLINE is_VkCmdClearColorImage #-}
-
-is_VkCmdClearColorImage :: CString -> Bool
-is_VkCmdClearColorImage
-  = (EQ ==) . cmpCStrings _VkCmdClearColorImage
-
-type VkCmdClearColorImage = "vkCmdClearColorImage"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
---
--- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
---           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdClearColorImage"
-               vkCmdClearColorImageUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearColorValue -- ^ pColor
-                                           ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
-vkCmdClearColorImageUnsafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             VkImage -- ^ image
-                                     ->
-                               VkImageLayout -- ^ imageLayout
-                                             ->
-                                 Ptr VkClearColorValue -- ^ pColor
-                                                       ->
-                                   Word32 -- ^ rangeCount
-                                          -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                         -> IO ()
-vkCmdClearColorImageUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdClearColorImage)
-
-{-# NOINLINE vkCmdClearColorImageUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
---
--- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
---           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdClearColorImage"
-               vkCmdClearColorImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearColorValue -- ^ pColor
-                                           ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
-vkCmdClearColorImageSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkImage -- ^ image
-                                   ->
-                             VkImageLayout -- ^ imageLayout
-                                           ->
-                               Ptr VkClearColorValue -- ^ pColor
-                                                     ->
-                                 Word32 -- ^ rangeCount
-                                        -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                       -> IO ()
-vkCmdClearColorImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearColorImage)
-
-{-# NOINLINE vkCmdClearColorImageSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearColorImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearColorValue* pColor
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
---
--- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
---           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
---
-vkCmdClearColorImage ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       VkImage -- ^ image
-                               ->
-                         VkImageLayout -- ^ imageLayout
-                                       ->
-                           Ptr VkClearColorValue -- ^ pColor
-                                                 ->
-                             Word32 -- ^ rangeCount
-                                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                   -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdClearColorImage = vkCmdClearColorImageUnsafe
-##else
-vkCmdClearColorImage = vkCmdClearColorImageSafe
-
-##endif
-{-# INLINE vkCmdClearColorImage #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdClearColorImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage image
---   >     , VkImageLayout imageLayout
---   >     , const VkClearColorValue* pColor
---   >     , uint32_t rangeCount
---   >     , const VkImageSubresourceRange* pRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
-type HS_vkCmdClearColorImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ image
-               ->
-         VkImageLayout -- ^ imageLayout
-                       ->
-           Ptr VkClearColorValue -- ^ pColor
-                                 ->
-             Word32 -- ^ rangeCount
-                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                   -> IO ()
-
-type PFN_vkCmdClearColorImage = FunPtr HS_vkCmdClearColorImage
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdClearColorImageUnsafe ::
-               PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
-
-foreign import ccall safe "dynamic" unwrapVkCmdClearColorImageSafe
-               :: PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
-
-instance VulkanProc "vkCmdClearColorImage" where
-        type VkProcType "vkCmdClearColorImage" = HS_vkCmdClearColorImage
-        vkProcSymbol = _VkCmdClearColorImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdClearColorImageUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdClearColorImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdClearDepthStencilImage :: CString
-
-pattern VkCmdClearDepthStencilImage <-
-        (is_VkCmdClearDepthStencilImage -> True)
-  where VkCmdClearDepthStencilImage = _VkCmdClearDepthStencilImage
-
-{-# INLINE _VkCmdClearDepthStencilImage #-}
-
-_VkCmdClearDepthStencilImage :: CString
-_VkCmdClearDepthStencilImage
-  = Ptr "vkCmdClearDepthStencilImage\NUL"##
-
-{-# INLINE is_VkCmdClearDepthStencilImage #-}
-
-is_VkCmdClearDepthStencilImage :: CString -> Bool
-is_VkCmdClearDepthStencilImage
-  = (EQ ==) . cmpCStrings _VkCmdClearDepthStencilImage
-
-type VkCmdClearDepthStencilImage = "vkCmdClearDepthStencilImage"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
---
--- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
---           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdClearDepthStencilImage"
-               vkCmdClearDepthStencilImageUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                  ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
-vkCmdClearDepthStencilImageUnsafe ::
-                                  VkCommandBuffer -- ^ commandBuffer
-                                                  ->
-                                    VkImage -- ^ image
-                                            ->
-                                      VkImageLayout -- ^ imageLayout
-                                                    ->
-                                        Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                                     ->
-                                          Word32 -- ^ rangeCount
-                                                 -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                                -> IO ()
-vkCmdClearDepthStencilImageUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCmdClearDepthStencilImage)
-
-{-# NOINLINE vkCmdClearDepthStencilImageUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
---
--- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
---           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdClearDepthStencilImage"
-               vkCmdClearDepthStencilImageSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ image
-                         ->
-                   VkImageLayout -- ^ imageLayout
-                                 ->
-                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                  ->
-                       Word32 -- ^ rangeCount
-                              -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                             -> IO ()
-
-##else
-vkCmdClearDepthStencilImageSafe ::
-                                VkCommandBuffer -- ^ commandBuffer
-                                                ->
-                                  VkImage -- ^ image
-                                          ->
-                                    VkImageLayout -- ^ imageLayout
-                                                  ->
-                                      Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                                   ->
-                                        Word32 -- ^ rangeCount
-                                               -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                              -> IO ()
-vkCmdClearDepthStencilImageSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCmdClearDepthStencilImage)
-
-{-# NOINLINE vkCmdClearDepthStencilImageSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdClearDepthStencilImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage image
--- >     , VkImageLayout imageLayout
--- >     , const VkClearDepthStencilValue* pDepthStencil
--- >     , uint32_t rangeCount
--- >     , const VkImageSubresourceRange* pRanges
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
---
--- or less efficient:
---
--- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
---
--- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
---           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
---
-vkCmdClearDepthStencilImage ::
-                            VkCommandBuffer -- ^ commandBuffer
-                                            ->
-                              VkImage -- ^ image
-                                      ->
-                                VkImageLayout -- ^ imageLayout
-                                              ->
-                                  Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                                               ->
-                                    Word32 -- ^ rangeCount
-                                           -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                                          -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdClearDepthStencilImage = vkCmdClearDepthStencilImageUnsafe
-##else
-vkCmdClearDepthStencilImage = vkCmdClearDepthStencilImageSafe
-
-##endif
-{-# INLINE vkCmdClearDepthStencilImage #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdClearDepthStencilImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage image
---   >     , VkImageLayout imageLayout
---   >     , const VkClearDepthStencilValue* pDepthStencil
---   >     , uint32_t rangeCount
---   >     , const VkImageSubresourceRange* pRanges
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
-type HS_vkCmdClearDepthStencilImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ image
-               ->
-         VkImageLayout -- ^ imageLayout
-                       ->
-           Ptr VkClearDepthStencilValue -- ^ pDepthStencil
-                                        ->
-             Word32 -- ^ rangeCount
-                    -> Ptr VkImageSubresourceRange -- ^ pRanges
-                                                   -> IO ()
-
-type PFN_vkCmdClearDepthStencilImage =
-     FunPtr HS_vkCmdClearDepthStencilImage
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdClearDepthStencilImageUnsafe ::
-               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdClearDepthStencilImageSafe ::
-               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
-
-instance VulkanProc "vkCmdClearDepthStencilImage" where
-        type VkProcType "vkCmdClearDepthStencilImage" =
-             HS_vkCmdClearDepthStencilImage
-        vkProcSymbol = _VkCmdClearDepthStencilImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdClearDepthStencilImageUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdClearDepthStencilImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdClearAttachments :: CString
-
-pattern VkCmdClearAttachments <- (is_VkCmdClearAttachments -> True)
-  where VkCmdClearAttachments = _VkCmdClearAttachments
-
-{-# INLINE _VkCmdClearAttachments #-}
-
-_VkCmdClearAttachments :: CString
-_VkCmdClearAttachments = Ptr "vkCmdClearAttachments\NUL"##
-
-{-# INLINE is_VkCmdClearAttachments #-}
-
-is_VkCmdClearAttachments :: CString -> Bool
-is_VkCmdClearAttachments
-  = (EQ ==) . cmpCStrings _VkCmdClearAttachments
-
-type VkCmdClearAttachments = "vkCmdClearAttachments"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
---
--- or less efficient:
---
--- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
---
--- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
---           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdClearAttachments"
-               vkCmdClearAttachmentsUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ attachmentCount
-                        ->
-                   Ptr VkClearAttachment -- ^ pAttachments
-                                         -> Word32 -- ^ rectCount
-                                                   -> Ptr VkClearRect -- ^ pRects
-                                                                      -> IO ()
-
-##else
-vkCmdClearAttachmentsUnsafe ::
-                            VkCommandBuffer -- ^ commandBuffer
-                                            ->
-                              Word32 -- ^ attachmentCount
-                                     ->
-                                Ptr VkClearAttachment -- ^ pAttachments
-                                                      -> Word32 -- ^ rectCount
-                                                                -> Ptr VkClearRect -- ^ pRects
-                                                                                   -> IO ()
-vkCmdClearAttachmentsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdClearAttachments)
-
-{-# NOINLINE vkCmdClearAttachmentsUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
---
--- or less efficient:
---
--- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
---
--- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
---           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdClearAttachments"
-               vkCmdClearAttachmentsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ attachmentCount
-                        ->
-                   Ptr VkClearAttachment -- ^ pAttachments
-                                         -> Word32 -- ^ rectCount
-                                                   -> Ptr VkClearRect -- ^ pRects
-                                                                      -> IO ()
-
-##else
-vkCmdClearAttachmentsSafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          ->
-                            Word32 -- ^ attachmentCount
-                                   ->
-                              Ptr VkClearAttachment -- ^ pAttachments
-                                                    -> Word32 -- ^ rectCount
-                                                              -> Ptr VkClearRect -- ^ pRects
-                                                                                 -> IO ()
-vkCmdClearAttachmentsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearAttachments)
-
-{-# NOINLINE vkCmdClearAttachmentsSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdClearAttachments
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t attachmentCount
--- >     , const VkClearAttachment* pAttachments
--- >     , uint32_t rectCount
--- >     , const VkClearRect* pRects
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
---
--- or less efficient:
---
--- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
---
--- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
---           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
---
-vkCmdClearAttachments ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        Word32 -- ^ attachmentCount
-                               ->
-                          Ptr VkClearAttachment -- ^ pAttachments
-                                                -> Word32 -- ^ rectCount
-                                                          -> Ptr VkClearRect -- ^ pRects
-                                                                             -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdClearAttachments = vkCmdClearAttachmentsUnsafe
-##else
-vkCmdClearAttachments = vkCmdClearAttachmentsSafe
-
-##endif
-{-# INLINE vkCmdClearAttachments #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdClearAttachments
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t attachmentCount
---   >     , const VkClearAttachment* pAttachments
---   >     , uint32_t rectCount
---   >     , const VkClearRect* pRects
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
-type HS_vkCmdClearAttachments =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ attachmentCount
-              ->
-         Ptr VkClearAttachment -- ^ pAttachments
-                               -> Word32 -- ^ rectCount
-                                         -> Ptr VkClearRect -- ^ pRects
-                                                            -> IO ()
-
-type PFN_vkCmdClearAttachments = FunPtr HS_vkCmdClearAttachments
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdClearAttachmentsUnsafe ::
-               PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
-
-foreign import ccall safe "dynamic" unwrapVkCmdClearAttachmentsSafe
-               :: PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
-
-instance VulkanProc "vkCmdClearAttachments" where
-        type VkProcType "vkCmdClearAttachments" = HS_vkCmdClearAttachments
-        vkProcSymbol = _VkCmdClearAttachments
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdClearAttachmentsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdClearAttachmentsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdResolveImage :: CString
-
-pattern VkCmdResolveImage <- (is_VkCmdResolveImage -> True)
-  where VkCmdResolveImage = _VkCmdResolveImage
-
-{-# INLINE _VkCmdResolveImage #-}
-
-_VkCmdResolveImage :: CString
-_VkCmdResolveImage = Ptr "vkCmdResolveImage\NUL"##
-
-{-# INLINE is_VkCmdResolveImage #-}
-
-is_VkCmdResolveImage :: CString -> Bool
-is_VkCmdResolveImage = (EQ ==) . cmpCStrings _VkCmdResolveImage
-
-type VkCmdResolveImage = "vkCmdResolveImage"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
---
--- or less efficient:
---
--- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
---
--- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
---           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdResolveImage"
-               vkCmdResolveImageUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageResolve -- ^ pRegions
-                                                                              -> IO ()
-
-##else
-vkCmdResolveImageUnsafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkImage -- ^ srcImage
-                                  ->
-                            VkImageLayout -- ^ srcImageLayout
-                                          ->
-                              VkImage -- ^ dstImage
-                                      -> VkImageLayout -- ^ dstImageLayout
-                                                       -> Word32 -- ^ regionCount
-                                                                 -> Ptr VkImageResolve -- ^ pRegions
-                                                                                       -> IO ()
-vkCmdResolveImageUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResolveImage)
-
-{-# NOINLINE vkCmdResolveImageUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
---
--- or less efficient:
---
--- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
---
--- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
---           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdResolveImage" vkCmdResolveImageSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkImage -- ^ srcImage
-                         ->
-                   VkImageLayout -- ^ srcImageLayout
-                                 ->
-                     VkImage -- ^ dstImage
-                             -> VkImageLayout -- ^ dstImageLayout
-                                              -> Word32 -- ^ regionCount
-                                                        -> Ptr VkImageResolve -- ^ pRegions
-                                                                              -> IO ()
-
-##else
-vkCmdResolveImageSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkImage -- ^ srcImage
-                                ->
-                          VkImageLayout -- ^ srcImageLayout
-                                        ->
-                            VkImage -- ^ dstImage
-                                    -> VkImageLayout -- ^ dstImageLayout
-                                                     -> Word32 -- ^ regionCount
-                                                               -> Ptr VkImageResolve -- ^ pRegions
-                                                                                     -> IO ()
-vkCmdResolveImageSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResolveImage)
-
-{-# NOINLINE vkCmdResolveImageSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdResolveImage
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkImage srcImage
--- >     , VkImageLayout srcImageLayout
--- >     , VkImage dstImage
--- >     , VkImageLayout dstImageLayout
--- >     , uint32_t regionCount
--- >     , const VkImageResolve* pRegions
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
---
--- or less efficient:
---
--- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
---
--- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
---           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
---
-vkCmdResolveImage ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    VkImage -- ^ srcImage
-                            ->
-                      VkImageLayout -- ^ srcImageLayout
-                                    ->
-                        VkImage -- ^ dstImage
-                                -> VkImageLayout -- ^ dstImageLayout
-                                                 -> Word32 -- ^ regionCount
-                                                           -> Ptr VkImageResolve -- ^ pRegions
-                                                                                 -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdResolveImage = vkCmdResolveImageUnsafe
-##else
-vkCmdResolveImage = vkCmdResolveImageSafe
-
-##endif
-{-# INLINE vkCmdResolveImage #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdResolveImage
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkImage srcImage
---   >     , VkImageLayout srcImageLayout
---   >     , VkImage dstImage
---   >     , VkImageLayout dstImageLayout
---   >     , uint32_t regionCount
---   >     , const VkImageResolve* pRegions
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
-type HS_vkCmdResolveImage =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkImage -- ^ srcImage
-               ->
-         VkImageLayout -- ^ srcImageLayout
-                       ->
-           VkImage -- ^ dstImage
-                   -> VkImageLayout -- ^ dstImageLayout
-                                    -> Word32 -- ^ regionCount
-                                              -> Ptr VkImageResolve -- ^ pRegions
-                                                                    -> IO ()
-
-type PFN_vkCmdResolveImage = FunPtr HS_vkCmdResolveImage
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdResolveImageUnsafe
-               :: PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
-
-foreign import ccall safe "dynamic" unwrapVkCmdResolveImageSafe ::
-               PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
-
-instance VulkanProc "vkCmdResolveImage" where
-        type VkProcType "vkCmdResolveImage" = HS_vkCmdResolveImage
-        vkProcSymbol = _VkCmdResolveImage
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdResolveImageUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdResolveImageSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetEvent :: CString
-
-pattern VkCmdSetEvent <- (is_VkCmdSetEvent -> True)
-  where VkCmdSetEvent = _VkCmdSetEvent
-
-{-# INLINE _VkCmdSetEvent #-}
-
-_VkCmdSetEvent :: CString
-_VkCmdSetEvent = Ptr "vkCmdSetEvent\NUL"##
-
-{-# INLINE is_VkCmdSetEvent #-}
-
-is_VkCmdSetEvent :: CString -> Bool
-is_VkCmdSetEvent = (EQ ==) . cmpCStrings _VkCmdSetEvent
-
-type VkCmdSetEvent = "vkCmdSetEvent"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
---
--- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
---           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdSetEvent" vkCmdSetEventUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
-vkCmdSetEventUnsafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> VkEvent -- ^ event
-                                               -> VkPipelineStageFlags -- ^ stageMask
-                                                                       -> IO ()
-vkCmdSetEventUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetEvent)
-
-{-# NOINLINE vkCmdSetEventUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
---
--- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
---           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdSetEvent" vkCmdSetEventSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
-vkCmdSetEventSafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkEvent -- ^ event
-                                             -> VkPipelineStageFlags -- ^ stageMask
-                                                                     -> IO ()
-vkCmdSetEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetEvent)
-
-{-# NOINLINE vkCmdSetEventSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdSetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
---
--- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
---           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
---
-vkCmdSetEvent ::
-              VkCommandBuffer -- ^ commandBuffer
-                              -> VkEvent -- ^ event
-                                         -> VkPipelineStageFlags -- ^ stageMask
-                                                                 -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetEvent = vkCmdSetEventUnsafe
-##else
-vkCmdSetEvent = vkCmdSetEventSafe
-
-##endif
-{-# INLINE vkCmdSetEvent #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdSetEvent
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkEvent event
---   >     , VkPipelineStageFlags stageMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
-type HS_vkCmdSetEvent =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkEvent -- ^ event
-                                -> VkPipelineStageFlags -- ^ stageMask
-                                                        -> IO ()
-
-type PFN_vkCmdSetEvent = FunPtr HS_vkCmdSetEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdSetEventUnsafe ::
-               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetEventSafe ::
-               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
-
-instance VulkanProc "vkCmdSetEvent" where
-        type VkProcType "vkCmdSetEvent" = HS_vkCmdSetEvent
-        vkProcSymbol = _VkCmdSetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetEventUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdResetEvent :: CString
-
-pattern VkCmdResetEvent <- (is_VkCmdResetEvent -> True)
-  where VkCmdResetEvent = _VkCmdResetEvent
-
-{-# INLINE _VkCmdResetEvent #-}
-
-_VkCmdResetEvent :: CString
-_VkCmdResetEvent = Ptr "vkCmdResetEvent\NUL"##
-
-{-# INLINE is_VkCmdResetEvent #-}
-
-is_VkCmdResetEvent :: CString -> Bool
-is_VkCmdResetEvent = (EQ ==) . cmpCStrings _VkCmdResetEvent
-
-type VkCmdResetEvent = "vkCmdResetEvent"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
---
--- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
---           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdResetEvent" vkCmdResetEventUnsafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkEvent -- ^ event
-                                             -> VkPipelineStageFlags -- ^ stageMask
-                                                                     -> IO ()
-
-##else
-vkCmdResetEventUnsafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      -> VkEvent -- ^ event
-                                                 -> VkPipelineStageFlags -- ^ stageMask
-                                                                         -> IO ()
-vkCmdResetEventUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResetEvent)
-
-{-# NOINLINE vkCmdResetEventUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
---
--- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
---           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdResetEvent" vkCmdResetEventSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkEvent -- ^ event
-                                          -> VkPipelineStageFlags -- ^ stageMask
-                                                                  -> IO ()
-
-##else
-vkCmdResetEventSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> VkEvent -- ^ event
-                                               -> VkPipelineStageFlags -- ^ stageMask
-                                                                       -> IO ()
-vkCmdResetEventSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetEvent)
-
-{-# NOINLINE vkCmdResetEventSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetEvent
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkEvent event
--- >     , VkPipelineStageFlags stageMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
---
--- or less efficient:
---
--- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
---
--- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
---           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
---
-vkCmdResetEvent ::
-                VkCommandBuffer -- ^ commandBuffer
-                                -> VkEvent -- ^ event
-                                           -> VkPipelineStageFlags -- ^ stageMask
-                                                                   -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdResetEvent = vkCmdResetEventUnsafe
-##else
-vkCmdResetEvent = vkCmdResetEventSafe
-
-##endif
-{-# INLINE vkCmdResetEvent #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdResetEvent
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkEvent event
---   >     , VkPipelineStageFlags stageMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
-type HS_vkCmdResetEvent =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkEvent -- ^ event
-                                -> VkPipelineStageFlags -- ^ stageMask
-                                                        -> IO ()
-
-type PFN_vkCmdResetEvent = FunPtr HS_vkCmdResetEvent
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdResetEventUnsafe
-               :: PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
-
-foreign import ccall safe "dynamic" unwrapVkCmdResetEventSafe ::
-               PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
-
-instance VulkanProc "vkCmdResetEvent" where
-        type VkProcType "vkCmdResetEvent" = HS_vkCmdResetEvent
-        vkProcSymbol = _VkCmdResetEvent
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdResetEventUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdResetEventSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdWaitEvents :: CString
-
-pattern VkCmdWaitEvents <- (is_VkCmdWaitEvents -> True)
-  where VkCmdWaitEvents = _VkCmdWaitEvents
-
-{-# INLINE _VkCmdWaitEvents #-}
-
-_VkCmdWaitEvents :: CString
-_VkCmdWaitEvents = Ptr "vkCmdWaitEvents\NUL"##
-
-{-# INLINE is_VkCmdWaitEvents #-}
-
-is_VkCmdWaitEvents :: CString -> Bool
-is_VkCmdWaitEvents = (EQ ==) . cmpCStrings _VkCmdWaitEvents
-
-type VkCmdWaitEvents = "vkCmdWaitEvents"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
---
--- or less efficient:
---
--- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
---
--- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
---           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdWaitEvents" vkCmdWaitEventsUnsafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ eventCount
-                        ->
-                   Ptr VkEvent -- ^ pEvents
-                               ->
-                     VkPipelineStageFlags -- ^ srcStageMask
-                                          ->
-                       VkPipelineStageFlags -- ^ dstStageMask
-                                            ->
-                         Word32 -- ^ memoryBarrierCount
-                                ->
-                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                               ->
-                             Word32 -- ^ bufferMemoryBarrierCount
-                                    ->
-                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                         ->
-                                 Word32 -- ^ imageMemoryBarrierCount
-                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                    -> IO ()
-
-##else
-vkCmdWaitEventsUnsafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        Word32 -- ^ eventCount
-                               ->
-                          Ptr VkEvent -- ^ pEvents
-                                      ->
-                            VkPipelineStageFlags -- ^ srcStageMask
-                                                 ->
-                              VkPipelineStageFlags -- ^ dstStageMask
-                                                   ->
-                                Word32 -- ^ memoryBarrierCount
-                                       ->
-                                  Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                      ->
-                                    Word32 -- ^ bufferMemoryBarrierCount
-                                           ->
-                                      Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                                ->
-                                        Word32 -- ^ imageMemoryBarrierCount
-                                               -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                           -> IO ()
-vkCmdWaitEventsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdWaitEvents)
-
-{-# NOINLINE vkCmdWaitEventsUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
---
--- or less efficient:
---
--- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
---
--- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
---           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdWaitEvents" vkCmdWaitEventsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ eventCount
-                        ->
-                   Ptr VkEvent -- ^ pEvents
-                               ->
-                     VkPipelineStageFlags -- ^ srcStageMask
-                                          ->
-                       VkPipelineStageFlags -- ^ dstStageMask
-                                            ->
-                         Word32 -- ^ memoryBarrierCount
-                                ->
-                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                               ->
-                             Word32 -- ^ bufferMemoryBarrierCount
-                                    ->
-                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                         ->
-                                 Word32 -- ^ imageMemoryBarrierCount
-                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                    -> IO ()
-
-##else
-vkCmdWaitEventsSafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      Word32 -- ^ eventCount
-                             ->
-                        Ptr VkEvent -- ^ pEvents
-                                    ->
-                          VkPipelineStageFlags -- ^ srcStageMask
-                                               ->
-                            VkPipelineStageFlags -- ^ dstStageMask
-                                                 ->
-                              Word32 -- ^ memoryBarrierCount
-                                     ->
-                                Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                    ->
-                                  Word32 -- ^ bufferMemoryBarrierCount
-                                         ->
-                                    Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                              ->
-                                      Word32 -- ^ imageMemoryBarrierCount
-                                             -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                         -> IO ()
-vkCmdWaitEventsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWaitEvents)
-
-{-# NOINLINE vkCmdWaitEventsSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdWaitEvents
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t eventCount
--- >     , const VkEvent* pEvents
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
---
--- or less efficient:
---
--- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
---
--- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
---           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
---
-vkCmdWaitEvents ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  Word32 -- ^ eventCount
-                         ->
-                    Ptr VkEvent -- ^ pEvents
-                                ->
-                      VkPipelineStageFlags -- ^ srcStageMask
-                                           ->
-                        VkPipelineStageFlags -- ^ dstStageMask
-                                             ->
-                          Word32 -- ^ memoryBarrierCount
-                                 ->
-                            Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                ->
-                              Word32 -- ^ bufferMemoryBarrierCount
-                                     ->
-                                Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                          ->
-                                  Word32 -- ^ imageMemoryBarrierCount
-                                         -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                     -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdWaitEvents = vkCmdWaitEventsUnsafe
-##else
-vkCmdWaitEvents = vkCmdWaitEventsSafe
-
-##endif
-{-# INLINE vkCmdWaitEvents #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdWaitEvents
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t eventCount
---   >     , const VkEvent* pEvents
---   >     , VkPipelineStageFlags srcStageMask
---   >     , VkPipelineStageFlags dstStageMask
---   >     , uint32_t memoryBarrierCount
---   >     , const VkMemoryBarrier* pMemoryBarriers
---   >     , uint32_t bufferMemoryBarrierCount
---   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
---   >     , uint32_t imageMemoryBarrierCount
---   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
-type HS_vkCmdWaitEvents =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ eventCount
-              ->
-         Ptr VkEvent -- ^ pEvents
-                     ->
-           VkPipelineStageFlags -- ^ srcStageMask
-                                ->
-             VkPipelineStageFlags -- ^ dstStageMask
-                                  ->
-               Word32 -- ^ memoryBarrierCount
-                      ->
-                 Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                     ->
-                   Word32 -- ^ bufferMemoryBarrierCount
-                          ->
-                     Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                               ->
-                       Word32 -- ^ imageMemoryBarrierCount
-                              -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                          -> IO ()
-
-type PFN_vkCmdWaitEvents = FunPtr HS_vkCmdWaitEvents
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdWaitEventsUnsafe
-               :: PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
-
-foreign import ccall safe "dynamic" unwrapVkCmdWaitEventsSafe ::
-               PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
-
-instance VulkanProc "vkCmdWaitEvents" where
-        type VkProcType "vkCmdWaitEvents" = HS_vkCmdWaitEvents
-        vkProcSymbol = _VkCmdWaitEvents
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdWaitEventsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdWaitEventsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdPipelineBarrier :: CString
-
-pattern VkCmdPipelineBarrier <- (is_VkCmdPipelineBarrier -> True)
-  where VkCmdPipelineBarrier = _VkCmdPipelineBarrier
-
-{-# INLINE _VkCmdPipelineBarrier #-}
-
-_VkCmdPipelineBarrier :: CString
-_VkCmdPipelineBarrier = Ptr "vkCmdPipelineBarrier\NUL"##
-
-{-# INLINE is_VkCmdPipelineBarrier #-}
-
-is_VkCmdPipelineBarrier :: CString -> Bool
-is_VkCmdPipelineBarrier
-  = (EQ ==) . cmpCStrings _VkCmdPipelineBarrier
-
-type VkCmdPipelineBarrier = "vkCmdPipelineBarrier"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
---
--- or less efficient:
---
--- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
---
--- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
---           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdPipelineBarrier"
-               vkCmdPipelineBarrierUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlags -- ^ srcStageMask
-                                      ->
-                   VkPipelineStageFlags -- ^ dstStageMask
-                                        ->
-                     VkDependencyFlags -- ^ dependencyFlags
-                                       ->
-                       Word32 -- ^ memoryBarrierCount
-                              ->
-                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                             ->
-                           Word32 -- ^ bufferMemoryBarrierCount
-                                  ->
-                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                       ->
-                               Word32 -- ^ imageMemoryBarrierCount
-                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                  -> IO ()
-
-##else
-vkCmdPipelineBarrierUnsafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             VkPipelineStageFlags -- ^ srcStageMask
-                                                  ->
-                               VkPipelineStageFlags -- ^ dstStageMask
-                                                    ->
-                                 VkDependencyFlags -- ^ dependencyFlags
-                                                   ->
-                                   Word32 -- ^ memoryBarrierCount
-                                          ->
-                                     Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                         ->
-                                       Word32 -- ^ bufferMemoryBarrierCount
-                                              ->
-                                         Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                                   ->
-                                           Word32 -- ^ imageMemoryBarrierCount
-                                                  -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                              -> IO ()
-vkCmdPipelineBarrierUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdPipelineBarrier)
-
-{-# NOINLINE vkCmdPipelineBarrierUnsafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
---
--- or less efficient:
---
--- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
---
--- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
---           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdPipelineBarrier"
-               vkCmdPipelineBarrierSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlags -- ^ srcStageMask
-                                      ->
-                   VkPipelineStageFlags -- ^ dstStageMask
-                                        ->
-                     VkDependencyFlags -- ^ dependencyFlags
-                                       ->
-                       Word32 -- ^ memoryBarrierCount
-                              ->
-                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                             ->
-                           Word32 -- ^ bufferMemoryBarrierCount
-                                  ->
-                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                       ->
-                               Word32 -- ^ imageMemoryBarrierCount
-                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                  -> IO ()
-
-##else
-vkCmdPipelineBarrierSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkPipelineStageFlags -- ^ srcStageMask
-                                                ->
-                             VkPipelineStageFlags -- ^ dstStageMask
-                                                  ->
-                               VkDependencyFlags -- ^ dependencyFlags
-                                                 ->
-                                 Word32 -- ^ memoryBarrierCount
-                                        ->
-                                   Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                       ->
-                                     Word32 -- ^ bufferMemoryBarrierCount
-                                            ->
-                                       Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                                 ->
-                                         Word32 -- ^ imageMemoryBarrierCount
-                                                -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                            -> IO ()
-vkCmdPipelineBarrierSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPipelineBarrier)
-
-{-# NOINLINE vkCmdPipelineBarrierSafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPipelineBarrier
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlags srcStageMask
--- >     , VkPipelineStageFlags dstStageMask
--- >     , VkDependencyFlags dependencyFlags
--- >     , uint32_t memoryBarrierCount
--- >     , const VkMemoryBarrier* pMemoryBarriers
--- >     , uint32_t bufferMemoryBarrierCount
--- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
--- >     , uint32_t imageMemoryBarrierCount
--- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
---
--- or less efficient:
---
--- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
---
--- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
---           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
---
-vkCmdPipelineBarrier ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       VkPipelineStageFlags -- ^ srcStageMask
-                                            ->
-                         VkPipelineStageFlags -- ^ dstStageMask
-                                              ->
-                           VkDependencyFlags -- ^ dependencyFlags
-                                             ->
-                             Word32 -- ^ memoryBarrierCount
-                                    ->
-                               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                                   ->
-                                 Word32 -- ^ bufferMemoryBarrierCount
-                                        ->
-                                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                                             ->
-                                     Word32 -- ^ imageMemoryBarrierCount
-                                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                                        -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdPipelineBarrier = vkCmdPipelineBarrierUnsafe
-##else
-vkCmdPipelineBarrier = vkCmdPipelineBarrierSafe
-
-##endif
-{-# INLINE vkCmdPipelineBarrier #-}
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdPipelineBarrier
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineStageFlags srcStageMask
---   >     , VkPipelineStageFlags dstStageMask
---   >     , VkDependencyFlags dependencyFlags
---   >     , uint32_t memoryBarrierCount
---   >     , const VkMemoryBarrier* pMemoryBarriers
---   >     , uint32_t bufferMemoryBarrierCount
---   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
---   >     , uint32_t imageMemoryBarrierCount
---   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
-type HS_vkCmdPipelineBarrier =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineStageFlags -- ^ srcStageMask
-                            ->
-         VkPipelineStageFlags -- ^ dstStageMask
-                              ->
-           VkDependencyFlags -- ^ dependencyFlags
-                             ->
-             Word32 -- ^ memoryBarrierCount
-                    ->
-               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
-                                   ->
-                 Word32 -- ^ bufferMemoryBarrierCount
-                        ->
-                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
-                                             ->
-                     Word32 -- ^ imageMemoryBarrierCount
-                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
-                                                        -> IO ()
-
-type PFN_vkCmdPipelineBarrier = FunPtr HS_vkCmdPipelineBarrier
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdPipelineBarrierUnsafe ::
-               PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
-
-foreign import ccall safe "dynamic" unwrapVkCmdPipelineBarrierSafe
-               :: PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
-
-instance VulkanProc "vkCmdPipelineBarrier" where
-        type VkProcType "vkCmdPipelineBarrier" = HS_vkCmdPipelineBarrier
-        vkProcSymbol = _VkCmdPipelineBarrier
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdPipelineBarrierUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdPipelineBarrierSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBeginQuery :: CString
-
-pattern VkCmdBeginQuery <- (is_VkCmdBeginQuery -> True)
-  where VkCmdBeginQuery = _VkCmdBeginQuery
-
-{-# INLINE _VkCmdBeginQuery #-}
-
-_VkCmdBeginQuery :: CString
-_VkCmdBeginQuery = Ptr "vkCmdBeginQuery\NUL"##
-
-{-# INLINE is_VkCmdBeginQuery #-}
-
-is_VkCmdBeginQuery :: CString -> Bool
-is_VkCmdBeginQuery = (EQ ==) . cmpCStrings _VkCmdBeginQuery
-
-type VkCmdBeginQuery = "vkCmdBeginQuery"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
---
--- or less efficient:
---
--- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
---
--- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
---           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBeginQuery" vkCmdBeginQueryUnsafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             -> Word32 -- ^ query
-                                       -> VkQueryControlFlags -- ^ flags
-                                                              -> IO ()
-
-##else
-vkCmdBeginQueryUnsafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        VkQueryPool -- ^ queryPool
-                                    -> Word32 -- ^ query
-                                              -> VkQueryControlFlags -- ^ flags
-                                                                     -> IO ()
-vkCmdBeginQueryUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBeginQuery)
-
-{-# NOINLINE vkCmdBeginQueryUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
---
--- or less efficient:
---
--- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
---
--- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
---           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBeginQuery" vkCmdBeginQuerySafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             -> Word32 -- ^ query
-                                       -> VkQueryControlFlags -- ^ flags
-                                                              -> IO ()
-
-##else
-vkCmdBeginQuerySafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkQueryPool -- ^ queryPool
-                                  -> Word32 -- ^ query
-                                            -> VkQueryControlFlags -- ^ flags
-                                                                   -> IO ()
-vkCmdBeginQuerySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginQuery)
-
-{-# NOINLINE vkCmdBeginQuerySafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdBeginQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     , VkQueryControlFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
---
--- or less efficient:
---
--- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
---
--- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
---           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
---
-vkCmdBeginQuery ::
-                VkCommandBuffer -- ^ commandBuffer
-                                ->
-                  VkQueryPool -- ^ queryPool
-                              -> Word32 -- ^ query
-                                        -> VkQueryControlFlags -- ^ flags
-                                                               -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdBeginQuery = vkCmdBeginQueryUnsafe
-##else
-vkCmdBeginQuery = vkCmdBeginQuerySafe
-
-##endif
-{-# INLINE vkCmdBeginQuery #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdBeginQuery
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     , VkQueryControlFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
-type HS_vkCmdBeginQuery =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkQueryPool -- ^ queryPool
-                   -> Word32 -- ^ query
-                             -> VkQueryControlFlags -- ^ flags
-                                                    -> IO ()
-
-type PFN_vkCmdBeginQuery = FunPtr HS_vkCmdBeginQuery
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdBeginQueryUnsafe
-               :: PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
-
-foreign import ccall safe "dynamic" unwrapVkCmdBeginQuerySafe ::
-               PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
-
-instance VulkanProc "vkCmdBeginQuery" where
-        type VkProcType "vkCmdBeginQuery" = HS_vkCmdBeginQuery
-        vkProcSymbol = _VkCmdBeginQuery
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdBeginQueryUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBeginQuerySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdEndQuery :: CString
-
-pattern VkCmdEndQuery <- (is_VkCmdEndQuery -> True)
-  where VkCmdEndQuery = _VkCmdEndQuery
-
-{-# INLINE _VkCmdEndQuery #-}
-
-_VkCmdEndQuery :: CString
-_VkCmdEndQuery = Ptr "vkCmdEndQuery\NUL"##
-
-{-# INLINE is_VkCmdEndQuery #-}
-
-is_VkCmdEndQuery :: CString -> Bool
-is_VkCmdEndQuery = (EQ ==) . cmpCStrings _VkCmdEndQuery
-
-type VkCmdEndQuery = "vkCmdEndQuery"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
---
--- or less efficient:
---
--- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
---
--- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
---           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdEndQuery" vkCmdEndQueryUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-##else
-vkCmdEndQueryUnsafe ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> VkQueryPool -- ^ queryPool
-                                                   -> Word32 -- ^ query
-                                                             -> IO ()
-vkCmdEndQueryUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdEndQuery)
-
-{-# NOINLINE vkCmdEndQueryUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
---
--- or less efficient:
---
--- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
---
--- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
---           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdEndQuery" vkCmdEndQuerySafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-##else
-vkCmdEndQuerySafe ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  -> VkQueryPool -- ^ queryPool
-                                                 -> Word32 -- ^ query
-                                                           -> IO ()
-vkCmdEndQuerySafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndQuery)
-
-{-# NOINLINE vkCmdEndQuerySafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdEndQuery
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
---
--- or less efficient:
---
--- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
---
--- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
---           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
---
-vkCmdEndQuery :: VkCommandBuffer -- ^ commandBuffer
-                                 -> VkQueryPool -- ^ queryPool
-                                                -> Word32 -- ^ query
-                                                          -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdEndQuery = vkCmdEndQueryUnsafe
-##else
-vkCmdEndQuery = vkCmdEndQuerySafe
-
-##endif
-{-# INLINE vkCmdEndQuery #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdEndQuery
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
-type HS_vkCmdEndQuery =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkQueryPool -- ^ queryPool
-                                    -> Word32 -- ^ query
-                                              -> IO ()
-
-type PFN_vkCmdEndQuery = FunPtr HS_vkCmdEndQuery
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdEndQueryUnsafe ::
-               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
-
-foreign import ccall safe "dynamic" unwrapVkCmdEndQuerySafe ::
-               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
-
-instance VulkanProc "vkCmdEndQuery" where
-        type VkProcType "vkCmdEndQuery" = HS_vkCmdEndQuery
-        vkProcSymbol = _VkCmdEndQuery
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdEndQueryUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdEndQuerySafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdResetQueryPool :: CString
-
-pattern VkCmdResetQueryPool <- (is_VkCmdResetQueryPool -> True)
-  where VkCmdResetQueryPool = _VkCmdResetQueryPool
-
-{-# INLINE _VkCmdResetQueryPool #-}
-
-_VkCmdResetQueryPool :: CString
-_VkCmdResetQueryPool = Ptr "vkCmdResetQueryPool\NUL"##
-
-{-# INLINE is_VkCmdResetQueryPool #-}
-
-is_VkCmdResetQueryPool :: CString -> Bool
-is_VkCmdResetQueryPool = (EQ ==) . cmpCStrings _VkCmdResetQueryPool
-
-type VkCmdResetQueryPool = "vkCmdResetQueryPool"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
---
--- or less efficient:
---
--- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
---
--- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
---           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdResetQueryPool"
-               vkCmdResetQueryPoolUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ firstQuery
-                                                        -> Word32 -- ^ queryCount
-                                                                  -> IO ()
-
-##else
-vkCmdResetQueryPoolUnsafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          -> VkQueryPool -- ^ queryPool
-                                                         -> Word32 -- ^ firstQuery
-                                                                   -> Word32 -- ^ queryCount
-                                                                             -> IO ()
-vkCmdResetQueryPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResetQueryPool)
-
-{-# NOINLINE vkCmdResetQueryPoolUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
---
--- or less efficient:
---
--- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
---
--- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
---           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdResetQueryPool"
-               vkCmdResetQueryPoolSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ firstQuery
-                                                        -> Word32 -- ^ queryCount
-                                                                  -> IO ()
-
-##else
-vkCmdResetQueryPoolSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        -> VkQueryPool -- ^ queryPool
-                                                       -> Word32 -- ^ firstQuery
-                                                                 -> Word32 -- ^ queryCount
-                                                                           -> IO ()
-vkCmdResetQueryPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetQueryPool)
-
-{-# NOINLINE vkCmdResetQueryPoolSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdResetQueryPool
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
---
--- or less efficient:
---
--- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
---
--- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
---           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
---
-vkCmdResetQueryPool ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    -> VkQueryPool -- ^ queryPool
-                                                   -> Word32 -- ^ firstQuery
-                                                             -> Word32 -- ^ queryCount
-                                                                       -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdResetQueryPool = vkCmdResetQueryPoolUnsafe
-##else
-vkCmdResetQueryPool = vkCmdResetQueryPoolSafe
-
-##endif
-{-# INLINE vkCmdResetQueryPool #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdResetQueryPool
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
-type HS_vkCmdResetQueryPool =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkQueryPool -- ^ queryPool
-                                    -> Word32 -- ^ firstQuery
-                                              -> Word32 -- ^ queryCount
-                                                        -> IO ()
-
-type PFN_vkCmdResetQueryPool = FunPtr HS_vkCmdResetQueryPool
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdResetQueryPoolUnsafe ::
-               PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
-
-foreign import ccall safe "dynamic" unwrapVkCmdResetQueryPoolSafe
-               :: PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
-
-instance VulkanProc "vkCmdResetQueryPool" where
-        type VkProcType "vkCmdResetQueryPool" = HS_vkCmdResetQueryPool
-        vkProcSymbol = _VkCmdResetQueryPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdResetQueryPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdResetQueryPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdWriteTimestamp :: CString
-
-pattern VkCmdWriteTimestamp <- (is_VkCmdWriteTimestamp -> True)
-  where VkCmdWriteTimestamp = _VkCmdWriteTimestamp
-
-{-# INLINE _VkCmdWriteTimestamp #-}
-
-_VkCmdWriteTimestamp :: CString
-_VkCmdWriteTimestamp = Ptr "vkCmdWriteTimestamp\NUL"##
-
-{-# INLINE is_VkCmdWriteTimestamp #-}
-
-is_VkCmdWriteTimestamp :: CString -> Bool
-is_VkCmdWriteTimestamp = (EQ ==) . cmpCStrings _VkCmdWriteTimestamp
-
-type VkCmdWriteTimestamp = "vkCmdWriteTimestamp"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
---
--- or less efficient:
---
--- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
---
--- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
---           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdWriteTimestamp"
-               vkCmdWriteTimestampUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlagBits -- ^ pipelineStage
-                                         -> VkQueryPool -- ^ queryPool
-                                                        -> Word32 -- ^ query
-                                                                  -> IO ()
-
-##else
-vkCmdWriteTimestampUnsafe ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          ->
-                            VkPipelineStageFlagBits -- ^ pipelineStage
-                                                    -> VkQueryPool -- ^ queryPool
-                                                                   -> Word32 -- ^ query
-                                                                             -> IO ()
-vkCmdWriteTimestampUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdWriteTimestamp)
-
-{-# NOINLINE vkCmdWriteTimestampUnsafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
---
--- or less efficient:
---
--- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
---
--- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
---           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdWriteTimestamp"
-               vkCmdWriteTimestampSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineStageFlagBits -- ^ pipelineStage
-                                         -> VkQueryPool -- ^ queryPool
-                                                        -> Word32 -- ^ query
-                                                                  -> IO ()
-
-##else
-vkCmdWriteTimestampSafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          VkPipelineStageFlagBits -- ^ pipelineStage
-                                                  -> VkQueryPool -- ^ queryPool
-                                                                 -> Word32 -- ^ query
-                                                                           -> IO ()
-vkCmdWriteTimestampSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWriteTimestamp)
-
-{-# NOINLINE vkCmdWriteTimestampSafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- Pipeline: @transfer@
---
--- > void vkCmdWriteTimestamp
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineStageFlagBits pipelineStage
--- >     , VkQueryPool queryPool
--- >     , uint32_t query
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
---
--- or less efficient:
---
--- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
---
--- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
---           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
---
-vkCmdWriteTimestamp ::
-                    VkCommandBuffer -- ^ commandBuffer
-                                    ->
-                      VkPipelineStageFlagBits -- ^ pipelineStage
-                                              -> VkQueryPool -- ^ queryPool
-                                                             -> Word32 -- ^ query
-                                                                       -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdWriteTimestamp = vkCmdWriteTimestampUnsafe
-##else
-vkCmdWriteTimestamp = vkCmdWriteTimestampSafe
-
-##endif
-{-# INLINE vkCmdWriteTimestamp #-}
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   Pipeline: @transfer@
---
---   > void vkCmdWriteTimestamp
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineStageFlagBits pipelineStage
---   >     , VkQueryPool queryPool
---   >     , uint32_t query
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
-type HS_vkCmdWriteTimestamp =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineStageFlagBits -- ^ pipelineStage
-                               -> VkQueryPool -- ^ queryPool
-                                              -> Word32 -- ^ query
-                                                        -> IO ()
-
-type PFN_vkCmdWriteTimestamp = FunPtr HS_vkCmdWriteTimestamp
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdWriteTimestampUnsafe ::
-               PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
-
-foreign import ccall safe "dynamic" unwrapVkCmdWriteTimestampSafe
-               :: PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
-
-instance VulkanProc "vkCmdWriteTimestamp" where
-        type VkProcType "vkCmdWriteTimestamp" = HS_vkCmdWriteTimestamp
-        vkProcSymbol = _VkCmdWriteTimestamp
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdWriteTimestampUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdWriteTimestampSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdCopyQueryPoolResults :: CString
-
-pattern VkCmdCopyQueryPoolResults <-
-        (is_VkCmdCopyQueryPoolResults -> True)
-  where VkCmdCopyQueryPoolResults = _VkCmdCopyQueryPoolResults
-
-{-# INLINE _VkCmdCopyQueryPoolResults #-}
-
-_VkCmdCopyQueryPoolResults :: CString
-_VkCmdCopyQueryPoolResults = Ptr "vkCmdCopyQueryPoolResults\NUL"##
-
-{-# INLINE is_VkCmdCopyQueryPoolResults #-}
-
-is_VkCmdCopyQueryPoolResults :: CString -> Bool
-is_VkCmdCopyQueryPoolResults
-  = (EQ ==) . cmpCStrings _VkCmdCopyQueryPoolResults
-
-type VkCmdCopyQueryPoolResults = "vkCmdCopyQueryPoolResults"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
---
--- or less efficient:
---
--- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
---
--- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
---           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdCopyQueryPoolResults"
-               vkCmdCopyQueryPoolResultsUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       VkBuffer -- ^ dstBuffer
-                                ->
-                         VkDeviceSize -- ^ dstOffset
-                                      -> VkDeviceSize -- ^ stride
-                                                      -> VkQueryResultFlags -- ^ flags
-                                                                            -> IO ()
-
-##else
-vkCmdCopyQueryPoolResultsUnsafe ::
-                                VkCommandBuffer -- ^ commandBuffer
-                                                ->
-                                  VkQueryPool -- ^ queryPool
-                                              ->
-                                    Word32 -- ^ firstQuery
-                                           ->
-                                      Word32 -- ^ queryCount
-                                             ->
-                                        VkBuffer -- ^ dstBuffer
-                                                 ->
-                                          VkDeviceSize -- ^ dstOffset
-                                                       ->
-                                            VkDeviceSize -- ^ stride
-                                                         -> VkQueryResultFlags -- ^ flags
-                                                                               -> IO ()
-vkCmdCopyQueryPoolResultsUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCmdCopyQueryPoolResults)
-
-{-# NOINLINE vkCmdCopyQueryPoolResultsUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
---
--- or less efficient:
---
--- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
---
--- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
---           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdCopyQueryPoolResults"
-               vkCmdCopyQueryPoolResultsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkQueryPool -- ^ queryPool
-                             ->
-                   Word32 -- ^ firstQuery
-                          ->
-                     Word32 -- ^ queryCount
-                            ->
-                       VkBuffer -- ^ dstBuffer
-                                ->
-                         VkDeviceSize -- ^ dstOffset
-                                      -> VkDeviceSize -- ^ stride
-                                                      -> VkQueryResultFlags -- ^ flags
-                                                                            -> IO ()
-
-##else
-vkCmdCopyQueryPoolResultsSafe ::
-                              VkCommandBuffer -- ^ commandBuffer
-                                              ->
-                                VkQueryPool -- ^ queryPool
-                                            ->
-                                  Word32 -- ^ firstQuery
-                                         ->
-                                    Word32 -- ^ queryCount
-                                           ->
-                                      VkBuffer -- ^ dstBuffer
-                                               ->
-                                        VkDeviceSize -- ^ dstOffset
-                                                     -> VkDeviceSize -- ^ stride
-                                                                     -> VkQueryResultFlags -- ^ flags
-                                                                                           -> IO ()
-vkCmdCopyQueryPoolResultsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyQueryPoolResults)
-
-{-# NOINLINE vkCmdCopyQueryPoolResultsSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @outside@
---
--- Pipeline: @transfer@
---
--- > void vkCmdCopyQueryPoolResults
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkQueryPool queryPool
--- >     , uint32_t firstQuery
--- >     , uint32_t queryCount
--- >     , VkBuffer dstBuffer
--- >     , VkDeviceSize dstOffset
--- >     , VkDeviceSize stride
--- >     , VkQueryResultFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
---
--- or less efficient:
---
--- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
---
--- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
---           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
---
-vkCmdCopyQueryPoolResults ::
-                          VkCommandBuffer -- ^ commandBuffer
-                                          ->
-                            VkQueryPool -- ^ queryPool
-                                        ->
-                              Word32 -- ^ firstQuery
-                                     ->
-                                Word32 -- ^ queryCount
-                                       ->
-                                  VkBuffer -- ^ dstBuffer
-                                           ->
-                                    VkDeviceSize -- ^ dstOffset
-                                                 -> VkDeviceSize -- ^ stride
-                                                                 -> VkQueryResultFlags -- ^ flags
-                                                                                       -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdCopyQueryPoolResults = vkCmdCopyQueryPoolResultsUnsafe
-##else
-vkCmdCopyQueryPoolResults = vkCmdCopyQueryPoolResultsSafe
-
-##endif
-{-# INLINE vkCmdCopyQueryPoolResults #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @outside@
---
---   Pipeline: @transfer@
---
---   > void vkCmdCopyQueryPoolResults
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkQueryPool queryPool
---   >     , uint32_t firstQuery
---   >     , uint32_t queryCount
---   >     , VkBuffer dstBuffer
---   >     , VkDeviceSize dstOffset
---   >     , VkDeviceSize stride
---   >     , VkQueryResultFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
-type HS_vkCmdCopyQueryPoolResults =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkQueryPool -- ^ queryPool
-                   ->
-         Word32 -- ^ firstQuery
-                ->
-           Word32 -- ^ queryCount
-                  ->
-             VkBuffer -- ^ dstBuffer
-                      ->
-               VkDeviceSize -- ^ dstOffset
-                            -> VkDeviceSize -- ^ stride
-                                            -> VkQueryResultFlags -- ^ flags
-                                                                  -> IO ()
-
-type PFN_vkCmdCopyQueryPoolResults =
-     FunPtr HS_vkCmdCopyQueryPoolResults
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdCopyQueryPoolResultsUnsafe ::
-               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
-
-foreign import ccall safe "dynamic"
-               unwrapVkCmdCopyQueryPoolResultsSafe ::
-               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
-
-instance VulkanProc "vkCmdCopyQueryPoolResults" where
-        type VkProcType "vkCmdCopyQueryPoolResults" =
-             HS_vkCmdCopyQueryPoolResults
-        vkProcSymbol = _VkCmdCopyQueryPoolResults
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdCopyQueryPoolResultsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdCopyQueryPoolResultsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdPushConstants :: CString
-
-pattern VkCmdPushConstants <- (is_VkCmdPushConstants -> True)
-  where VkCmdPushConstants = _VkCmdPushConstants
-
-{-# INLINE _VkCmdPushConstants #-}
-
-_VkCmdPushConstants :: CString
-_VkCmdPushConstants = Ptr "vkCmdPushConstants\NUL"##
-
-{-# INLINE is_VkCmdPushConstants #-}
-
-is_VkCmdPushConstants :: CString -> Bool
-is_VkCmdPushConstants = (EQ ==) . cmpCStrings _VkCmdPushConstants
-
-type VkCmdPushConstants = "vkCmdPushConstants"
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
---
--- or less efficient:
---
--- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
---
--- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
---           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdPushConstants"
-               vkCmdPushConstantsUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineLayout -- ^ layout
-                                  ->
-                   VkShaderStageFlags -- ^ stageFlags
-                                      -> Word32 -- ^ offset
-                                                -> Word32 -- ^ size
-                                                          -> Ptr Void -- ^ pValues
-                                                                      -> IO ()
-
-##else
-vkCmdPushConstantsUnsafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           VkPipelineLayout -- ^ layout
-                                            ->
-                             VkShaderStageFlags -- ^ stageFlags
-                                                -> Word32 -- ^ offset
-                                                          -> Word32 -- ^ size
-                                                                    -> Ptr Void -- ^ pValues
-                                                                                -> IO ()
-vkCmdPushConstantsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdPushConstants)
-
-{-# NOINLINE vkCmdPushConstantsUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
---
--- or less efficient:
---
--- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
---
--- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
---           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdPushConstants"
-               vkCmdPushConstantsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 VkPipelineLayout -- ^ layout
-                                  ->
-                   VkShaderStageFlags -- ^ stageFlags
-                                      -> Word32 -- ^ offset
-                                                -> Word32 -- ^ size
-                                                          -> Ptr Void -- ^ pValues
-                                                                      -> IO ()
-
-##else
-vkCmdPushConstantsSafe ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       ->
-                         VkPipelineLayout -- ^ layout
-                                          ->
-                           VkShaderStageFlags -- ^ stageFlags
-                                              -> Word32 -- ^ offset
-                                                        -> Word32 -- ^ size
-                                                                  -> Ptr Void -- ^ pValues
-                                                                              -> IO ()
-vkCmdPushConstantsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPushConstants)
-
-{-# NOINLINE vkCmdPushConstantsSafe #-}
-##endif
-
--- |
--- Queues: 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdPushConstants
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkPipelineLayout layout
--- >     , VkShaderStageFlags stageFlags
--- >     , uint32_t offset
--- >     , uint32_t size
--- >     , const void* pValues
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
---
--- or less efficient:
---
--- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
---
--- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
---           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
---
-vkCmdPushConstants ::
-                   VkCommandBuffer -- ^ commandBuffer
-                                   ->
-                     VkPipelineLayout -- ^ layout
-                                      ->
-                       VkShaderStageFlags -- ^ stageFlags
-                                          -> Word32 -- ^ offset
-                                                    -> Word32 -- ^ size
-                                                              -> Ptr Void -- ^ pValues
-                                                                          -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdPushConstants = vkCmdPushConstantsUnsafe
-##else
-vkCmdPushConstants = vkCmdPushConstantsSafe
-
-##endif
-{-# INLINE vkCmdPushConstants #-}
-
--- | Queues: 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdPushConstants
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkPipelineLayout layout
---   >     , VkShaderStageFlags stageFlags
---   >     , uint32_t offset
---   >     , uint32_t size
---   >     , const void* pValues
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
-type HS_vkCmdPushConstants =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       VkPipelineLayout -- ^ layout
-                        ->
-         VkShaderStageFlags -- ^ stageFlags
-                            -> Word32 -- ^ offset
-                                      -> Word32 -- ^ size
-                                                -> Ptr Void -- ^ pValues
-                                                            -> IO ()
-
-type PFN_vkCmdPushConstants = FunPtr HS_vkCmdPushConstants
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdPushConstantsUnsafe ::
-               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
-
-foreign import ccall safe "dynamic" unwrapVkCmdPushConstantsSafe ::
-               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
-
-instance VulkanProc "vkCmdPushConstants" where
-        type VkProcType "vkCmdPushConstants" = HS_vkCmdPushConstants
-        vkProcSymbol = _VkCmdPushConstants
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdPushConstantsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdPushConstantsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdBeginRenderPass :: CString
-
-pattern VkCmdBeginRenderPass <- (is_VkCmdBeginRenderPass -> True)
-  where VkCmdBeginRenderPass = _VkCmdBeginRenderPass
-
-{-# INLINE _VkCmdBeginRenderPass #-}
-
-_VkCmdBeginRenderPass :: CString
-_VkCmdBeginRenderPass = Ptr "vkCmdBeginRenderPass\NUL"##
-
-{-# INLINE is_VkCmdBeginRenderPass #-}
-
-is_VkCmdBeginRenderPass :: CString -> Bool
-is_VkCmdBeginRenderPass
-  = (EQ ==) . cmpCStrings _VkCmdBeginRenderPass
-
-type VkCmdBeginRenderPass = "vkCmdBeginRenderPass"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
---
--- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
---           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdBeginRenderPass"
-               vkCmdBeginRenderPassUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                           -> VkSubpassContents -- ^ contents
-                                                                -> IO ()
-
-##else
-vkCmdBeginRenderPassUnsafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           ->
-                             Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                                       -> VkSubpassContents -- ^ contents
-                                                                            -> IO ()
-vkCmdBeginRenderPassUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBeginRenderPass)
-
-{-# NOINLINE vkCmdBeginRenderPassUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
---
--- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
---           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdBeginRenderPass"
-               vkCmdBeginRenderPassSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                           -> VkSubpassContents -- ^ contents
-                                                                -> IO ()
-
-##else
-vkCmdBeginRenderPassSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         ->
-                           Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                                     -> VkSubpassContents -- ^ contents
-                                                                          -> IO ()
-vkCmdBeginRenderPassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginRenderPass)
-
-{-# NOINLINE vkCmdBeginRenderPassSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @outside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdBeginRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     , const VkRenderPassBeginInfo* pRenderPassBegin
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
---
--- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
---           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
---
-vkCmdBeginRenderPass ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     ->
-                       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                                 -> VkSubpassContents -- ^ contents
-                                                                      -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdBeginRenderPass = vkCmdBeginRenderPassUnsafe
-##else
-vkCmdBeginRenderPass = vkCmdBeginRenderPassSafe
-
-##endif
-{-# INLINE vkCmdBeginRenderPass #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @outside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdBeginRenderPass
---   >     ( VkCommandBuffer commandBuffer
---   >     , const VkRenderPassBeginInfo* pRenderPassBegin
---   >     , VkSubpassContents contents
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
-type HS_vkCmdBeginRenderPass =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
-                                 -> VkSubpassContents -- ^ contents
-                                                      -> IO ()
-
-type PFN_vkCmdBeginRenderPass = FunPtr HS_vkCmdBeginRenderPass
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdBeginRenderPassUnsafe ::
-               PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
-
-foreign import ccall safe "dynamic" unwrapVkCmdBeginRenderPassSafe
-               :: PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
-
-instance VulkanProc "vkCmdBeginRenderPass" where
-        type VkProcType "vkCmdBeginRenderPass" = HS_vkCmdBeginRenderPass
-        vkProcSymbol = _VkCmdBeginRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdBeginRenderPassUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBeginRenderPassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdNextSubpass :: CString
-
-pattern VkCmdNextSubpass <- (is_VkCmdNextSubpass -> True)
-  where VkCmdNextSubpass = _VkCmdNextSubpass
-
-{-# INLINE _VkCmdNextSubpass #-}
-
-_VkCmdNextSubpass :: CString
-_VkCmdNextSubpass = Ptr "vkCmdNextSubpass\NUL"##
-
-{-# INLINE is_VkCmdNextSubpass #-}
-
-is_VkCmdNextSubpass :: CString -> Bool
-is_VkCmdNextSubpass = (EQ ==) . cmpCStrings _VkCmdNextSubpass
-
-type VkCmdNextSubpass = "vkCmdNextSubpass"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
---
--- or less efficient:
---
--- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
---
--- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
---           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdNextSubpass"
-               vkCmdNextSubpassUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> VkSubpassContents -- ^ contents
-                                                    -> IO ()
-
-##else
-vkCmdNextSubpassUnsafe ::
-                       VkCommandBuffer -- ^ commandBuffer
-                                       -> VkSubpassContents -- ^ contents
-                                                            -> IO ()
-vkCmdNextSubpassUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdNextSubpass)
-
-{-# NOINLINE vkCmdNextSubpassUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
---
--- or less efficient:
---
--- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
---
--- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
---           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdNextSubpass" vkCmdNextSubpassSafe
-               :: VkCommandBuffer -- ^ commandBuffer
-                                  -> VkSubpassContents -- ^ contents
-                                                       -> IO ()
-
-##else
-vkCmdNextSubpassSafe ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> VkSubpassContents -- ^ contents
-                                                          -> IO ()
-vkCmdNextSubpassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdNextSubpass)
-
-{-# NOINLINE vkCmdNextSubpassSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdNextSubpass
--- >     ( VkCommandBuffer commandBuffer
--- >     , VkSubpassContents contents
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
---
--- or less efficient:
---
--- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
---
--- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
---           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
---
-vkCmdNextSubpass :: VkCommandBuffer -- ^ commandBuffer
-                                    -> VkSubpassContents -- ^ contents
-                                                         -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdNextSubpass = vkCmdNextSubpassUnsafe
-##else
-vkCmdNextSubpass = vkCmdNextSubpassSafe
-
-##endif
-{-# INLINE vkCmdNextSubpass #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdNextSubpass
---   >     ( VkCommandBuffer commandBuffer
---   >     , VkSubpassContents contents
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
-type HS_vkCmdNextSubpass =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> VkSubpassContents -- ^ contents
-                                          -> IO ()
-
-type PFN_vkCmdNextSubpass = FunPtr HS_vkCmdNextSubpass
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdNextSubpassUnsafe
-               :: PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
-
-foreign import ccall safe "dynamic" unwrapVkCmdNextSubpassSafe ::
-               PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
-
-instance VulkanProc "vkCmdNextSubpass" where
-        type VkProcType "vkCmdNextSubpass" = HS_vkCmdNextSubpass
-        vkProcSymbol = _VkCmdNextSubpass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdNextSubpassUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdNextSubpassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdEndRenderPass :: CString
-
-pattern VkCmdEndRenderPass <- (is_VkCmdEndRenderPass -> True)
-  where VkCmdEndRenderPass = _VkCmdEndRenderPass
-
-{-# INLINE _VkCmdEndRenderPass #-}
-
-_VkCmdEndRenderPass :: CString
-_VkCmdEndRenderPass = Ptr "vkCmdEndRenderPass\NUL"##
-
-{-# INLINE is_VkCmdEndRenderPass #-}
-
-is_VkCmdEndRenderPass :: CString -> Bool
-is_VkCmdEndRenderPass = (EQ ==) . cmpCStrings _VkCmdEndRenderPass
-
-type VkCmdEndRenderPass = "vkCmdEndRenderPass"
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
---
--- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
---           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdEndRenderPass"
-               vkCmdEndRenderPassUnsafe :: VkCommandBuffer -- ^ commandBuffer
-                                                           -> IO ()
-
-##else
-vkCmdEndRenderPassUnsafe :: VkCommandBuffer -- ^ commandBuffer
-                                            -> IO ()
-vkCmdEndRenderPassUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdEndRenderPass)
-
-{-# NOINLINE vkCmdEndRenderPassUnsafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
---
--- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
---           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdEndRenderPass"
-               vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> IO ()
-
-##else
-vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> IO ()
-vkCmdEndRenderPassSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndRenderPass)
-
-{-# NOINLINE vkCmdEndRenderPassSafe #-}
-##endif
-
--- |
--- Queues: 'graphics'.
---
--- Renderpass: @inside@
---
--- Pipeline: @graphics@
---
--- > void vkCmdEndRenderPass
--- >     ( VkCommandBuffer commandBuffer
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
---
--- or less efficient:
---
--- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
---
--- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
---           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
---
-vkCmdEndRenderPass :: VkCommandBuffer -- ^ commandBuffer
-                                      -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdEndRenderPass = vkCmdEndRenderPassUnsafe
-##else
-vkCmdEndRenderPass = vkCmdEndRenderPassSafe
-
-##endif
-{-# INLINE vkCmdEndRenderPass #-}
-
--- | Queues: 'graphics'.
---
---   Renderpass: @inside@
---
---   Pipeline: @graphics@
---
---   > void vkCmdEndRenderPass
---   >     ( VkCommandBuffer commandBuffer
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
-type HS_vkCmdEndRenderPass = VkCommandBuffer -- ^ commandBuffer
-                                             -> IO ()
-
-type PFN_vkCmdEndRenderPass = FunPtr HS_vkCmdEndRenderPass
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdEndRenderPassUnsafe ::
-               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
-
-foreign import ccall safe "dynamic" unwrapVkCmdEndRenderPassSafe ::
-               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
-
-instance VulkanProc "vkCmdEndRenderPass" where
-        type VkProcType "vkCmdEndRenderPass" = HS_vkCmdEndRenderPass
-        vkProcSymbol = _VkCmdEndRenderPass
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdEndRenderPassUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdEndRenderPassSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdExecuteCommands :: CString
-
-pattern VkCmdExecuteCommands <- (is_VkCmdExecuteCommands -> True)
-  where VkCmdExecuteCommands = _VkCmdExecuteCommands
-
-{-# INLINE _VkCmdExecuteCommands #-}
-
-_VkCmdExecuteCommands :: CString
-_VkCmdExecuteCommands = Ptr "vkCmdExecuteCommands\NUL"##
-
-{-# INLINE is_VkCmdExecuteCommands #-}
-
-is_VkCmdExecuteCommands :: CString -> Bool
-is_VkCmdExecuteCommands
-  = (EQ ==) . cmpCStrings _VkCmdExecuteCommands
-
-type VkCmdExecuteCommands = "vkCmdExecuteCommands"
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
---
--- or less efficient:
---
--- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
---
--- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
---           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall unsafe "vkCmdExecuteCommands"
-               vkCmdExecuteCommandsUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-##else
-vkCmdExecuteCommandsUnsafe ::
-                           VkCommandBuffer -- ^ commandBuffer
-                                           -> Word32 -- ^ commandBufferCount
-                                                     -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                            -> IO ()
-vkCmdExecuteCommandsUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdExecuteCommands)
-
-{-# NOINLINE vkCmdExecuteCommandsUnsafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
---
--- or less efficient:
---
--- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
---
--- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
---           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
---
---
-##ifdef NATIVE_FFI_VK_VERSION_1_0
-foreign import ccall safe "vkCmdExecuteCommands"
-               vkCmdExecuteCommandsSafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               -> Word32 -- ^ commandBufferCount
-                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                -> IO ()
-
-##else
-vkCmdExecuteCommandsSafe ::
-                         VkCommandBuffer -- ^ commandBuffer
-                                         -> Word32 -- ^ commandBufferCount
-                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                          -> IO ()
-vkCmdExecuteCommandsSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdExecuteCommands)
-
-{-# NOINLINE vkCmdExecuteCommandsSafe #-}
-##endif
-
--- |
--- Queues: 'transfer', 'graphics', 'compute'.
---
--- Renderpass: @both@
---
--- > void vkCmdExecuteCommands
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t commandBufferCount
--- >     , const VkCommandBuffer* pCommandBuffers
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
---
--- or less efficient:
---
--- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
---
--- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
---           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
---
-vkCmdExecuteCommands ::
-                     VkCommandBuffer -- ^ commandBuffer
-                                     -> Word32 -- ^ commandBufferCount
-                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                                      -> IO ()
-##ifdef UNSAFE_FFI_DEFAULT
-vkCmdExecuteCommands = vkCmdExecuteCommandsUnsafe
-##else
-vkCmdExecuteCommands = vkCmdExecuteCommandsSafe
-
-##endif
-{-# INLINE vkCmdExecuteCommands #-}
-
--- | Queues: 'transfer', 'graphics', 'compute'.
---
---   Renderpass: @both@
---
---   > void vkCmdExecuteCommands
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t commandBufferCount
---   >     , const VkCommandBuffer* pCommandBuffers
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
-type HS_vkCmdExecuteCommands =
-     VkCommandBuffer -- ^ commandBuffer
-                     -> Word32 -- ^ commandBufferCount
-                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
-                                                      -> IO ()
-
-type PFN_vkCmdExecuteCommands = FunPtr HS_vkCmdExecuteCommands
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdExecuteCommandsUnsafe ::
-               PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
-
-foreign import ccall safe "dynamic" unwrapVkCmdExecuteCommandsSafe
-               :: PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
-
-instance VulkanProc "vkCmdExecuteCommands" where
-        type VkProcType "vkCmdExecuteCommands" = HS_vkCmdExecuteCommands
-        vkProcSymbol = _VkCmdExecuteCommands
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdExecuteCommandsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdExecuteCommandsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
+        VkPipelineBindPoint(..), VkPipelineCacheHeaderVersion(..),
+        VkPipelineCreateBitmask(..), VkPipelineStageBitmask(..),
+        VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..),
+        pattern VK_LOD_CLAMP_NONE, pattern VK_REMAINING_MIP_LEVELS,
+        pattern VK_REMAINING_ARRAY_LAYERS, pattern VK_WHOLE_SIZE,
+        pattern VK_ATTACHMENT_UNUSED, pattern VK_TRUE, pattern VK_FALSE,
+        pattern VK_QUEUE_FAMILY_IGNORED, pattern VK_SUBPASS_EXTERNAL,
+        -- ** Device initialization
+        VkCreateInstance, pattern VkCreateInstance, HS_vkCreateInstance,
+        PFN_vkCreateInstance, vkCreateInstance, vkCreateInstanceUnsafe,
+        vkCreateInstanceSafe, VkDestroyInstance, pattern VkDestroyInstance,
+        HS_vkDestroyInstance, PFN_vkDestroyInstance, vkDestroyInstance,
+        vkDestroyInstanceUnsafe, vkDestroyInstanceSafe,
+        VkEnumeratePhysicalDevices, pattern VkEnumeratePhysicalDevices,
+        HS_vkEnumeratePhysicalDevices, PFN_vkEnumeratePhysicalDevices,
+        vkEnumeratePhysicalDevices, vkEnumeratePhysicalDevicesUnsafe,
+        vkEnumeratePhysicalDevicesSafe, VkGetPhysicalDeviceFeatures,
+        pattern VkGetPhysicalDeviceFeatures,
+        HS_vkGetPhysicalDeviceFeatures, PFN_vkGetPhysicalDeviceFeatures,
+        vkGetPhysicalDeviceFeatures, vkGetPhysicalDeviceFeaturesUnsafe,
+        vkGetPhysicalDeviceFeaturesSafe,
+        VkGetPhysicalDeviceFormatProperties,
+        pattern VkGetPhysicalDeviceFormatProperties,
+        HS_vkGetPhysicalDeviceFormatProperties,
+        PFN_vkGetPhysicalDeviceFormatProperties,
+        vkGetPhysicalDeviceFormatProperties,
+        vkGetPhysicalDeviceFormatPropertiesUnsafe,
+        vkGetPhysicalDeviceFormatPropertiesSafe,
+        VkGetPhysicalDeviceImageFormatProperties,
+        pattern VkGetPhysicalDeviceImageFormatProperties,
+        HS_vkGetPhysicalDeviceImageFormatProperties,
+        PFN_vkGetPhysicalDeviceImageFormatProperties,
+        vkGetPhysicalDeviceImageFormatProperties,
+        vkGetPhysicalDeviceImageFormatPropertiesUnsafe,
+        vkGetPhysicalDeviceImageFormatPropertiesSafe,
+        VkGetPhysicalDeviceProperties,
+        pattern VkGetPhysicalDeviceProperties,
+        HS_vkGetPhysicalDeviceProperties,
+        PFN_vkGetPhysicalDeviceProperties, vkGetPhysicalDeviceProperties,
+        vkGetPhysicalDevicePropertiesUnsafe,
+        vkGetPhysicalDevicePropertiesSafe,
+        VkGetPhysicalDeviceQueueFamilyProperties,
+        pattern VkGetPhysicalDeviceQueueFamilyProperties,
+        HS_vkGetPhysicalDeviceQueueFamilyProperties,
+        PFN_vkGetPhysicalDeviceQueueFamilyProperties,
+        vkGetPhysicalDeviceQueueFamilyProperties,
+        vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe,
+        vkGetPhysicalDeviceQueueFamilyPropertiesSafe,
+        VkGetPhysicalDeviceMemoryProperties,
+        pattern VkGetPhysicalDeviceMemoryProperties,
+        HS_vkGetPhysicalDeviceMemoryProperties,
+        PFN_vkGetPhysicalDeviceMemoryProperties,
+        vkGetPhysicalDeviceMemoryProperties,
+        vkGetPhysicalDeviceMemoryPropertiesUnsafe,
+        vkGetPhysicalDeviceMemoryPropertiesSafe, VkGetInstanceProcAddr,
+        pattern VkGetInstanceProcAddr, HS_vkGetInstanceProcAddr,
+        PFN_vkGetInstanceProcAddr, vkGetInstanceProcAddr,
+        vkGetInstanceProcAddrUnsafe, vkGetInstanceProcAddrSafe,
+        VkGetDeviceProcAddr, pattern VkGetDeviceProcAddr,
+        HS_vkGetDeviceProcAddr, PFN_vkGetDeviceProcAddr,
+        vkGetDeviceProcAddr, vkGetDeviceProcAddrUnsafe,
+        vkGetDeviceProcAddrSafe, module Graphics.Vulkan.Marshal,
+        VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkInternalAllocationType(..), VkMemoryAllocateBitmask(..),
+        VkMemoryHeapBitmask(..), VkMemoryPropertyBitmask(..),
+        VkMemoryAllocateFlagBits(), VkMemoryAllocateFlagBitsKHR(..),
+        VkMemoryAllocateFlags(), VkMemoryHeapFlagBits(),
+        VkMemoryHeapFlags(), VkMemoryPropertyFlagBits(),
+        VkMemoryPropertyFlags(), VkPhysicalDeviceType(..),
+        VkQueueBitmask(..), VkQueueGlobalPriorityEXT(..),
+        VkQueueFlagBits(), VkQueueFlags(), VkResult(..),
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkStructureType(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkApplicationInfo, VkExtent2D, VkExtent3D,
+        VkFormatProperties, VkFormatProperties2, VkFormatProperties2KHR,
+        VkImageBlit, VkImageCopy, VkImageCreateInfo,
+        VkImageFormatListCreateInfoKHR, VkImageFormatProperties,
+        VkImageFormatProperties2, VkImageFormatProperties2KHR,
+        VkImageMemoryBarrier, VkImageMemoryRequirementsInfo2,
+        VkImageMemoryRequirementsInfo2KHR,
+        VkImagePlaneMemoryRequirementsInfo,
+        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
+        VkImageSparseMemoryRequirementsInfo2,
+        VkImageSparseMemoryRequirementsInfo2KHR, VkImageSubresource,
+        VkImageSubresourceLayers, VkImageSubresourceRange,
+        VkImageSwapchainCreateInfoKHR, VkImageViewCreateInfo,
+        VkImageViewUsageCreateInfo, VkImageViewUsageCreateInfoKHR,
+        VkInstanceCreateInfo, VkMemoryAllocateFlagsInfo,
+        VkMemoryAllocateFlagsInfoKHR, VkMemoryAllocateInfo,
+        VkMemoryBarrier, VkMemoryDedicatedAllocateInfo,
+        VkMemoryDedicatedAllocateInfoKHR, VkMemoryDedicatedRequirements,
+        VkMemoryDedicatedRequirementsKHR, VkMemoryFdPropertiesKHR,
+        VkMemoryGetFdInfoKHR, VkMemoryHeap,
+        VkMemoryHostPointerPropertiesEXT, VkMemoryRequirements,
+        VkMemoryRequirements2, VkMemoryRequirements2KHR, VkMemoryType,
+        VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2KHR,
+        VkPhysicalDeviceGroupProperties,
+        VkPhysicalDeviceGroupPropertiesKHR, VkPhysicalDeviceIDProperties,
+        VkPhysicalDeviceIDPropertiesKHR, VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceImageFormatInfo2KHR, VkPhysicalDeviceLimits,
+        VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties,
+        VkPhysicalDeviceSurfaceInfo2KHR,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
+        VkPhysicalDeviceFeatures, VkQueueFamilyProperties,
+        VkQueueFamilyProperties2, VkQueueFamilyProperties2KHR,
+        -- ** Device commands
+        VkCreateDevice, pattern VkCreateDevice, HS_vkCreateDevice,
+        PFN_vkCreateDevice, vkCreateDevice, vkCreateDeviceUnsafe,
+        vkCreateDeviceSafe, VkDestroyDevice, pattern VkDestroyDevice,
+        HS_vkDestroyDevice, PFN_vkDestroyDevice, vkDestroyDevice,
+        vkDestroyDeviceUnsafe, vkDestroyDeviceSafe,
+        VkDeviceEventTypeEXT(..), VkDeviceGroupPresentModeBitmaskKHR(..),
+        VkDeviceCreateFlagBits(..), VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkDeviceCreateInfo, VkDeviceEventInfoEXT,
+        VkDeviceGeneratedCommandsFeaturesNVX,
+        VkDeviceGeneratedCommandsLimitsNVX, VkDeviceGroupBindSparseInfo,
+        VkDeviceGroupBindSparseInfoKHR,
+        VkDeviceGroupCommandBufferBeginInfo,
+        VkDeviceGroupCommandBufferBeginInfoKHR,
+        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfoKHR,
+        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
+        VkDeviceGroupRenderPassBeginInfo,
+        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
+        VkDeviceGroupSubmitInfoKHR, VkDeviceGroupSwapchainCreateInfoKHR,
+        VkDeviceQueueCreateInfo, VkDeviceQueueGlobalPriorityCreateInfoEXT,
+        VkDeviceQueueInfo2, -- ** Extension discovery commands
+                            VkEnumerateInstanceExtensionProperties,
+        pattern VkEnumerateInstanceExtensionProperties,
+        HS_vkEnumerateInstanceExtensionProperties,
+        PFN_vkEnumerateInstanceExtensionProperties,
+        vkEnumerateInstanceExtensionProperties,
+        vkEnumerateInstanceExtensionPropertiesUnsafe,
+        vkEnumerateInstanceExtensionPropertiesSafe,
+        VkEnumerateDeviceExtensionProperties,
+        pattern VkEnumerateDeviceExtensionProperties,
+        HS_vkEnumerateDeviceExtensionProperties,
+        PFN_vkEnumerateDeviceExtensionProperties,
+        vkEnumerateDeviceExtensionProperties,
+        vkEnumerateDeviceExtensionPropertiesUnsafe,
+        vkEnumerateDeviceExtensionPropertiesSafe, VkExtensionProperties,
+        -- ** Layer discovery commands
+        VkEnumerateInstanceLayerProperties,
+        pattern VkEnumerateInstanceLayerProperties,
+        HS_vkEnumerateInstanceLayerProperties,
+        PFN_vkEnumerateInstanceLayerProperties,
+        vkEnumerateInstanceLayerProperties,
+        vkEnumerateInstanceLayerPropertiesUnsafe,
+        vkEnumerateInstanceLayerPropertiesSafe,
+        VkEnumerateDeviceLayerProperties,
+        pattern VkEnumerateDeviceLayerProperties,
+        HS_vkEnumerateDeviceLayerProperties,
+        PFN_vkEnumerateDeviceLayerProperties,
+        vkEnumerateDeviceLayerProperties,
+        vkEnumerateDeviceLayerPropertiesUnsafe,
+        vkEnumerateDeviceLayerPropertiesSafe, VkLayerProperties,
+        -- ** queue commands
+        VkGetDeviceQueue, pattern VkGetDeviceQueue, HS_vkGetDeviceQueue,
+        PFN_vkGetDeviceQueue, vkGetDeviceQueue, vkGetDeviceQueueUnsafe,
+        vkGetDeviceQueueSafe, VkQueueSubmit, pattern VkQueueSubmit,
+        HS_vkQueueSubmit, PFN_vkQueueSubmit, vkQueueSubmit,
+        vkQueueSubmitUnsafe, vkQueueSubmitSafe, VkQueueWaitIdle,
+        pattern VkQueueWaitIdle, HS_vkQueueWaitIdle, PFN_vkQueueWaitIdle,
+        vkQueueWaitIdle, vkQueueWaitIdleUnsafe, vkQueueWaitIdleSafe,
+        VkDeviceWaitIdle, pattern VkDeviceWaitIdle, HS_vkDeviceWaitIdle,
+        PFN_vkDeviceWaitIdle, vkDeviceWaitIdle, vkDeviceWaitIdleUnsafe,
+        vkDeviceWaitIdleSafe, VkSubmitInfo, -- ** Memory commands
+                                            VkAllocateMemory,
+        pattern VkAllocateMemory, HS_vkAllocateMemory,
+        PFN_vkAllocateMemory, vkAllocateMemory, vkAllocateMemoryUnsafe,
+        vkAllocateMemorySafe, VkFreeMemory, pattern VkFreeMemory,
+        HS_vkFreeMemory, PFN_vkFreeMemory, vkFreeMemory,
+        vkFreeMemoryUnsafe, vkFreeMemorySafe, VkMapMemory,
+        pattern VkMapMemory, HS_vkMapMemory, PFN_vkMapMemory, vkMapMemory,
+        vkMapMemoryUnsafe, vkMapMemorySafe, VkUnmapMemory,
+        pattern VkUnmapMemory, HS_vkUnmapMemory, PFN_vkUnmapMemory,
+        vkUnmapMemory, vkUnmapMemoryUnsafe, vkUnmapMemorySafe,
+        VkFlushMappedMemoryRanges, pattern VkFlushMappedMemoryRanges,
+        HS_vkFlushMappedMemoryRanges, PFN_vkFlushMappedMemoryRanges,
+        vkFlushMappedMemoryRanges, vkFlushMappedMemoryRangesUnsafe,
+        vkFlushMappedMemoryRangesSafe, VkInvalidateMappedMemoryRanges,
+        pattern VkInvalidateMappedMemoryRanges,
+        HS_vkInvalidateMappedMemoryRanges,
+        PFN_vkInvalidateMappedMemoryRanges, vkInvalidateMappedMemoryRanges,
+        vkInvalidateMappedMemoryRangesUnsafe,
+        vkInvalidateMappedMemoryRangesSafe, VkGetDeviceMemoryCommitment,
+        pattern VkGetDeviceMemoryCommitment,
+        HS_vkGetDeviceMemoryCommitment, PFN_vkGetDeviceMemoryCommitment,
+        vkGetDeviceMemoryCommitment, vkGetDeviceMemoryCommitmentUnsafe,
+        vkGetDeviceMemoryCommitmentSafe, VkMappedMemoryRange,
+        -- ** Memory management API commands
+        VkBindBufferMemory, pattern VkBindBufferMemory,
+        HS_vkBindBufferMemory, PFN_vkBindBufferMemory, vkBindBufferMemory,
+        vkBindBufferMemoryUnsafe, vkBindBufferMemorySafe,
+        VkBindImageMemory, pattern VkBindImageMemory, HS_vkBindImageMemory,
+        PFN_vkBindImageMemory, vkBindImageMemory, vkBindImageMemoryUnsafe,
+        vkBindImageMemorySafe, VkGetBufferMemoryRequirements,
+        pattern VkGetBufferMemoryRequirements,
+        HS_vkGetBufferMemoryRequirements,
+        PFN_vkGetBufferMemoryRequirements, vkGetBufferMemoryRequirements,
+        vkGetBufferMemoryRequirementsUnsafe,
+        vkGetBufferMemoryRequirementsSafe, VkGetImageMemoryRequirements,
+        pattern VkGetImageMemoryRequirements,
+        HS_vkGetImageMemoryRequirements, PFN_vkGetImageMemoryRequirements,
+        vkGetImageMemoryRequirements, vkGetImageMemoryRequirementsUnsafe,
+        vkGetImageMemoryRequirementsSafe,
+        -- ** Sparse resource memory management API commands
+        VkGetImageSparseMemoryRequirements,
+        pattern VkGetImageSparseMemoryRequirements,
+        HS_vkGetImageSparseMemoryRequirements,
+        PFN_vkGetImageSparseMemoryRequirements,
+        vkGetImageSparseMemoryRequirements,
+        vkGetImageSparseMemoryRequirementsUnsafe,
+        vkGetImageSparseMemoryRequirementsSafe,
+        VkGetPhysicalDeviceSparseImageFormatProperties,
+        pattern VkGetPhysicalDeviceSparseImageFormatProperties,
+        HS_vkGetPhysicalDeviceSparseImageFormatProperties,
+        PFN_vkGetPhysicalDeviceSparseImageFormatProperties,
+        vkGetPhysicalDeviceSparseImageFormatProperties,
+        vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe,
+        vkGetPhysicalDeviceSparseImageFormatPropertiesSafe,
+        VkQueueBindSparse, pattern VkQueueBindSparse, HS_vkQueueBindSparse,
+        PFN_vkQueueBindSparse, vkQueueBindSparse, vkQueueBindSparseUnsafe,
+        vkQueueBindSparseSafe, VkSparseImageFormatBitmask(..),
+        VkSparseMemoryBindBitmask(..), VkSparseImageFormatFlagBits(),
+        VkSparseImageFormatFlags(), VkSparseMemoryBindFlagBits(),
+        VkSparseMemoryBindFlags(), VkBindBufferMemoryDeviceGroupInfo,
+        VkBindBufferMemoryDeviceGroupInfoKHR, VkBindBufferMemoryInfo,
+        VkBindBufferMemoryInfoKHR, VkBindImageMemoryDeviceGroupInfo,
+        VkBindImageMemoryDeviceGroupInfoKHR, VkBindImageMemoryInfo,
+        VkBindImageMemoryInfoKHR, VkBindImageMemorySwapchainInfoKHR,
+        VkBindImagePlaneMemoryInfo, VkBindImagePlaneMemoryInfoKHR,
+        VkBindSparseInfo, VkOffset2D, VkOffset3D,
+        VkSparseBufferMemoryBindInfo, VkSparseImageFormatProperties,
+        VkSparseImageFormatProperties2, VkSparseImageFormatProperties2KHR,
+        VkSparseImageMemoryBind, VkSparseImageMemoryBindInfo,
+        VkSparseImageMemoryRequirements, VkSparseImageMemoryRequirements2,
+        VkSparseImageMemoryRequirements2KHR,
+        VkSparseImageOpaqueMemoryBindInfo, VkSparseMemoryBind,
+        -- ** Fence commands
+        VkCreateFence, pattern VkCreateFence, HS_vkCreateFence,
+        PFN_vkCreateFence, vkCreateFence, vkCreateFenceUnsafe,
+        vkCreateFenceSafe, VkDestroyFence, pattern VkDestroyFence,
+        HS_vkDestroyFence, PFN_vkDestroyFence, vkDestroyFence,
+        vkDestroyFenceUnsafe, vkDestroyFenceSafe, VkResetFences,
+        pattern VkResetFences, HS_vkResetFences, PFN_vkResetFences,
+        vkResetFences, vkResetFencesUnsafe, vkResetFencesSafe,
+        VkGetFenceStatus, pattern VkGetFenceStatus, HS_vkGetFenceStatus,
+        PFN_vkGetFenceStatus, vkGetFenceStatus, vkGetFenceStatusUnsafe,
+        vkGetFenceStatusSafe, VkWaitForFences, pattern VkWaitForFences,
+        HS_vkWaitForFences, PFN_vkWaitForFences, vkWaitForFences,
+        vkWaitForFencesUnsafe, vkWaitForFencesSafe,
+        VkFenceCreateBitmask(..), VkFenceImportBitmask(..),
+        VkFenceCreateFlagBits(), VkFenceCreateFlags(),
+        VkFenceImportFlagBits(), VkFenceImportFlagBitsKHR(..),
+        VkFenceImportFlags(), VkFenceCreateInfo, VkFenceGetFdInfoKHR,
+        -- ** Queue semaphore commands
+        VkCreateSemaphore, pattern VkCreateSemaphore, HS_vkCreateSemaphore,
+        PFN_vkCreateSemaphore, vkCreateSemaphore, vkCreateSemaphoreUnsafe,
+        vkCreateSemaphoreSafe, VkDestroySemaphore,
+        pattern VkDestroySemaphore, HS_vkDestroySemaphore,
+        PFN_vkDestroySemaphore, vkDestroySemaphore,
+        vkDestroySemaphoreUnsafe, vkDestroySemaphoreSafe,
+        VkSemaphoreCreateInfo, VkSemaphoreGetFdInfoKHR, -- ** Event commands
+                                                        VkCreateEvent,
+        pattern VkCreateEvent, HS_vkCreateEvent, PFN_vkCreateEvent,
+        vkCreateEvent, vkCreateEventUnsafe, vkCreateEventSafe,
+        VkDestroyEvent, pattern VkDestroyEvent, HS_vkDestroyEvent,
+        PFN_vkDestroyEvent, vkDestroyEvent, vkDestroyEventUnsafe,
+        vkDestroyEventSafe, VkGetEventStatus, pattern VkGetEventStatus,
+        HS_vkGetEventStatus, PFN_vkGetEventStatus, vkGetEventStatus,
+        vkGetEventStatusUnsafe, vkGetEventStatusSafe, VkSetEvent,
+        pattern VkSetEvent, HS_vkSetEvent, PFN_vkSetEvent, vkSetEvent,
+        vkSetEventUnsafe, vkSetEventSafe, VkResetEvent,
+        pattern VkResetEvent, HS_vkResetEvent, PFN_vkResetEvent,
+        vkResetEvent, vkResetEventUnsafe, vkResetEventSafe,
+        VkEventCreateInfo, -- ** Query commands
+                           VkCreateQueryPool, pattern VkCreateQueryPool,
+        HS_vkCreateQueryPool, PFN_vkCreateQueryPool, vkCreateQueryPool,
+        vkCreateQueryPoolUnsafe, vkCreateQueryPoolSafe, VkDestroyQueryPool,
+        pattern VkDestroyQueryPool, HS_vkDestroyQueryPool,
+        PFN_vkDestroyQueryPool, vkDestroyQueryPool,
+        vkDestroyQueryPoolUnsafe, vkDestroyQueryPoolSafe,
+        VkGetQueryPoolResults, pattern VkGetQueryPoolResults,
+        HS_vkGetQueryPoolResults, PFN_vkGetQueryPoolResults,
+        vkGetQueryPoolResults, vkGetQueryPoolResultsUnsafe,
+        vkGetQueryPoolResultsSafe, VkQueryControlBitmask(..),
+        VkQueryPipelineStatisticBitmask(..), VkQueryResultBitmask(..),
+        VkQueryType(..), VkQueryControlFlagBits(), VkQueryControlFlags(),
+        VkQueryPipelineStatisticFlagBits(),
+        VkQueryPipelineStatisticFlags(), VkQueryPoolCreateFlagBits(..),
+        VkQueryResultFlagBits(), VkQueryResultFlags(),
+        VkQueryPoolCreateInfo, -- ** Buffer commands
+                               VkCreateBuffer, pattern VkCreateBuffer,
+        HS_vkCreateBuffer, PFN_vkCreateBuffer, vkCreateBuffer,
+        vkCreateBufferUnsafe, vkCreateBufferSafe, VkDestroyBuffer,
+        pattern VkDestroyBuffer, HS_vkDestroyBuffer, PFN_vkDestroyBuffer,
+        vkDestroyBuffer, vkDestroyBufferUnsafe, vkDestroyBufferSafe,
+        VkBufferCreateBitmask(..), VkBufferUsageBitmask(..),
+        VkBufferCreateFlagBits(), VkBufferCreateFlags(),
+        VkBufferUsageFlagBits(), VkBufferUsageFlags(),
+        VkBufferViewCreateFlagBits(..), VkSharingMode(..), VkBufferCopy,
+        VkBufferCreateInfo, VkBufferImageCopy, VkBufferMemoryBarrier,
+        VkBufferMemoryRequirementsInfo2,
+        VkBufferMemoryRequirementsInfo2KHR, VkBufferViewCreateInfo,
+        -- ** Buffer view commands
+        VkCreateBufferView, pattern VkCreateBufferView,
+        HS_vkCreateBufferView, PFN_vkCreateBufferView, vkCreateBufferView,
+        vkCreateBufferViewUnsafe, vkCreateBufferViewSafe,
+        VkDestroyBufferView, pattern VkDestroyBufferView,
+        HS_vkDestroyBufferView, PFN_vkDestroyBufferView,
+        vkDestroyBufferView, vkDestroyBufferViewUnsafe,
+        vkDestroyBufferViewSafe, -- ** Image commands
+                                 VkCreateImage, pattern VkCreateImage,
+        HS_vkCreateImage, PFN_vkCreateImage, vkCreateImage,
+        vkCreateImageUnsafe, vkCreateImageSafe, VkDestroyImage,
+        pattern VkDestroyImage, HS_vkDestroyImage, PFN_vkDestroyImage,
+        vkDestroyImage, vkDestroyImageUnsafe, vkDestroyImageSafe,
+        VkGetImageSubresourceLayout, pattern VkGetImageSubresourceLayout,
+        HS_vkGetImageSubresourceLayout, PFN_vkGetImageSubresourceLayout,
+        vkGetImageSubresourceLayout, vkGetImageSubresourceLayoutUnsafe,
+        vkGetImageSubresourceLayoutSafe, VkSubresourceLayout,
+        -- ** Image view commands
+        VkCreateImageView, pattern VkCreateImageView, HS_vkCreateImageView,
+        PFN_vkCreateImageView, vkCreateImageView, vkCreateImageViewUnsafe,
+        vkCreateImageViewSafe, VkDestroyImageView,
+        pattern VkDestroyImageView, HS_vkDestroyImageView,
+        PFN_vkDestroyImageView, vkDestroyImageView,
+        vkDestroyImageViewUnsafe, vkDestroyImageViewSafe,
+        VkComponentSwizzle(..), VkComponentMapping, -- ** Shader commands
+                                                    VkCreateShaderModule,
+        pattern VkCreateShaderModule, HS_vkCreateShaderModule,
+        PFN_vkCreateShaderModule, vkCreateShaderModule,
+        vkCreateShaderModuleUnsafe, vkCreateShaderModuleSafe,
+        VkDestroyShaderModule, pattern VkDestroyShaderModule,
+        HS_vkDestroyShaderModule, PFN_vkDestroyShaderModule,
+        vkDestroyShaderModule, vkDestroyShaderModuleUnsafe,
+        vkDestroyShaderModuleSafe, VkShaderModuleCreateInfo,
+        VkShaderModuleValidationCacheCreateInfoEXT,
+        VkShaderResourceUsageAMD, VkShaderStatisticsInfoAMD,
+        -- ** Pipeline Cache commands
+        VkCreatePipelineCache, pattern VkCreatePipelineCache,
+        HS_vkCreatePipelineCache, PFN_vkCreatePipelineCache,
+        vkCreatePipelineCache, vkCreatePipelineCacheUnsafe,
+        vkCreatePipelineCacheSafe, VkDestroyPipelineCache,
+        pattern VkDestroyPipelineCache, HS_vkDestroyPipelineCache,
+        PFN_vkDestroyPipelineCache, vkDestroyPipelineCache,
+        vkDestroyPipelineCacheUnsafe, vkDestroyPipelineCacheSafe,
+        VkGetPipelineCacheData, pattern VkGetPipelineCacheData,
+        HS_vkGetPipelineCacheData, PFN_vkGetPipelineCacheData,
+        vkGetPipelineCacheData, vkGetPipelineCacheDataUnsafe,
+        vkGetPipelineCacheDataSafe, VkMergePipelineCaches,
+        pattern VkMergePipelineCaches, HS_vkMergePipelineCaches,
+        PFN_vkMergePipelineCaches, vkMergePipelineCaches,
+        vkMergePipelineCachesUnsafe, vkMergePipelineCachesSafe,
+        VkGraphicsPipelineCreateInfo, VkPipelineCacheCreateInfo,
+        VkPipelineColorBlendAdvancedStateCreateInfoEXT,
+        VkPipelineColorBlendAttachmentState,
+        VkPipelineColorBlendStateCreateInfo,
+        VkPipelineCoverageModulationStateCreateInfoNV,
+        VkPipelineCoverageToColorStateCreateInfoNV,
+        VkPipelineDepthStencilStateCreateInfo,
+        VkPipelineDiscardRectangleStateCreateInfoEXT,
+        VkPipelineDynamicStateCreateInfo,
+        VkPipelineInputAssemblyStateCreateInfo, VkPipelineLayoutCreateInfo,
+        VkPipelineMultisampleStateCreateInfo,
+        VkPipelineRasterizationConservativeStateCreateInfoEXT,
+        VkPipelineRasterizationStateCreateInfo,
+        VkPipelineRasterizationStateRasterizationOrderAMD,
+        VkPipelineSampleLocationsStateCreateInfoEXT,
+        VkPipelineShaderStageCreateInfo,
+        VkPipelineTessellationDomainOriginStateCreateInfo,
+        VkPipelineTessellationDomainOriginStateCreateInfoKHR,
+        VkPipelineTessellationStateCreateInfo,
+        VkPipelineVertexInputDivisorStateCreateInfoEXT,
+        VkPipelineVertexInputStateCreateInfo,
+        VkPipelineViewportStateCreateInfo,
+        VkPipelineViewportSwizzleStateCreateInfoNV,
+        VkPipelineViewportWScalingStateCreateInfoNV,
+        -- ** Pipeline commands
+        VkCreateGraphicsPipelines, pattern VkCreateGraphicsPipelines,
+        HS_vkCreateGraphicsPipelines, PFN_vkCreateGraphicsPipelines,
+        vkCreateGraphicsPipelines, vkCreateGraphicsPipelinesUnsafe,
+        vkCreateGraphicsPipelinesSafe, VkCreateComputePipelines,
+        pattern VkCreateComputePipelines, HS_vkCreateComputePipelines,
+        PFN_vkCreateComputePipelines, vkCreateComputePipelines,
+        vkCreateComputePipelinesUnsafe, vkCreateComputePipelinesSafe,
+        VkDestroyPipeline, pattern VkDestroyPipeline, HS_vkDestroyPipeline,
+        PFN_vkDestroyPipeline, vkDestroyPipeline, vkDestroyPipelineUnsafe,
+        vkDestroyPipelineSafe, VkBlendFactor(..), VkBlendOp(..),
+        VkBlendOverlapEXT(..), VkColorComponentBitmask(..),
+        VkColorSpaceKHR(..), VkColorComponentFlagBits(),
+        VkColorComponentFlags(), VkCompareOp(..), VkCullModeBitmask(..),
+        VkCullModeFlagBits(), VkCullModeFlags(), VkDynamicState(..),
+        VkFrontFace(..), VkLogicOp(..), VkPolygonMode(..),
+        VkPrimitiveTopology(..), VkShaderInfoTypeAMD(..),
+        VkShaderStageBitmask(..), VkShaderStageFlagBits(),
+        VkShaderStageFlags(), VkStencilFaceBitmask(..), VkStencilOp(..),
+        VkStencilFaceFlagBits(), VkStencilFaceFlags(),
+        VkVertexInputRate(..), VkComputePipelineCreateInfo, VkRect2D,
+        VkRectLayerKHR, VkSpecializationInfo, VkSpecializationMapEntry,
+        VkStencilOpState, VkVertexInputAttributeDescription,
+        VkVertexInputBindingDescription,
+        VkVertexInputBindingDivisorDescriptionEXT, VkViewport,
+        VkViewportSwizzleNV, VkViewportWScalingNV, -- ** Pipeline layout commands
+                                                   VkCreatePipelineLayout,
+        pattern VkCreatePipelineLayout, HS_vkCreatePipelineLayout,
+        PFN_vkCreatePipelineLayout, vkCreatePipelineLayout,
+        vkCreatePipelineLayoutUnsafe, vkCreatePipelineLayoutSafe,
+        VkDestroyPipelineLayout, pattern VkDestroyPipelineLayout,
+        HS_vkDestroyPipelineLayout, PFN_vkDestroyPipelineLayout,
+        vkDestroyPipelineLayout, vkDestroyPipelineLayoutUnsafe,
+        vkDestroyPipelineLayoutSafe, VkPushConstantRange, -- ** Sampler commands
+                                                          VkCreateSampler,
+        pattern VkCreateSampler, HS_vkCreateSampler, PFN_vkCreateSampler,
+        vkCreateSampler, vkCreateSamplerUnsafe, vkCreateSamplerSafe,
+        VkDestroySampler, pattern VkDestroySampler, HS_vkDestroySampler,
+        PFN_vkDestroySampler, vkDestroySampler, vkDestroySamplerUnsafe,
+        vkDestroySamplerSafe, VkBorderColor(..), VkFilter(..),
+        VkSamplerAddressMode(..), VkSamplerMipmapMode(..),
+        VkSamplerReductionModeEXT(..), VkSamplerYcbcrModelConversion(..),
+        VkSamplerYcbcrRange(..), VkSamplerCreateFlagBits(..),
+        VkSamplerYcbcrModelConversionKHR(..), VkSamplerYcbcrRangeKHR(..),
+        VkSamplerCreateInfo, VkSamplerReductionModeCreateInfoEXT,
+        VkSamplerYcbcrConversionCreateInfo,
+        VkSamplerYcbcrConversionCreateInfoKHR,
+        VkSamplerYcbcrConversionImageFormatProperties,
+        VkSamplerYcbcrConversionImageFormatPropertiesKHR,
+        VkSamplerYcbcrConversionInfo, VkSamplerYcbcrConversionInfoKHR,
+        -- ** Descriptor set commands
+        VkCreateDescriptorSetLayout, pattern VkCreateDescriptorSetLayout,
+        HS_vkCreateDescriptorSetLayout, PFN_vkCreateDescriptorSetLayout,
+        vkCreateDescriptorSetLayout, vkCreateDescriptorSetLayoutUnsafe,
+        vkCreateDescriptorSetLayoutSafe, VkDestroyDescriptorSetLayout,
+        pattern VkDestroyDescriptorSetLayout,
+        HS_vkDestroyDescriptorSetLayout, PFN_vkDestroyDescriptorSetLayout,
+        vkDestroyDescriptorSetLayout, vkDestroyDescriptorSetLayoutUnsafe,
+        vkDestroyDescriptorSetLayoutSafe, VkCreateDescriptorPool,
+        pattern VkCreateDescriptorPool, HS_vkCreateDescriptorPool,
+        PFN_vkCreateDescriptorPool, vkCreateDescriptorPool,
+        vkCreateDescriptorPoolUnsafe, vkCreateDescriptorPoolSafe,
+        VkDestroyDescriptorPool, pattern VkDestroyDescriptorPool,
+        HS_vkDestroyDescriptorPool, PFN_vkDestroyDescriptorPool,
+        vkDestroyDescriptorPool, vkDestroyDescriptorPoolUnsafe,
+        vkDestroyDescriptorPoolSafe, VkResetDescriptorPool,
+        pattern VkResetDescriptorPool, HS_vkResetDescriptorPool,
+        PFN_vkResetDescriptorPool, vkResetDescriptorPool,
+        vkResetDescriptorPoolUnsafe, vkResetDescriptorPoolSafe,
+        VkAllocateDescriptorSets, pattern VkAllocateDescriptorSets,
+        HS_vkAllocateDescriptorSets, PFN_vkAllocateDescriptorSets,
+        vkAllocateDescriptorSets, vkAllocateDescriptorSetsUnsafe,
+        vkAllocateDescriptorSetsSafe, VkFreeDescriptorSets,
+        pattern VkFreeDescriptorSets, HS_vkFreeDescriptorSets,
+        PFN_vkFreeDescriptorSets, vkFreeDescriptorSets,
+        vkFreeDescriptorSetsUnsafe, vkFreeDescriptorSetsSafe,
+        VkUpdateDescriptorSets, pattern VkUpdateDescriptorSets,
+        HS_vkUpdateDescriptorSets, PFN_vkUpdateDescriptorSets,
+        vkUpdateDescriptorSets, vkUpdateDescriptorSetsUnsafe,
+        vkUpdateDescriptorSetsSafe, VkDescriptorBindingBitmaskEXT(..),
+        VkDescriptorPoolCreateBitmask(..), VkDescriptorType(..),
+        VkDescriptorUpdateTemplateType(..),
+        VkDescriptorBindingFlagBitsEXT(), VkDescriptorBindingFlagsEXT(),
+        VkDescriptorPoolCreateFlagBits(), VkDescriptorPoolCreateFlags(),
+        VkDescriptorSetLayoutCreateBitmask(..),
+        VkDescriptorSetLayoutCreateFlagBits(),
+        VkDescriptorSetLayoutCreateFlags(),
+        VkDescriptorUpdateTemplateTypeKHR(..), VkCopyDescriptorSet,
+        VkDescriptorBufferInfo, VkDescriptorImageInfo,
+        VkDescriptorPoolCreateInfo, VkDescriptorPoolSize,
+        VkDescriptorSetAllocateInfo, VkDescriptorSetLayoutBinding,
+        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
+        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutSupport,
+        VkDescriptorSetLayoutSupportKHR,
+        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
+        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
+        VkDescriptorUpdateTemplateCreateInfo,
+        VkDescriptorUpdateTemplateCreateInfoKHR,
+        VkDescriptorUpdateTemplateEntry,
+        VkDescriptorUpdateTemplateEntryKHR, VkWriteDescriptorSet,
+        -- ** Pass commands
+        VkCreateFramebuffer, pattern VkCreateFramebuffer,
+        HS_vkCreateFramebuffer, PFN_vkCreateFramebuffer,
+        vkCreateFramebuffer, vkCreateFramebufferUnsafe,
+        vkCreateFramebufferSafe, VkDestroyFramebuffer,
+        pattern VkDestroyFramebuffer, HS_vkDestroyFramebuffer,
+        PFN_vkDestroyFramebuffer, vkDestroyFramebuffer,
+        vkDestroyFramebufferUnsafe, vkDestroyFramebufferSafe,
+        VkCreateRenderPass, pattern VkCreateRenderPass,
+        HS_vkCreateRenderPass, PFN_vkCreateRenderPass, vkCreateRenderPass,
+        vkCreateRenderPassUnsafe, vkCreateRenderPassSafe,
+        VkDestroyRenderPass, pattern VkDestroyRenderPass,
+        HS_vkDestroyRenderPass, PFN_vkDestroyRenderPass,
+        vkDestroyRenderPass, vkDestroyRenderPassUnsafe,
+        vkDestroyRenderPassSafe, VkGetRenderAreaGranularity,
+        pattern VkGetRenderAreaGranularity, HS_vkGetRenderAreaGranularity,
+        PFN_vkGetRenderAreaGranularity, vkGetRenderAreaGranularity,
+        vkGetRenderAreaGranularityUnsafe, vkGetRenderAreaGranularitySafe,
+        VkAccessBitmask(..), VkAccessFlagBits(), VkAccessFlags(),
+        VkAttachmentDescriptionBitmask(..), VkAttachmentLoadOp(..),
+        VkAttachmentStoreOp(..), VkAttachmentDescriptionFlagBits(),
+        VkAttachmentDescriptionFlags(), VkDependencyBitmask(..),
+        VkDependencyFlagBits(), VkDependencyFlags(), VkSubpassContents(..),
+        VkSubpassDescriptionBitmask(..), VkSubpassDescriptionFlagBits(),
+        VkSubpassDescriptionFlags(), VkAttachmentDescription,
+        VkAttachmentReference, VkAttachmentSampleLocationsEXT,
+        VkFramebufferCreateInfo, VkRenderPassBeginInfo,
+        VkRenderPassCreateInfo,
+        VkRenderPassInputAttachmentAspectCreateInfo,
+        VkRenderPassInputAttachmentAspectCreateInfoKHR,
+        VkRenderPassMultiviewCreateInfo,
+        VkRenderPassMultiviewCreateInfoKHR,
+        VkRenderPassSampleLocationsBeginInfoEXT, VkSubpassDependency,
+        VkSubpassDescription, VkSubpassSampleLocationsEXT,
+        -- ** Command pool commands
+        VkCreateCommandPool, pattern VkCreateCommandPool,
+        HS_vkCreateCommandPool, PFN_vkCreateCommandPool,
+        vkCreateCommandPool, vkCreateCommandPoolUnsafe,
+        vkCreateCommandPoolSafe, VkDestroyCommandPool,
+        pattern VkDestroyCommandPool, HS_vkDestroyCommandPool,
+        PFN_vkDestroyCommandPool, vkDestroyCommandPool,
+        vkDestroyCommandPoolUnsafe, vkDestroyCommandPoolSafe,
+        VkResetCommandPool, pattern VkResetCommandPool,
+        HS_vkResetCommandPool, PFN_vkResetCommandPool, vkResetCommandPool,
+        vkResetCommandPoolUnsafe, vkResetCommandPoolSafe,
+        VkCommandBufferLevel(..), VkCommandBufferResetBitmask(..),
+        VkCommandBufferUsageBitmask(..), VkCommandPoolCreateBitmask(..),
+        VkCommandPoolResetBitmask(..), VkCommandBufferResetFlagBits(),
+        VkCommandBufferResetFlags(), VkCommandBufferUsageFlagBits(),
+        VkCommandBufferUsageFlags(), VkCommandPoolCreateFlagBits(),
+        VkCommandPoolCreateFlags(), VkCommandPoolResetFlagBits(),
+        VkCommandPoolResetFlags(), VkCommandBufferAllocateInfo,
+        VkCommandBufferBeginInfo, VkCommandBufferInheritanceInfo,
+        VkCommandPoolCreateInfo, -- ** Command buffer commands
+                                 VkAllocateCommandBuffers,
+        pattern VkAllocateCommandBuffers, HS_vkAllocateCommandBuffers,
+        PFN_vkAllocateCommandBuffers, vkAllocateCommandBuffers,
+        vkAllocateCommandBuffersUnsafe, vkAllocateCommandBuffersSafe,
+        VkFreeCommandBuffers, pattern VkFreeCommandBuffers,
+        HS_vkFreeCommandBuffers, PFN_vkFreeCommandBuffers,
+        vkFreeCommandBuffers, vkFreeCommandBuffersUnsafe,
+        vkFreeCommandBuffersSafe, VkBeginCommandBuffer,
+        pattern VkBeginCommandBuffer, HS_vkBeginCommandBuffer,
+        PFN_vkBeginCommandBuffer, vkBeginCommandBuffer,
+        vkBeginCommandBufferUnsafe, vkBeginCommandBufferSafe,
+        VkEndCommandBuffer, pattern VkEndCommandBuffer,
+        HS_vkEndCommandBuffer, PFN_vkEndCommandBuffer, vkEndCommandBuffer,
+        vkEndCommandBufferUnsafe, vkEndCommandBufferSafe,
+        VkResetCommandBuffer, pattern VkResetCommandBuffer,
+        HS_vkResetCommandBuffer, PFN_vkResetCommandBuffer,
+        vkResetCommandBuffer, vkResetCommandBufferUnsafe,
+        vkResetCommandBufferSafe, -- ** Command buffer building commands
+                                  VkCmdBindPipeline,
+        pattern VkCmdBindPipeline, HS_vkCmdBindPipeline,
+        PFN_vkCmdBindPipeline, vkCmdBindPipeline, vkCmdBindPipelineUnsafe,
+        vkCmdBindPipelineSafe, VkCmdSetViewport, pattern VkCmdSetViewport,
+        HS_vkCmdSetViewport, PFN_vkCmdSetViewport, vkCmdSetViewport,
+        vkCmdSetViewportUnsafe, vkCmdSetViewportSafe, VkCmdSetScissor,
+        pattern VkCmdSetScissor, HS_vkCmdSetScissor, PFN_vkCmdSetScissor,
+        vkCmdSetScissor, vkCmdSetScissorUnsafe, vkCmdSetScissorSafe,
+        VkCmdSetLineWidth, pattern VkCmdSetLineWidth, HS_vkCmdSetLineWidth,
+        PFN_vkCmdSetLineWidth, vkCmdSetLineWidth, vkCmdSetLineWidthUnsafe,
+        vkCmdSetLineWidthSafe, VkCmdSetDepthBias,
+        pattern VkCmdSetDepthBias, HS_vkCmdSetDepthBias,
+        PFN_vkCmdSetDepthBias, vkCmdSetDepthBias, vkCmdSetDepthBiasUnsafe,
+        vkCmdSetDepthBiasSafe, VkCmdSetBlendConstants,
+        pattern VkCmdSetBlendConstants, HS_vkCmdSetBlendConstants,
+        PFN_vkCmdSetBlendConstants, vkCmdSetBlendConstants,
+        vkCmdSetBlendConstantsUnsafe, vkCmdSetBlendConstantsSafe,
+        VkCmdSetDepthBounds, pattern VkCmdSetDepthBounds,
+        HS_vkCmdSetDepthBounds, PFN_vkCmdSetDepthBounds,
+        vkCmdSetDepthBounds, vkCmdSetDepthBoundsUnsafe,
+        vkCmdSetDepthBoundsSafe, VkCmdSetStencilCompareMask,
+        pattern VkCmdSetStencilCompareMask, HS_vkCmdSetStencilCompareMask,
+        PFN_vkCmdSetStencilCompareMask, vkCmdSetStencilCompareMask,
+        vkCmdSetStencilCompareMaskUnsafe, vkCmdSetStencilCompareMaskSafe,
+        VkCmdSetStencilWriteMask, pattern VkCmdSetStencilWriteMask,
+        HS_vkCmdSetStencilWriteMask, PFN_vkCmdSetStencilWriteMask,
+        vkCmdSetStencilWriteMask, vkCmdSetStencilWriteMaskUnsafe,
+        vkCmdSetStencilWriteMaskSafe, VkCmdSetStencilReference,
+        pattern VkCmdSetStencilReference, HS_vkCmdSetStencilReference,
+        PFN_vkCmdSetStencilReference, vkCmdSetStencilReference,
+        vkCmdSetStencilReferenceUnsafe, vkCmdSetStencilReferenceSafe,
+        VkCmdBindDescriptorSets, pattern VkCmdBindDescriptorSets,
+        HS_vkCmdBindDescriptorSets, PFN_vkCmdBindDescriptorSets,
+        vkCmdBindDescriptorSets, vkCmdBindDescriptorSetsUnsafe,
+        vkCmdBindDescriptorSetsSafe, VkCmdBindIndexBuffer,
+        pattern VkCmdBindIndexBuffer, HS_vkCmdBindIndexBuffer,
+        PFN_vkCmdBindIndexBuffer, vkCmdBindIndexBuffer,
+        vkCmdBindIndexBufferUnsafe, vkCmdBindIndexBufferSafe,
+        VkCmdBindVertexBuffers, pattern VkCmdBindVertexBuffers,
+        HS_vkCmdBindVertexBuffers, PFN_vkCmdBindVertexBuffers,
+        vkCmdBindVertexBuffers, vkCmdBindVertexBuffersUnsafe,
+        vkCmdBindVertexBuffersSafe, VkCmdDraw, pattern VkCmdDraw,
+        HS_vkCmdDraw, PFN_vkCmdDraw, vkCmdDraw, vkCmdDrawUnsafe,
+        vkCmdDrawSafe, VkCmdDrawIndexed, pattern VkCmdDrawIndexed,
+        HS_vkCmdDrawIndexed, PFN_vkCmdDrawIndexed, vkCmdDrawIndexed,
+        vkCmdDrawIndexedUnsafe, vkCmdDrawIndexedSafe, VkCmdDrawIndirect,
+        pattern VkCmdDrawIndirect, HS_vkCmdDrawIndirect,
+        PFN_vkCmdDrawIndirect, vkCmdDrawIndirect, vkCmdDrawIndirectUnsafe,
+        vkCmdDrawIndirectSafe, VkCmdDrawIndexedIndirect,
+        pattern VkCmdDrawIndexedIndirect, HS_vkCmdDrawIndexedIndirect,
+        PFN_vkCmdDrawIndexedIndirect, vkCmdDrawIndexedIndirect,
+        vkCmdDrawIndexedIndirectUnsafe, vkCmdDrawIndexedIndirectSafe,
+        VkCmdDispatch, pattern VkCmdDispatch, HS_vkCmdDispatch,
+        PFN_vkCmdDispatch, vkCmdDispatch, vkCmdDispatchUnsafe,
+        vkCmdDispatchSafe, VkCmdDispatchIndirect,
+        pattern VkCmdDispatchIndirect, HS_vkCmdDispatchIndirect,
+        PFN_vkCmdDispatchIndirect, vkCmdDispatchIndirect,
+        vkCmdDispatchIndirectUnsafe, vkCmdDispatchIndirectSafe,
+        VkCmdCopyBuffer, pattern VkCmdCopyBuffer, HS_vkCmdCopyBuffer,
+        PFN_vkCmdCopyBuffer, vkCmdCopyBuffer, vkCmdCopyBufferUnsafe,
+        vkCmdCopyBufferSafe, VkCmdCopyImage, pattern VkCmdCopyImage,
+        HS_vkCmdCopyImage, PFN_vkCmdCopyImage, vkCmdCopyImage,
+        vkCmdCopyImageUnsafe, vkCmdCopyImageSafe, VkCmdBlitImage,
+        pattern VkCmdBlitImage, HS_vkCmdBlitImage, PFN_vkCmdBlitImage,
+        vkCmdBlitImage, vkCmdBlitImageUnsafe, vkCmdBlitImageSafe,
+        VkCmdCopyBufferToImage, pattern VkCmdCopyBufferToImage,
+        HS_vkCmdCopyBufferToImage, PFN_vkCmdCopyBufferToImage,
+        vkCmdCopyBufferToImage, vkCmdCopyBufferToImageUnsafe,
+        vkCmdCopyBufferToImageSafe, VkCmdCopyImageToBuffer,
+        pattern VkCmdCopyImageToBuffer, HS_vkCmdCopyImageToBuffer,
+        PFN_vkCmdCopyImageToBuffer, vkCmdCopyImageToBuffer,
+        vkCmdCopyImageToBufferUnsafe, vkCmdCopyImageToBufferSafe,
+        VkCmdUpdateBuffer, pattern VkCmdUpdateBuffer, HS_vkCmdUpdateBuffer,
+        PFN_vkCmdUpdateBuffer, vkCmdUpdateBuffer, vkCmdUpdateBufferUnsafe,
+        vkCmdUpdateBufferSafe, VkCmdFillBuffer, pattern VkCmdFillBuffer,
+        HS_vkCmdFillBuffer, PFN_vkCmdFillBuffer, vkCmdFillBuffer,
+        vkCmdFillBufferUnsafe, vkCmdFillBufferSafe, VkCmdClearColorImage,
+        pattern VkCmdClearColorImage, HS_vkCmdClearColorImage,
+        PFN_vkCmdClearColorImage, vkCmdClearColorImage,
+        vkCmdClearColorImageUnsafe, vkCmdClearColorImageSafe,
+        VkCmdClearDepthStencilImage, pattern VkCmdClearDepthStencilImage,
+        HS_vkCmdClearDepthStencilImage, PFN_vkCmdClearDepthStencilImage,
+        vkCmdClearDepthStencilImage, vkCmdClearDepthStencilImageUnsafe,
+        vkCmdClearDepthStencilImageSafe, VkCmdClearAttachments,
+        pattern VkCmdClearAttachments, HS_vkCmdClearAttachments,
+        PFN_vkCmdClearAttachments, vkCmdClearAttachments,
+        vkCmdClearAttachmentsUnsafe, vkCmdClearAttachmentsSafe,
+        VkCmdResolveImage, pattern VkCmdResolveImage, HS_vkCmdResolveImage,
+        PFN_vkCmdResolveImage, vkCmdResolveImage, vkCmdResolveImageUnsafe,
+        vkCmdResolveImageSafe, VkCmdSetEvent, pattern VkCmdSetEvent,
+        HS_vkCmdSetEvent, PFN_vkCmdSetEvent, vkCmdSetEvent,
+        vkCmdSetEventUnsafe, vkCmdSetEventSafe, VkCmdResetEvent,
+        pattern VkCmdResetEvent, HS_vkCmdResetEvent, PFN_vkCmdResetEvent,
+        vkCmdResetEvent, vkCmdResetEventUnsafe, vkCmdResetEventSafe,
+        VkCmdWaitEvents, pattern VkCmdWaitEvents, HS_vkCmdWaitEvents,
+        PFN_vkCmdWaitEvents, vkCmdWaitEvents, vkCmdWaitEventsUnsafe,
+        vkCmdWaitEventsSafe, VkCmdPipelineBarrier,
+        pattern VkCmdPipelineBarrier, HS_vkCmdPipelineBarrier,
+        PFN_vkCmdPipelineBarrier, vkCmdPipelineBarrier,
+        vkCmdPipelineBarrierUnsafe, vkCmdPipelineBarrierSafe,
+        VkCmdBeginQuery, pattern VkCmdBeginQuery, HS_vkCmdBeginQuery,
+        PFN_vkCmdBeginQuery, vkCmdBeginQuery, vkCmdBeginQueryUnsafe,
+        vkCmdBeginQuerySafe, VkCmdEndQuery, pattern VkCmdEndQuery,
+        HS_vkCmdEndQuery, PFN_vkCmdEndQuery, vkCmdEndQuery,
+        vkCmdEndQueryUnsafe, vkCmdEndQuerySafe, VkCmdResetQueryPool,
+        pattern VkCmdResetQueryPool, HS_vkCmdResetQueryPool,
+        PFN_vkCmdResetQueryPool, vkCmdResetQueryPool,
+        vkCmdResetQueryPoolUnsafe, vkCmdResetQueryPoolSafe,
+        VkCmdWriteTimestamp, pattern VkCmdWriteTimestamp,
+        HS_vkCmdWriteTimestamp, PFN_vkCmdWriteTimestamp,
+        vkCmdWriteTimestamp, vkCmdWriteTimestampUnsafe,
+        vkCmdWriteTimestampSafe, VkCmdCopyQueryPoolResults,
+        pattern VkCmdCopyQueryPoolResults, HS_vkCmdCopyQueryPoolResults,
+        PFN_vkCmdCopyQueryPoolResults, vkCmdCopyQueryPoolResults,
+        vkCmdCopyQueryPoolResultsUnsafe, vkCmdCopyQueryPoolResultsSafe,
+        VkCmdPushConstants, pattern VkCmdPushConstants,
+        HS_vkCmdPushConstants, PFN_vkCmdPushConstants, vkCmdPushConstants,
+        vkCmdPushConstantsUnsafe, vkCmdPushConstantsSafe,
+        VkCmdBeginRenderPass, pattern VkCmdBeginRenderPass,
+        HS_vkCmdBeginRenderPass, PFN_vkCmdBeginRenderPass,
+        vkCmdBeginRenderPass, vkCmdBeginRenderPassUnsafe,
+        vkCmdBeginRenderPassSafe, VkCmdNextSubpass,
+        pattern VkCmdNextSubpass, HS_vkCmdNextSubpass,
+        PFN_vkCmdNextSubpass, vkCmdNextSubpass, vkCmdNextSubpassUnsafe,
+        vkCmdNextSubpassSafe, VkCmdEndRenderPass,
+        pattern VkCmdEndRenderPass, HS_vkCmdEndRenderPass,
+        PFN_vkCmdEndRenderPass, vkCmdEndRenderPass,
+        vkCmdEndRenderPassUnsafe, vkCmdEndRenderPassSafe,
+        VkCmdExecuteCommands, pattern VkCmdExecuteCommands,
+        HS_vkCmdExecuteCommands, PFN_vkCmdExecuteCommands,
+        vkCmdExecuteCommands, vkCmdExecuteCommandsUnsafe,
+        vkCmdExecuteCommandsSafe, VkIndexType(..), VkClearAttachment,
+        VkClearColorValue, VkClearDepthStencilValue, VkClearRect,
+        VkClearValue, -- ** Types not directly used by the API. Include e.g. structs that are not parameter types of commands, but still defined by the API.
+                      VkBaseInStructure, VkBaseOutStructure,
+        VkDispatchIndirectCommand, VkDrawIndexedIndirectCommand,
+        VkDrawIndirectCommand, VkObjectEntryTypeNVX(..),
+        VkObjectEntryUsageBitmaskNVX(..), VkObjectType(..),
+        VkObjectEntryUsageFlagBitsNVX(), VkObjectEntryUsageFlagsNVX())
+       where
+import GHC.Ptr                                                (Ptr (..))
+import Graphics.Vulkan.Constants                              (pattern VK_ATTACHMENT_UNUSED,
+                                                               pattern VK_FALSE,
+                                                               pattern VK_LOD_CLAMP_NONE,
+                                                               pattern VK_QUEUE_FAMILY_IGNORED,
+                                                               pattern VK_REMAINING_ARRAY_LAYERS,
+                                                               pattern VK_REMAINING_MIP_LEVELS,
+                                                               pattern VK_SUBPASS_EXTERNAL,
+                                                               pattern VK_TRUE,
+                                                               pattern VK_WHOLE_SIZE)
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Proc
+import Graphics.Vulkan.Types.BaseTypes
+import Graphics.Vulkan.Types.Bitmasks
+import Graphics.Vulkan.Types.Enum.AccessFlags
+import Graphics.Vulkan.Types.Enum.Attachment
+import Graphics.Vulkan.Types.Enum.Blend
+import Graphics.Vulkan.Types.Enum.BorderColor
+import Graphics.Vulkan.Types.Enum.Buffer
+import Graphics.Vulkan.Types.Enum.Color
+import Graphics.Vulkan.Types.Enum.Command
+import Graphics.Vulkan.Types.Enum.CompareOp
+import Graphics.Vulkan.Types.Enum.ComponentSwizzle
+import Graphics.Vulkan.Types.Enum.CullModeFlags
+import Graphics.Vulkan.Types.Enum.DependencyFlags
+import Graphics.Vulkan.Types.Enum.Descriptor
+import Graphics.Vulkan.Types.Enum.Device
+import Graphics.Vulkan.Types.Enum.DynamicState
+import Graphics.Vulkan.Types.Enum.Fence
+import Graphics.Vulkan.Types.Enum.Filter
+import Graphics.Vulkan.Types.Enum.Format
+import Graphics.Vulkan.Types.Enum.FrontFace
+import Graphics.Vulkan.Types.Enum.Image
+import Graphics.Vulkan.Types.Enum.IndexType
+import Graphics.Vulkan.Types.Enum.InternalAllocationType
+import Graphics.Vulkan.Types.Enum.LogicOp
+import Graphics.Vulkan.Types.Enum.Memory
+import Graphics.Vulkan.Types.Enum.Object
+import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
+import Graphics.Vulkan.Types.Enum.Pipeline
+import Graphics.Vulkan.Types.Enum.PolygonMode
+import Graphics.Vulkan.Types.Enum.PrimitiveTopology
+import Graphics.Vulkan.Types.Enum.Query
+import Graphics.Vulkan.Types.Enum.Queue
+import Graphics.Vulkan.Types.Enum.Result
+import Graphics.Vulkan.Types.Enum.SampleCountFlags
+import Graphics.Vulkan.Types.Enum.Sampler
+import Graphics.Vulkan.Types.Enum.Shader
+import Graphics.Vulkan.Types.Enum.SharingMode
+import Graphics.Vulkan.Types.Enum.Sparse
+import Graphics.Vulkan.Types.Enum.Stencil
+import Graphics.Vulkan.Types.Enum.StructureType
+import Graphics.Vulkan.Types.Enum.Subpass
+import Graphics.Vulkan.Types.Enum.SystemAllocationScope
+import Graphics.Vulkan.Types.Enum.VertexInputRate
+import Graphics.Vulkan.Types.Funcpointers
+import Graphics.Vulkan.Types.Handles
+import Graphics.Vulkan.Types.Struct.AllocationCallbacks
+import Graphics.Vulkan.Types.Struct.ApplicationInfo
+import Graphics.Vulkan.Types.Struct.Attachment
+import Graphics.Vulkan.Types.Struct.Base                      (VkBaseInStructure,
+                                                               VkBaseOutStructure)
+import Graphics.Vulkan.Types.Struct.Bind
+import Graphics.Vulkan.Types.Struct.Buffer
+import Graphics.Vulkan.Types.Struct.Clear
+import Graphics.Vulkan.Types.Struct.Command
+import Graphics.Vulkan.Types.Struct.ComponentMapping
+import Graphics.Vulkan.Types.Struct.ComputePipelineCreateInfo
+import Graphics.Vulkan.Types.Struct.CopyDescriptorSet
+import Graphics.Vulkan.Types.Struct.Descriptor
+import Graphics.Vulkan.Types.Struct.Device
+import Graphics.Vulkan.Types.Struct.DispatchIndirectCommand   (VkDispatchIndirectCommand)
+import Graphics.Vulkan.Types.Struct.DrawInd                   (VkDrawIndexedIndirectCommand,
+                                                               VkDrawIndirectCommand)
+import Graphics.Vulkan.Types.Struct.EventCreateInfo
+import Graphics.Vulkan.Types.Struct.ExtensionProperties
+import Graphics.Vulkan.Types.Struct.Extent
+import Graphics.Vulkan.Types.Struct.Fence
+import Graphics.Vulkan.Types.Struct.FormatProperties
+import Graphics.Vulkan.Types.Struct.FramebufferCreateInfo
+import Graphics.Vulkan.Types.Struct.Image
+import Graphics.Vulkan.Types.Struct.InstanceCreateInfo
+import Graphics.Vulkan.Types.Struct.LayerProperties
+import Graphics.Vulkan.Types.Struct.MappedMemoryRange
+import Graphics.Vulkan.Types.Struct.Memory
+import Graphics.Vulkan.Types.Struct.Offset
+import Graphics.Vulkan.Types.Struct.PhysicalDevice
+import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
+import Graphics.Vulkan.Types.Struct.Pipeline
+import Graphics.Vulkan.Types.Struct.PushConstantRange
+import Graphics.Vulkan.Types.Struct.QueryPoolCreateInfo
+import Graphics.Vulkan.Types.Struct.QueueFamilyProperties
+import Graphics.Vulkan.Types.Struct.Rect
+import Graphics.Vulkan.Types.Struct.RenderPass
+import Graphics.Vulkan.Types.Struct.Sampler
+import Graphics.Vulkan.Types.Struct.Semaphore
+import Graphics.Vulkan.Types.Struct.Shader
+import Graphics.Vulkan.Types.Struct.Sparse
+import Graphics.Vulkan.Types.Struct.Specialization
+import Graphics.Vulkan.Types.Struct.StencilOpState
+import Graphics.Vulkan.Types.Struct.SubmitInfo
+import Graphics.Vulkan.Types.Struct.Subpass
+import Graphics.Vulkan.Types.Struct.SubresourceLayout
+import Graphics.Vulkan.Types.Struct.VertexInput
+import Graphics.Vulkan.Types.Struct.Viewport
+import Graphics.Vulkan.Types.Struct.WriteDescriptorSet
+import System.IO.Unsafe                                       (unsafeDupablePerformIO)
+
+pattern VkCreateInstance :: CString
+
+pattern VkCreateInstance <- (is_VkCreateInstance -> True)
+  where
+    VkCreateInstance = _VkCreateInstance
+
+{-# INLINE _VkCreateInstance #-}
+
+_VkCreateInstance :: CString
+_VkCreateInstance = Ptr "vkCreateInstance\NUL"##
+
+{-# INLINE is_VkCreateInstance #-}
+
+is_VkCreateInstance :: CString -> Bool
+is_VkCreateInstance = (EQ ==) . cmpCStrings _VkCreateInstance
+
+type VkCreateInstance = "vkCreateInstance"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+-- > VkResult vkCreateInstance
+-- >     ( const VkInstanceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkInstance* pInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
+--
+-- or less efficient:
+--
+-- > myCreateInstance <- vkGetProc @VkCreateInstance
+--
+-- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
+--           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateInstance"
+               vkCreateInstanceUnsafe ::
+               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                        ->
+                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> Ptr VkInstance -- ^ pInstance
+                                                             -> IO VkResult
+
+##else
+vkCreateInstanceUnsafe ::
+                       Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                                ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkInstance -- ^ pInstance
+                                                                     -> IO VkResult
+vkCreateInstanceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateInstance)
+
+{-# NOINLINE vkCreateInstanceUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+-- > VkResult vkCreateInstance
+-- >     ( const VkInstanceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkInstance* pInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
+--
+-- or less efficient:
+--
+-- > myCreateInstance <- vkGetProc @VkCreateInstance
+--
+-- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
+--           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateInstance" vkCreateInstanceSafe
+               ::
+               Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                        ->
+                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> Ptr VkInstance -- ^ pInstance
+                                                             -> IO VkResult
+
+##else
+vkCreateInstanceSafe ::
+                     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                              ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkInstance -- ^ pInstance
+                                                                   -> IO VkResult
+vkCreateInstanceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateInstance)
+
+{-# NOINLINE vkCreateInstanceSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+-- > VkResult vkCreateInstance
+-- >     ( const VkInstanceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkInstance* pInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateInstance <- vkGetInstanceProc @VkCreateInstance VK_NULL
+--
+-- or less efficient:
+--
+-- > myCreateInstance <- vkGetProc @VkCreateInstance
+--
+-- __Note:__ @vkCreateInstanceUnsafe@ and @vkCreateInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateInstance@ is an alias
+--           of @vkCreateInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateInstanceSafe@.
+--
+vkCreateInstance ::
+                 Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkInstance -- ^ pInstance
+                                                               -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateInstance = vkCreateInstanceUnsafe
+##else
+vkCreateInstance = vkCreateInstanceSafe
+
+##endif
+{-# INLINE vkCreateInstance #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER'.
+--
+--   > VkResult vkCreateInstance
+--   >     ( const VkInstanceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkInstance* pInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateInstance vkCreateInstance registry at www.khronos.org>
+type HS_vkCreateInstance =
+     Ptr VkInstanceCreateInfo -- ^ pCreateInfo
+                              ->
+       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                 -> Ptr VkInstance -- ^ pInstance
+                                                   -> IO VkResult
+
+type PFN_vkCreateInstance = FunPtr HS_vkCreateInstance
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateInstanceUnsafe
+               :: PFN_vkCreateInstance -> HS_vkCreateInstance
+
+foreign import ccall safe "dynamic" unwrapVkCreateInstanceSafe ::
+               PFN_vkCreateInstance -> HS_vkCreateInstance
+
+instance VulkanProc "vkCreateInstance" where
+    type VkProcType "vkCreateInstance" = HS_vkCreateInstance
+    vkProcSymbol = _VkCreateInstance
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateInstanceUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateInstanceSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyInstance :: CString
+
+pattern VkDestroyInstance <- (is_VkDestroyInstance -> True)
+  where
+    VkDestroyInstance = _VkDestroyInstance
+
+{-# INLINE _VkDestroyInstance #-}
+
+_VkDestroyInstance :: CString
+_VkDestroyInstance = Ptr "vkDestroyInstance\NUL"##
+
+{-# INLINE is_VkDestroyInstance #-}
+
+is_VkDestroyInstance :: CString -> Bool
+is_VkDestroyInstance = (EQ ==) . cmpCStrings _VkDestroyInstance
+
+type VkDestroyInstance = "vkDestroyInstance"
+
+-- |
+-- > void vkDestroyInstance
+-- >     ( VkInstance instance
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroyInstance <- vkGetProc @VkDestroyInstance
+--
+-- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
+--           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyInstance"
+               vkDestroyInstanceUnsafe ::
+               VkInstance -- ^ instance
+                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> IO ()
+
+##else
+vkDestroyInstanceUnsafe ::
+                        VkInstance -- ^ instance
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+vkDestroyInstanceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyInstance)
+
+{-# NOINLINE vkDestroyInstanceUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyInstance
+-- >     ( VkInstance instance
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroyInstance <- vkGetProc @VkDestroyInstance
+--
+-- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
+--           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyInstance" vkDestroyInstanceSafe
+               :: VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+##else
+vkDestroyInstanceSafe ::
+                      VkInstance -- ^ instance
+                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              -> IO ()
+vkDestroyInstanceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyInstance)
+
+{-# NOINLINE vkDestroyInstanceSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyInstance
+-- >     ( VkInstance instance
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyInstance <- vkGetInstanceProc @VkDestroyInstance vkInstance
+--
+-- or less efficient:
+--
+-- > myDestroyInstance <- vkGetProc @VkDestroyInstance
+--
+-- __Note:__ @vkDestroyInstanceUnsafe@ and @vkDestroyInstanceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyInstance@ is an alias
+--           of @vkDestroyInstanceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyInstanceSafe@.
+--
+vkDestroyInstance ::
+                  VkInstance -- ^ instance
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyInstance = vkDestroyInstanceUnsafe
+##else
+vkDestroyInstance = vkDestroyInstanceSafe
+
+##endif
+{-# INLINE vkDestroyInstance #-}
+
+-- | > void vkDestroyInstance
+--   >     ( VkInstance instance
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyInstance vkDestroyInstance registry at www.khronos.org>
+type HS_vkDestroyInstance =
+     VkInstance -- ^ instance
+                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> IO ()
+
+type PFN_vkDestroyInstance = FunPtr HS_vkDestroyInstance
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyInstanceUnsafe
+               :: PFN_vkDestroyInstance -> HS_vkDestroyInstance
+
+foreign import ccall safe "dynamic" unwrapVkDestroyInstanceSafe ::
+               PFN_vkDestroyInstance -> HS_vkDestroyInstance
+
+instance VulkanProc "vkDestroyInstance" where
+    type VkProcType "vkDestroyInstance" = HS_vkDestroyInstance
+    vkProcSymbol = _VkDestroyInstance
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyInstanceUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyInstanceSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumeratePhysicalDevices :: CString
+
+pattern VkEnumeratePhysicalDevices <-
+        (is_VkEnumeratePhysicalDevices -> True)
+  where
+    VkEnumeratePhysicalDevices = _VkEnumeratePhysicalDevices
+
+{-# INLINE _VkEnumeratePhysicalDevices #-}
+
+_VkEnumeratePhysicalDevices :: CString
+_VkEnumeratePhysicalDevices = Ptr "vkEnumeratePhysicalDevices\NUL"##
+
+{-# INLINE is_VkEnumeratePhysicalDevices #-}
+
+is_VkEnumeratePhysicalDevices :: CString -> Bool
+is_VkEnumeratePhysicalDevices
+  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDevices
+
+type VkEnumeratePhysicalDevices = "vkEnumeratePhysicalDevices"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDevices
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceCount
+-- >     , VkPhysicalDevice* pPhysicalDevices
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
+--
+-- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
+--           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumeratePhysicalDevices"
+               vkEnumeratePhysicalDevicesUnsafe ::
+               VkInstance -- ^ instance
+                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                -> IO VkResult
+
+##else
+vkEnumeratePhysicalDevicesUnsafe ::
+                                 VkInstance -- ^ instance
+                                            -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                                          -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                                  -> IO VkResult
+vkEnumeratePhysicalDevicesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumeratePhysicalDevices)
+
+{-# NOINLINE vkEnumeratePhysicalDevicesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDevices
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceCount
+-- >     , VkPhysicalDevice* pPhysicalDevices
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
+--
+-- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
+--           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumeratePhysicalDevices"
+               vkEnumeratePhysicalDevicesSafe ::
+               VkInstance -- ^ instance
+                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                -> IO VkResult
+
+##else
+vkEnumeratePhysicalDevicesSafe ::
+                               VkInstance -- ^ instance
+                                          -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                                        -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                                -> IO VkResult
+vkEnumeratePhysicalDevicesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumeratePhysicalDevices)
+
+{-# NOINLINE vkEnumeratePhysicalDevicesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDevices
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceCount
+-- >     , VkPhysicalDevice* pPhysicalDevices
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDevices <- vkGetInstanceProc @VkEnumeratePhysicalDevices vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDevices <- vkGetProc @VkEnumeratePhysicalDevices
+--
+-- __Note:__ @vkEnumeratePhysicalDevicesUnsafe@ and @vkEnumeratePhysicalDevicesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDevices@ is an alias
+--           of @vkEnumeratePhysicalDevicesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDevicesSafe@.
+--
+vkEnumeratePhysicalDevices ::
+                           VkInstance -- ^ instance
+                                      -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                                                    -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                                            -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumeratePhysicalDevices = vkEnumeratePhysicalDevicesUnsafe
+##else
+vkEnumeratePhysicalDevices = vkEnumeratePhysicalDevicesSafe
+
+##endif
+{-# INLINE vkEnumeratePhysicalDevices #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+--   > VkResult vkEnumeratePhysicalDevices
+--   >     ( VkInstance instance
+--   >     , uint32_t* pPhysicalDeviceCount
+--   >     , VkPhysicalDevice* pPhysicalDevices
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices registry at www.khronos.org>
+type HS_vkEnumeratePhysicalDevices =
+     VkInstance -- ^ instance
+                -> Ptr Word32 -- ^ pPhysicalDeviceCount
+                              -> Ptr VkPhysicalDevice -- ^ pPhysicalDevices
+                                                      -> IO VkResult
+
+type PFN_vkEnumeratePhysicalDevices =
+     FunPtr HS_vkEnumeratePhysicalDevices
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumeratePhysicalDevicesUnsafe ::
+               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumeratePhysicalDevicesSafe ::
+               PFN_vkEnumeratePhysicalDevices -> HS_vkEnumeratePhysicalDevices
+
+instance VulkanProc "vkEnumeratePhysicalDevices" where
+    type VkProcType "vkEnumeratePhysicalDevices" =
+         HS_vkEnumeratePhysicalDevices
+    vkProcSymbol = _VkEnumeratePhysicalDevices
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkEnumeratePhysicalDevicesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDevicesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFeatures :: CString
+
+pattern VkGetPhysicalDeviceFeatures <-
+        (is_VkGetPhysicalDeviceFeatures -> True)
+  where
+    VkGetPhysicalDeviceFeatures = _VkGetPhysicalDeviceFeatures
+
+{-# INLINE _VkGetPhysicalDeviceFeatures #-}
+
+_VkGetPhysicalDeviceFeatures :: CString
+_VkGetPhysicalDeviceFeatures
+  = Ptr "vkGetPhysicalDeviceFeatures\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceFeatures #-}
+
+is_VkGetPhysicalDeviceFeatures :: CString -> Bool
+is_VkGetPhysicalDeviceFeatures
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures
+
+type VkGetPhysicalDeviceFeatures = "vkGetPhysicalDeviceFeatures"
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
+--
+-- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
+--           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures"
+               vkGetPhysicalDeviceFeaturesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                -> IO ()
+
+##else
+vkGetPhysicalDeviceFeaturesUnsafe ::
+                                  VkPhysicalDevice -- ^ physicalDevice
+                                                   -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                                   -> IO ()
+vkGetPhysicalDeviceFeaturesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceFeatures)
+
+{-# NOINLINE vkGetPhysicalDeviceFeaturesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
+--
+-- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
+--           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceFeatures"
+               vkGetPhysicalDeviceFeaturesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                -> IO ()
+
+##else
+vkGetPhysicalDeviceFeaturesSafe ::
+                                VkPhysicalDevice -- ^ physicalDevice
+                                                 -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                                 -> IO ()
+vkGetPhysicalDeviceFeaturesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFeatures)
+
+{-# NOINLINE vkGetPhysicalDeviceFeaturesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures <- vkGetProc @VkGetPhysicalDeviceFeatures
+--
+-- __Note:__ @vkGetPhysicalDeviceFeaturesUnsafe@ and @vkGetPhysicalDeviceFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures@ is an alias
+--           of @vkGetPhysicalDeviceFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeaturesSafe@.
+--
+vkGetPhysicalDeviceFeatures ::
+                            VkPhysicalDevice -- ^ physicalDevice
+                                             -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                                             -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceFeatures = vkGetPhysicalDeviceFeaturesUnsafe
+##else
+vkGetPhysicalDeviceFeatures = vkGetPhysicalDeviceFeaturesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceFeatures #-}
+
+-- | > void vkGetPhysicalDeviceFeatures
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFeatures =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceFeatures -- ^ pFeatures
+                                                      -> IO ()
+
+type PFN_vkGetPhysicalDeviceFeatures =
+     FunPtr HS_vkGetPhysicalDeviceFeatures
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFeaturesUnsafe ::
+               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFeaturesSafe ::
+               PFN_vkGetPhysicalDeviceFeatures -> HS_vkGetPhysicalDeviceFeatures
+
+instance VulkanProc "vkGetPhysicalDeviceFeatures" where
+    type VkProcType "vkGetPhysicalDeviceFeatures" =
+         HS_vkGetPhysicalDeviceFeatures
+    vkProcSymbol = _VkGetPhysicalDeviceFeatures
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeaturesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeaturesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceFormatProperties <-
+        (is_VkGetPhysicalDeviceFormatProperties -> True)
+  where
+    VkGetPhysicalDeviceFormatProperties
+      = _VkGetPhysicalDeviceFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceFormatProperties #-}
+
+_VkGetPhysicalDeviceFormatProperties :: CString
+_VkGetPhysicalDeviceFormatProperties
+  = Ptr "vkGetPhysicalDeviceFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceFormatProperties #-}
+
+is_VkGetPhysicalDeviceFormatProperties :: CString -> Bool
+is_VkGetPhysicalDeviceFormatProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties
+
+type VkGetPhysicalDeviceFormatProperties =
+     "vkGetPhysicalDeviceFormatProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties"
+               vkGetPhysicalDeviceFormatPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                      -> IO ()
+
+##else
+vkGetPhysicalDeviceFormatPropertiesUnsafe ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            VkFormat -- ^ format
+                                                     -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceFormatPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatPropertiesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties"
+               vkGetPhysicalDeviceFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                      -> IO ()
+
+##else
+vkGetPhysicalDeviceFormatPropertiesSafe ::
+                                        VkPhysicalDevice -- ^ physicalDevice
+                                                         ->
+                                          VkFormat -- ^ format
+                                                   -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                             -> IO ()
+vkGetPhysicalDeviceFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatPropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties <- vkGetProc @VkGetPhysicalDeviceFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatPropertiesSafe@.
+--
+vkGetPhysicalDeviceFormatProperties ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     -> VkFormat -- ^ format
+                                                                 -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceFormatProperties
+  = vkGetPhysicalDeviceFormatPropertiesUnsafe
+##else
+vkGetPhysicalDeviceFormatProperties
+  = vkGetPhysicalDeviceFormatPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceFormatProperties #-}
+
+-- | > void vkGetPhysicalDeviceFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> VkFormat -- ^ format
+                                  -> Ptr VkFormatProperties -- ^ pFormatProperties
+                                                            -> IO ()
+
+type PFN_vkGetPhysicalDeviceFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceFormatProperties ->
+                 HS_vkGetPhysicalDeviceFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceFormatProperties ->
+                 HS_vkGetPhysicalDeviceFormatProperties
+
+instance VulkanProc "vkGetPhysicalDeviceFormatProperties" where
+    type VkProcType "vkGetPhysicalDeviceFormatProperties" =
+         HS_vkGetPhysicalDeviceFormatProperties
+    vkProcSymbol = _VkGetPhysicalDeviceFormatProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceFormatPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFormatPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceImageFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceImageFormatProperties <-
+        (is_VkGetPhysicalDeviceImageFormatProperties -> True)
+  where
+    VkGetPhysicalDeviceImageFormatProperties
+      = _VkGetPhysicalDeviceImageFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceImageFormatProperties #-}
+
+_VkGetPhysicalDeviceImageFormatProperties :: CString
+_VkGetPhysicalDeviceImageFormatProperties
+  = Ptr "vkGetPhysicalDeviceImageFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties #-}
+
+is_VkGetPhysicalDeviceImageFormatProperties :: CString -> Bool
+is_VkGetPhysicalDeviceImageFormatProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties
+
+type VkGetPhysicalDeviceImageFormatProperties =
+     "vkGetPhysicalDeviceImageFormatProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkImageTiling tiling
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageCreateFlags flags
+-- >     , VkImageFormatProperties* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceImageFormatProperties"
+               vkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+
+##else
+vkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 VkFormat -- ^ format
+                                                          ->
+                                                   VkImageType -- ^ type
+                                                               ->
+                                                     VkImageTiling -- ^ tiling
+                                                                   ->
+                                                       VkImageUsageFlags -- ^ usage
+                                                                         ->
+                                                         VkImageCreateFlags -- ^ flags
+                                                                            ->
+                                                           Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                                       ->
+                                                             IO VkResult
+vkGetPhysicalDeviceImageFormatPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkImageTiling tiling
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageCreateFlags flags
+-- >     , VkImageFormatProperties* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties"
+               vkGetPhysicalDeviceImageFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkImageTiling -- ^ tiling
+                                   ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageCreateFlags -- ^ flags
+                                            -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+
+##else
+vkGetPhysicalDeviceImageFormatPropertiesSafe ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               VkFormat -- ^ format
+                                                        ->
+                                                 VkImageType -- ^ type
+                                                             ->
+                                                   VkImageTiling -- ^ tiling
+                                                                 ->
+                                                     VkImageUsageFlags -- ^ usage
+                                                                       ->
+                                                       VkImageCreateFlags -- ^ flags
+                                                                          ->
+                                                         Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                                     -> IO VkResult
+vkGetPhysicalDeviceImageFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkImageTiling tiling
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageCreateFlags flags
+-- >     , VkImageFormatProperties* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatPropertiesSafe@.
+--
+vkGetPhysicalDeviceImageFormatProperties ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           VkFormat -- ^ format
+                                                    ->
+                                             VkImageType -- ^ type
+                                                         ->
+                                               VkImageTiling -- ^ tiling
+                                                             ->
+                                                 VkImageUsageFlags -- ^ usage
+                                                                   ->
+                                                   VkImageCreateFlags -- ^ flags
+                                                                      ->
+                                                     Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceImageFormatProperties
+  = vkGetPhysicalDeviceImageFormatPropertiesUnsafe
+##else
+vkGetPhysicalDeviceImageFormatProperties
+  = vkGetPhysicalDeviceImageFormatPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceImageFormatProperties #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+--   > VkResult vkGetPhysicalDeviceImageFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkImageType type
+--   >     , VkImageTiling tiling
+--   >     , VkImageUsageFlags usage
+--   >     , VkImageCreateFlags flags
+--   >     , VkImageFormatProperties* pImageFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceImageFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       VkFormat -- ^ format
+                ->
+         VkImageType -- ^ type
+                     ->
+           VkImageTiling -- ^ tiling
+                         ->
+             VkImageUsageFlags -- ^ usage
+                               ->
+               VkImageCreateFlags -- ^ flags
+                                  -> Ptr VkImageFormatProperties -- ^ pImageFormatProperties
+                                                                 -> IO VkResult
+
+type PFN_vkGetPhysicalDeviceImageFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties
+
+instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties"
+         where
+    type VkProcType "vkGetPhysicalDeviceImageFormatProperties" =
+         HS_vkGetPhysicalDeviceImageFormatProperties
+    vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceImageFormatPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceImageFormatPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceProperties :: CString
+
+pattern VkGetPhysicalDeviceProperties <-
+        (is_VkGetPhysicalDeviceProperties -> True)
+  where
+    VkGetPhysicalDeviceProperties = _VkGetPhysicalDeviceProperties
+
+{-# INLINE _VkGetPhysicalDeviceProperties #-}
+
+_VkGetPhysicalDeviceProperties :: CString
+_VkGetPhysicalDeviceProperties
+  = Ptr "vkGetPhysicalDeviceProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceProperties #-}
+
+is_VkGetPhysicalDeviceProperties :: CString -> Bool
+is_VkGetPhysicalDeviceProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties
+
+type VkGetPhysicalDeviceProperties =
+     "vkGetPhysicalDeviceProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
+--
+-- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
+--           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties"
+               vkGetPhysicalDevicePropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                  -> IO ()
+
+##else
+vkGetPhysicalDevicePropertiesUnsafe ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                                       -> IO ()
+vkGetPhysicalDevicePropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceProperties)
+
+{-# NOINLINE vkGetPhysicalDevicePropertiesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
+--
+-- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
+--           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceProperties"
+               vkGetPhysicalDevicePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                  -> IO ()
+
+##else
+vkGetPhysicalDevicePropertiesSafe ::
+                                  VkPhysicalDevice -- ^ physicalDevice
+                                                   -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                                     -> IO ()
+vkGetPhysicalDevicePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceProperties)
+
+{-# NOINLINE vkGetPhysicalDevicePropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties <- vkGetProc @VkGetPhysicalDeviceProperties
+--
+-- __Note:__ @vkGetPhysicalDevicePropertiesUnsafe@ and @vkGetPhysicalDevicePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties@ is an alias
+--           of @vkGetPhysicalDevicePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDevicePropertiesSafe@.
+--
+vkGetPhysicalDeviceProperties ::
+                              VkPhysicalDevice -- ^ physicalDevice
+                                               -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceProperties = vkGetPhysicalDevicePropertiesUnsafe
+##else
+vkGetPhysicalDeviceProperties = vkGetPhysicalDevicePropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceProperties #-}
+
+-- | > void vkGetPhysicalDeviceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceProperties -- ^ pProperties
+                                                        -> IO ()
+
+type PFN_vkGetPhysicalDeviceProperties =
+     FunPtr HS_vkGetPhysicalDeviceProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDevicePropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceProperties ->
+                 HS_vkGetPhysicalDeviceProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDevicePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceProperties ->
+                 HS_vkGetPhysicalDeviceProperties
+
+instance VulkanProc "vkGetPhysicalDeviceProperties" where
+    type VkProcType "vkGetPhysicalDeviceProperties" =
+         HS_vkGetPhysicalDeviceProperties
+    vkProcSymbol = _VkGetPhysicalDeviceProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDevicePropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPhysicalDevicePropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties :: CString
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties <-
+        (is_VkGetPhysicalDeviceQueueFamilyProperties -> True)
+  where
+    VkGetPhysicalDeviceQueueFamilyProperties
+      = _VkGetPhysicalDeviceQueueFamilyProperties
+
+{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties #-}
+
+_VkGetPhysicalDeviceQueueFamilyProperties :: CString
+_VkGetPhysicalDeviceQueueFamilyProperties
+  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties #-}
+
+is_VkGetPhysicalDeviceQueueFamilyProperties :: CString -> Bool
+is_VkGetPhysicalDeviceQueueFamilyProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties
+
+type VkGetPhysicalDeviceQueueFamilyProperties =
+     "vkGetPhysicalDeviceQueueFamilyProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceQueueFamilyProperties"
+               vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                                                           -> IO ()
+vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceQueueFamilyProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties"
+               vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+                                             VkPhysicalDevice -- ^ physicalDevice
+                                                              ->
+                                               Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                          -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceQueueFamilyPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyPropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ and @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyPropertiesSafe@.
+--
+vkGetPhysicalDeviceQueueFamilyProperties ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                      -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceQueueFamilyProperties
+  = vkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
+##else
+vkGetPhysicalDeviceQueueFamilyProperties
+  = vkGetPhysicalDeviceQueueFamilyPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceQueueFamilyProperties #-}
+
+-- | > void vkGetPhysicalDeviceQueueFamilyProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceQueueFamilyProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                  -> Ptr VkQueueFamilyProperties -- ^ pQueueFamilyProperties
+                                                 -> IO ()
+
+type PFN_vkGetPhysicalDeviceQueueFamilyProperties =
+     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties
+
+instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties"
+         where
+    type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties" =
+         HS_vkGetPhysicalDeviceQueueFamilyProperties
+    vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceQueueFamilyPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceQueueFamilyPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceMemoryProperties :: CString
+
+pattern VkGetPhysicalDeviceMemoryProperties <-
+        (is_VkGetPhysicalDeviceMemoryProperties -> True)
+  where
+    VkGetPhysicalDeviceMemoryProperties
+      = _VkGetPhysicalDeviceMemoryProperties
+
+{-# INLINE _VkGetPhysicalDeviceMemoryProperties #-}
+
+_VkGetPhysicalDeviceMemoryProperties :: CString
+_VkGetPhysicalDeviceMemoryProperties
+  = Ptr "vkGetPhysicalDeviceMemoryProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceMemoryProperties #-}
+
+is_VkGetPhysicalDeviceMemoryProperties :: CString -> Bool
+is_VkGetPhysicalDeviceMemoryProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties
+
+type VkGetPhysicalDeviceMemoryProperties =
+     "vkGetPhysicalDeviceMemoryProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
+--           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties"
+               vkGetPhysicalDeviceMemoryPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                        -> IO ()
+
+##else
+vkGetPhysicalDeviceMemoryPropertiesUnsafe ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceMemoryPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceMemoryProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryPropertiesUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
+--           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties"
+               vkGetPhysicalDeviceMemoryPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                        -> IO ()
+
+##else
+vkGetPhysicalDeviceMemoryPropertiesSafe ::
+                                        VkPhysicalDevice -- ^ physicalDevice
+                                                         ->
+                                          Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceMemoryPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryPropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties <- vkGetProc @VkGetPhysicalDeviceMemoryProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ and @vkGetPhysicalDeviceMemoryPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties@ is an alias
+--           of @vkGetPhysicalDeviceMemoryPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryPropertiesSafe@.
+--
+vkGetPhysicalDeviceMemoryProperties ::
+                                    VkPhysicalDevice -- ^ physicalDevice
+                                                     ->
+                                      Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceMemoryProperties
+  = vkGetPhysicalDeviceMemoryPropertiesUnsafe
+##else
+vkGetPhysicalDeviceMemoryProperties
+  = vkGetPhysicalDeviceMemoryPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceMemoryProperties #-}
+
+-- | > void vkGetPhysicalDeviceMemoryProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceMemoryProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceMemoryProperties -- ^ pMemoryProperties
+                                                              -> IO ()
+
+type PFN_vkGetPhysicalDeviceMemoryProperties =
+     FunPtr HS_vkGetPhysicalDeviceMemoryProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties ->
+                 HS_vkGetPhysicalDeviceMemoryProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties ->
+                 HS_vkGetPhysicalDeviceMemoryProperties
+
+instance VulkanProc "vkGetPhysicalDeviceMemoryProperties" where
+    type VkProcType "vkGetPhysicalDeviceMemoryProperties" =
+         HS_vkGetPhysicalDeviceMemoryProperties
+    vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceMemoryPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceMemoryPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetInstanceProcAddr :: CString
+
+pattern VkGetInstanceProcAddr <- (is_VkGetInstanceProcAddr -> True)
+  where
+    VkGetInstanceProcAddr = _VkGetInstanceProcAddr
+
+{-# INLINE _VkGetInstanceProcAddr #-}
+
+_VkGetInstanceProcAddr :: CString
+_VkGetInstanceProcAddr = Ptr "vkGetInstanceProcAddr\NUL"##
+
+{-# INLINE is_VkGetInstanceProcAddr #-}
+
+is_VkGetInstanceProcAddr :: CString -> Bool
+is_VkGetInstanceProcAddr
+  = (EQ ==) . cmpCStrings _VkGetInstanceProcAddr
+
+type VkGetInstanceProcAddr = "vkGetInstanceProcAddr"
+
+-- |
+-- > PFN_vkVoidFunction vkGetInstanceProcAddr
+-- >     ( VkInstance instance
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
+--
+-- or less efficient:
+--
+-- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
+--
+-- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
+--           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetInstanceProcAddr"
+               vkGetInstanceProcAddrUnsafe ::
+               VkInstance -- ^ instance
+                          -> CString -- ^ pName
+                                     -> IO PFN_vkVoidFunction
+
+##else
+vkGetInstanceProcAddrUnsafe ::
+                            VkInstance -- ^ instance
+                                       -> CString -- ^ pName
+                                                  -> IO PFN_vkVoidFunction
+vkGetInstanceProcAddrUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetInstanceProcAddr)
+
+{-# NOINLINE vkGetInstanceProcAddrUnsafe #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetInstanceProcAddr
+-- >     ( VkInstance instance
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
+--
+-- or less efficient:
+--
+-- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
+--
+-- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
+--           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetInstanceProcAddr"
+               vkGetInstanceProcAddrSafe ::
+               VkInstance -- ^ instance
+                          -> CString -- ^ pName
+                                     -> IO PFN_vkVoidFunction
+
+##else
+vkGetInstanceProcAddrSafe ::
+                          VkInstance -- ^ instance
+                                     -> CString -- ^ pName
+                                                -> IO PFN_vkVoidFunction
+vkGetInstanceProcAddrSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetInstanceProcAddr)
+
+{-# NOINLINE vkGetInstanceProcAddrSafe #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetInstanceProcAddr
+-- >     ( VkInstance instance
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetInstanceProcAddr <- vkGetInstanceProc @VkGetInstanceProcAddr vkInstance
+--
+-- or less efficient:
+--
+-- > myGetInstanceProcAddr <- vkGetProc @VkGetInstanceProcAddr
+--
+-- __Note:__ @vkGetInstanceProcAddrUnsafe@ and @vkGetInstanceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetInstanceProcAddr@ is an alias
+--           of @vkGetInstanceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetInstanceProcAddrSafe@.
+--
+vkGetInstanceProcAddr ::
+                      VkInstance -- ^ instance
+                                 -> CString -- ^ pName
+                                            -> IO PFN_vkVoidFunction
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetInstanceProcAddr = vkGetInstanceProcAddrUnsafe
+##else
+vkGetInstanceProcAddr = vkGetInstanceProcAddrSafe
+
+##endif
+{-# INLINE vkGetInstanceProcAddr #-}
+
+-- | > PFN_vkVoidFunction vkGetInstanceProcAddr
+--   >     ( VkInstance instance
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetInstanceProcAddr vkGetInstanceProcAddr registry at www.khronos.org>
+type HS_vkGetInstanceProcAddr =
+     VkInstance -- ^ instance
+                -> CString -- ^ pName
+                           -> IO PFN_vkVoidFunction
+
+type PFN_vkGetInstanceProcAddr = FunPtr HS_vkGetInstanceProcAddr
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetInstanceProcAddrUnsafe ::
+               PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
+
+foreign import ccall safe "dynamic" unwrapVkGetInstanceProcAddrSafe
+               :: PFN_vkGetInstanceProcAddr -> HS_vkGetInstanceProcAddr
+
+instance VulkanProc "vkGetInstanceProcAddr" where
+    type VkProcType "vkGetInstanceProcAddr" = HS_vkGetInstanceProcAddr
+    vkProcSymbol = _VkGetInstanceProcAddr
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetInstanceProcAddrUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetInstanceProcAddrSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceProcAddr :: CString
+
+pattern VkGetDeviceProcAddr <- (is_VkGetDeviceProcAddr -> True)
+  where
+    VkGetDeviceProcAddr = _VkGetDeviceProcAddr
+
+{-# INLINE _VkGetDeviceProcAddr #-}
+
+_VkGetDeviceProcAddr :: CString
+_VkGetDeviceProcAddr = Ptr "vkGetDeviceProcAddr\NUL"##
+
+{-# INLINE is_VkGetDeviceProcAddr #-}
+
+is_VkGetDeviceProcAddr :: CString -> Bool
+is_VkGetDeviceProcAddr = (EQ ==) . cmpCStrings _VkGetDeviceProcAddr
+
+type VkGetDeviceProcAddr = "vkGetDeviceProcAddr"
+
+-- |
+-- > PFN_vkVoidFunction vkGetDeviceProcAddr
+-- >     ( VkDevice device
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
+--
+-- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
+--           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceProcAddr"
+               vkGetDeviceProcAddrUnsafe ::
+               VkDevice -- ^ device
+                        -> CString -- ^ pName
+                                   -> IO PFN_vkVoidFunction
+
+##else
+vkGetDeviceProcAddrUnsafe ::
+                          VkDevice -- ^ device
+                                   -> CString -- ^ pName
+                                              -> IO PFN_vkVoidFunction
+vkGetDeviceProcAddrUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceProcAddr)
+
+{-# NOINLINE vkGetDeviceProcAddrUnsafe #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetDeviceProcAddr
+-- >     ( VkDevice device
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
+--
+-- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
+--           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceProcAddr"
+               vkGetDeviceProcAddrSafe ::
+               VkDevice -- ^ device
+                        -> CString -- ^ pName
+                                   -> IO PFN_vkVoidFunction
+
+##else
+vkGetDeviceProcAddrSafe ::
+                        VkDevice -- ^ device
+                                 -> CString -- ^ pName
+                                            -> IO PFN_vkVoidFunction
+vkGetDeviceProcAddrSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceProcAddr)
+
+{-# NOINLINE vkGetDeviceProcAddrSafe #-}
+##endif
+
+-- |
+-- > PFN_vkVoidFunction vkGetDeviceProcAddr
+-- >     ( VkDevice device
+-- >     , const char* pName
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceProcAddr <- vkGetDeviceProc @VkGetDeviceProcAddr vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceProcAddr <- vkGetProc @VkGetDeviceProcAddr
+--
+-- __Note:__ @vkGetDeviceProcAddrUnsafe@ and @vkGetDeviceProcAddrSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceProcAddr@ is an alias
+--           of @vkGetDeviceProcAddrUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceProcAddrSafe@.
+--
+vkGetDeviceProcAddr :: VkDevice -- ^ device
+                                -> CString -- ^ pName
+                                           -> IO PFN_vkVoidFunction
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceProcAddr = vkGetDeviceProcAddrUnsafe
+##else
+vkGetDeviceProcAddr = vkGetDeviceProcAddrSafe
+
+##endif
+{-# INLINE vkGetDeviceProcAddr #-}
+
+-- | > PFN_vkVoidFunction vkGetDeviceProcAddr
+--   >     ( VkDevice device
+--   >     , const char* pName
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceProcAddr vkGetDeviceProcAddr registry at www.khronos.org>
+type HS_vkGetDeviceProcAddr =
+     VkDevice -- ^ device
+              -> CString -- ^ pName
+                         -> IO PFN_vkVoidFunction
+
+type PFN_vkGetDeviceProcAddr = FunPtr HS_vkGetDeviceProcAddr
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDeviceProcAddrUnsafe ::
+               PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceProcAddrSafe
+               :: PFN_vkGetDeviceProcAddr -> HS_vkGetDeviceProcAddr
+
+instance VulkanProc "vkGetDeviceProcAddr" where
+    type VkProcType "vkGetDeviceProcAddr" = HS_vkGetDeviceProcAddr
+    vkProcSymbol = _VkGetDeviceProcAddr
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetDeviceProcAddrUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDeviceProcAddrSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDevice :: CString
+
+pattern VkCreateDevice <- (is_VkCreateDevice -> True)
+  where
+    VkCreateDevice = _VkCreateDevice
+
+{-# INLINE _VkCreateDevice #-}
+
+_VkCreateDevice :: CString
+_VkCreateDevice = Ptr "vkCreateDevice\NUL"##
+
+{-# INLINE is_VkCreateDevice #-}
+
+is_VkCreateDevice :: CString -> Bool
+is_VkCreateDevice = (EQ ==) . cmpCStrings _VkCreateDevice
+
+type VkCreateDevice = "vkCreateDevice"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkCreateDevice
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkDeviceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDevice* pDevice
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDevice <- vkGetProc @VkCreateDevice
+--
+-- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
+--           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDevice" vkCreateDeviceUnsafe
+               ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+
+##else
+vkCreateDeviceUnsafe ::
+                     VkPhysicalDevice -- ^ physicalDevice
+                                      ->
+                       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                              ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkDevice -- ^ pDevice
+                                                                   -> IO VkResult
+vkCreateDeviceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateDevice)
+
+{-# NOINLINE vkCreateDeviceUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkCreateDevice
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkDeviceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDevice* pDevice
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDevice <- vkGetProc @VkCreateDevice
+--
+-- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
+--           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDevice" vkCreateDeviceSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+
+##else
+vkCreateDeviceSafe ::
+                   VkPhysicalDevice -- ^ physicalDevice
+                                    ->
+                     Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                            ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkDevice -- ^ pDevice
+                                                                 -> IO VkResult
+vkCreateDeviceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDevice)
+
+{-# NOINLINE vkCreateDeviceSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkCreateDevice
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkDeviceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDevice* pDevice
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDevice <- vkGetInstanceProc @VkCreateDevice vkInstance
+--
+-- or less efficient:
+--
+-- > myCreateDevice <- vkGetProc @VkCreateDevice
+--
+-- __Note:__ @vkCreateDeviceUnsafe@ and @vkCreateDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDevice@ is an alias
+--           of @vkCreateDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDeviceSafe@.
+--
+vkCreateDevice ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDevice -- ^ pDevice
+                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateDevice = vkCreateDeviceUnsafe
+##else
+vkCreateDevice = vkCreateDeviceSafe
+
+##endif
+{-# INLINE vkCreateDevice #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkCreateDevice
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkDeviceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDevice* pDevice
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDevice vkCreateDevice registry at www.khronos.org>
+type HS_vkCreateDevice =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkDeviceCreateInfo -- ^ pCreateInfo
+                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDevice -- ^ pDevice
+                                                   -> IO VkResult
+
+type PFN_vkCreateDevice = FunPtr HS_vkCreateDevice
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateDeviceUnsafe ::
+               PFN_vkCreateDevice -> HS_vkCreateDevice
+
+foreign import ccall safe "dynamic" unwrapVkCreateDeviceSafe ::
+               PFN_vkCreateDevice -> HS_vkCreateDevice
+
+instance VulkanProc "vkCreateDevice" where
+    type VkProcType "vkCreateDevice" = HS_vkCreateDevice
+    vkProcSymbol = _VkCreateDevice
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateDeviceUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDeviceSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDevice :: CString
+
+pattern VkDestroyDevice <- (is_VkDestroyDevice -> True)
+  where
+    VkDestroyDevice = _VkDestroyDevice
+
+{-# INLINE _VkDestroyDevice #-}
+
+_VkDestroyDevice :: CString
+_VkDestroyDevice = Ptr "vkDestroyDevice\NUL"##
+
+{-# INLINE is_VkDestroyDevice #-}
+
+is_VkDestroyDevice :: CString -> Bool
+is_VkDestroyDevice = (EQ ==) . cmpCStrings _VkDestroyDevice
+
+type VkDestroyDevice = "vkDestroyDevice"
+
+-- |
+-- > void vkDestroyDevice
+-- >     ( VkDevice device
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDevice <- vkGetProc @VkDestroyDevice
+--
+-- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
+--           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDevice" vkDestroyDeviceUnsafe
+               :: VkDevice -- ^ device
+                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> IO ()
+
+##else
+vkDestroyDeviceUnsafe ::
+                      VkDevice -- ^ device
+                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> IO ()
+vkDestroyDeviceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyDevice)
+
+{-# NOINLINE vkDestroyDeviceUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDevice
+-- >     ( VkDevice device
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDevice <- vkGetProc @VkDestroyDevice
+--
+-- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
+--           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDevice" vkDestroyDeviceSafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> IO ()
+
+##else
+vkDestroyDeviceSafe ::
+                    VkDevice -- ^ device
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+vkDestroyDeviceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDevice)
+
+{-# NOINLINE vkDestroyDeviceSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDevice
+-- >     ( VkDevice device
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDevice <- vkGetDeviceProc @VkDestroyDevice vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDevice <- vkGetProc @VkDestroyDevice
+--
+-- __Note:__ @vkDestroyDeviceUnsafe@ and @vkDestroyDeviceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDevice@ is an alias
+--           of @vkDestroyDeviceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDeviceSafe@.
+--
+vkDestroyDevice :: VkDevice -- ^ device
+                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyDevice = vkDestroyDeviceUnsafe
+##else
+vkDestroyDevice = vkDestroyDeviceSafe
+
+##endif
+{-# INLINE vkDestroyDevice #-}
+
+-- | > void vkDestroyDevice
+--   >     ( VkDevice device
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDevice vkDestroyDevice registry at www.khronos.org>
+type HS_vkDestroyDevice =
+     VkDevice -- ^ device
+              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                           -> IO ()
+
+type PFN_vkDestroyDevice = FunPtr HS_vkDestroyDevice
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyDeviceUnsafe
+               :: PFN_vkDestroyDevice -> HS_vkDestroyDevice
+
+foreign import ccall safe "dynamic" unwrapVkDestroyDeviceSafe ::
+               PFN_vkDestroyDevice -> HS_vkDestroyDevice
+
+instance VulkanProc "vkDestroyDevice" where
+    type VkProcType "vkDestroyDevice" = HS_vkDestroyDevice
+    vkProcSymbol = _VkDestroyDevice
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyDeviceUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyDeviceSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateInstanceExtensionProperties :: CString
+
+pattern VkEnumerateInstanceExtensionProperties <-
+        (is_VkEnumerateInstanceExtensionProperties -> True)
+  where
+    VkEnumerateInstanceExtensionProperties
+      = _VkEnumerateInstanceExtensionProperties
+
+{-# INLINE _VkEnumerateInstanceExtensionProperties #-}
+
+_VkEnumerateInstanceExtensionProperties :: CString
+_VkEnumerateInstanceExtensionProperties
+  = Ptr "vkEnumerateInstanceExtensionProperties\NUL"##
+
+{-# INLINE is_VkEnumerateInstanceExtensionProperties #-}
+
+is_VkEnumerateInstanceExtensionProperties :: CString -> Bool
+is_VkEnumerateInstanceExtensionProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateInstanceExtensionProperties
+
+type VkEnumerateInstanceExtensionProperties =
+     "vkEnumerateInstanceExtensionProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateInstanceExtensionProperties
+-- >     ( const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
+--
+-- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
+--           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkEnumerateInstanceExtensionProperties"
+               vkEnumerateInstanceExtensionPropertiesUnsafe ::
+               CString -- ^ pLayerName
+                       -> Ptr Word32 -- ^ pPropertyCount
+                                     -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                  -> IO VkResult
+
+##else
+vkEnumerateInstanceExtensionPropertiesUnsafe ::
+                                             CString -- ^ pLayerName
+                                                     ->
+                                               Ptr Word32 -- ^ pPropertyCount
+                                                          ->
+                                                 Ptr VkExtensionProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateInstanceExtensionPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateInstanceExtensionProperties)
+
+{-# NOINLINE vkEnumerateInstanceExtensionPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateInstanceExtensionProperties
+-- >     ( const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
+--
+-- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
+--           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateInstanceExtensionProperties"
+               vkEnumerateInstanceExtensionPropertiesSafe ::
+               CString -- ^ pLayerName
+                       -> Ptr Word32 -- ^ pPropertyCount
+                                     -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                  -> IO VkResult
+
+##else
+vkEnumerateInstanceExtensionPropertiesSafe ::
+                                           CString -- ^ pLayerName
+                                                   ->
+                                             Ptr Word32 -- ^ pPropertyCount
+                                                        -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                     -> IO VkResult
+vkEnumerateInstanceExtensionPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceExtensionProperties)
+
+{-# NOINLINE vkEnumerateInstanceExtensionPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateInstanceExtensionProperties
+-- >     ( const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetInstanceProc @VkEnumerateInstanceExtensionProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceExtensionProperties <- vkGetProc @VkEnumerateInstanceExtensionProperties
+--
+-- __Note:__ @vkEnumerateInstanceExtensionPropertiesUnsafe@ and @vkEnumerateInstanceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceExtensionProperties@ is an alias
+--           of @vkEnumerateInstanceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceExtensionPropertiesSafe@.
+--
+vkEnumerateInstanceExtensionProperties ::
+                                       CString -- ^ pLayerName
+                                               ->
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateInstanceExtensionProperties
+  = vkEnumerateInstanceExtensionPropertiesUnsafe
+##else
+vkEnumerateInstanceExtensionProperties
+  = vkEnumerateInstanceExtensionPropertiesSafe
+
+##endif
+{-# INLINE vkEnumerateInstanceExtensionProperties #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+--   > VkResult vkEnumerateInstanceExtensionProperties
+--   >     ( const char* pLayerName
+--   >     , uint32_t* pPropertyCount
+--   >     , VkExtensionProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties registry at www.khronos.org>
+type HS_vkEnumerateInstanceExtensionProperties =
+     CString -- ^ pLayerName
+             -> Ptr Word32 -- ^ pPropertyCount
+                           -> Ptr VkExtensionProperties -- ^ pProperties
+                                                        -> IO VkResult
+
+type PFN_vkEnumerateInstanceExtensionProperties =
+     FunPtr HS_vkEnumerateInstanceExtensionProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceExtensionPropertiesUnsafe ::
+               PFN_vkEnumerateInstanceExtensionProperties ->
+                 HS_vkEnumerateInstanceExtensionProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceExtensionPropertiesSafe ::
+               PFN_vkEnumerateInstanceExtensionProperties ->
+                 HS_vkEnumerateInstanceExtensionProperties
+
+instance VulkanProc "vkEnumerateInstanceExtensionProperties" where
+    type VkProcType "vkEnumerateInstanceExtensionProperties" =
+         HS_vkEnumerateInstanceExtensionProperties
+    vkProcSymbol = _VkEnumerateInstanceExtensionProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkEnumerateInstanceExtensionPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkEnumerateInstanceExtensionPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateDeviceExtensionProperties :: CString
+
+pattern VkEnumerateDeviceExtensionProperties <-
+        (is_VkEnumerateDeviceExtensionProperties -> True)
+  where
+    VkEnumerateDeviceExtensionProperties
+      = _VkEnumerateDeviceExtensionProperties
+
+{-# INLINE _VkEnumerateDeviceExtensionProperties #-}
+
+_VkEnumerateDeviceExtensionProperties :: CString
+_VkEnumerateDeviceExtensionProperties
+  = Ptr "vkEnumerateDeviceExtensionProperties\NUL"##
+
+{-# INLINE is_VkEnumerateDeviceExtensionProperties #-}
+
+is_VkEnumerateDeviceExtensionProperties :: CString -> Bool
+is_VkEnumerateDeviceExtensionProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateDeviceExtensionProperties
+
+type VkEnumerateDeviceExtensionProperties =
+     "vkEnumerateDeviceExtensionProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateDeviceExtensionProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
+--
+-- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
+--           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateDeviceExtensionProperties"
+               vkEnumerateDeviceExtensionPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 CString -- ^ pLayerName
+                         -> Ptr Word32 -- ^ pPropertyCount
+                                       -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                    -> IO VkResult
+
+##else
+vkEnumerateDeviceExtensionPropertiesUnsafe ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             CString -- ^ pLayerName
+                                                     ->
+                                               Ptr Word32 -- ^ pPropertyCount
+                                                          ->
+                                                 Ptr VkExtensionProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateDeviceExtensionPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateDeviceExtensionProperties)
+
+{-# NOINLINE vkEnumerateDeviceExtensionPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateDeviceExtensionProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
+--
+-- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
+--           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateDeviceExtensionProperties"
+               vkEnumerateDeviceExtensionPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 CString -- ^ pLayerName
+                         -> Ptr Word32 -- ^ pPropertyCount
+                                       -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                    -> IO VkResult
+
+##else
+vkEnumerateDeviceExtensionPropertiesSafe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           CString -- ^ pLayerName
+                                                   ->
+                                             Ptr Word32 -- ^ pPropertyCount
+                                                        -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                     -> IO VkResult
+vkEnumerateDeviceExtensionPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateDeviceExtensionProperties)
+
+{-# NOINLINE vkEnumerateDeviceExtensionPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+-- > VkResult vkEnumerateDeviceExtensionProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const char* pLayerName
+-- >     , uint32_t* pPropertyCount
+-- >     , VkExtensionProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetInstanceProc @VkEnumerateDeviceExtensionProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceExtensionProperties <- vkGetProc @VkEnumerateDeviceExtensionProperties
+--
+-- __Note:__ @vkEnumerateDeviceExtensionPropertiesUnsafe@ and @vkEnumerateDeviceExtensionPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceExtensionProperties@ is an alias
+--           of @vkEnumerateDeviceExtensionPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceExtensionPropertiesSafe@.
+--
+vkEnumerateDeviceExtensionProperties ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       CString -- ^ pLayerName
+                                               ->
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkExtensionProperties -- ^ pProperties
+                                                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateDeviceExtensionProperties
+  = vkEnumerateDeviceExtensionPropertiesUnsafe
+##else
+vkEnumerateDeviceExtensionProperties
+  = vkEnumerateDeviceExtensionPropertiesSafe
+
+##endif
+{-# INLINE vkEnumerateDeviceExtensionProperties #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_LAYER_NOT_PRESENT'.
+--
+--   > VkResult vkEnumerateDeviceExtensionProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const char* pLayerName
+--   >     , uint32_t* pPropertyCount
+--   >     , VkExtensionProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties registry at www.khronos.org>
+type HS_vkEnumerateDeviceExtensionProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       CString -- ^ pLayerName
+               -> Ptr Word32 -- ^ pPropertyCount
+                             -> Ptr VkExtensionProperties -- ^ pProperties
+                                                          -> IO VkResult
+
+type PFN_vkEnumerateDeviceExtensionProperties =
+     FunPtr HS_vkEnumerateDeviceExtensionProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateDeviceExtensionPropertiesUnsafe ::
+               PFN_vkEnumerateDeviceExtensionProperties ->
+                 HS_vkEnumerateDeviceExtensionProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateDeviceExtensionPropertiesSafe ::
+               PFN_vkEnumerateDeviceExtensionProperties ->
+                 HS_vkEnumerateDeviceExtensionProperties
+
+instance VulkanProc "vkEnumerateDeviceExtensionProperties" where
+    type VkProcType "vkEnumerateDeviceExtensionProperties" =
+         HS_vkEnumerateDeviceExtensionProperties
+    vkProcSymbol = _VkEnumerateDeviceExtensionProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkEnumerateDeviceExtensionPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkEnumerateDeviceExtensionPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateInstanceLayerProperties :: CString
+
+pattern VkEnumerateInstanceLayerProperties <-
+        (is_VkEnumerateInstanceLayerProperties -> True)
+  where
+    VkEnumerateInstanceLayerProperties
+      = _VkEnumerateInstanceLayerProperties
+
+{-# INLINE _VkEnumerateInstanceLayerProperties #-}
+
+_VkEnumerateInstanceLayerProperties :: CString
+_VkEnumerateInstanceLayerProperties
+  = Ptr "vkEnumerateInstanceLayerProperties\NUL"##
+
+{-# INLINE is_VkEnumerateInstanceLayerProperties #-}
+
+is_VkEnumerateInstanceLayerProperties :: CString -> Bool
+is_VkEnumerateInstanceLayerProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateInstanceLayerProperties
+
+type VkEnumerateInstanceLayerProperties =
+     "vkEnumerateInstanceLayerProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateInstanceLayerProperties
+-- >     ( uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
+--
+-- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
+--           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateInstanceLayerProperties"
+               vkEnumerateInstanceLayerPropertiesUnsafe ::
+               Ptr Word32 -- ^ pPropertyCount
+                          -> Ptr VkLayerProperties -- ^ pProperties
+                                                   -> IO VkResult
+
+##else
+vkEnumerateInstanceLayerPropertiesUnsafe ::
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkLayerProperties -- ^ pProperties
+                                                                             -> IO VkResult
+vkEnumerateInstanceLayerPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateInstanceLayerProperties)
+
+{-# NOINLINE vkEnumerateInstanceLayerPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateInstanceLayerProperties
+-- >     ( uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
+--
+-- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
+--           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateInstanceLayerProperties"
+               vkEnumerateInstanceLayerPropertiesSafe ::
+               Ptr Word32 -- ^ pPropertyCount
+                          -> Ptr VkLayerProperties -- ^ pProperties
+                                                   -> IO VkResult
+
+##else
+vkEnumerateInstanceLayerPropertiesSafe ::
+                                       Ptr Word32 -- ^ pPropertyCount
+                                                  -> Ptr VkLayerProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateInstanceLayerPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceLayerProperties)
+
+{-# NOINLINE vkEnumerateInstanceLayerPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateInstanceLayerProperties
+-- >     ( uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetInstanceProc @VkEnumerateInstanceLayerProperties VK_NULL
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceLayerProperties <- vkGetProc @VkEnumerateInstanceLayerProperties
+--
+-- __Note:__ @vkEnumerateInstanceLayerPropertiesUnsafe@ and @vkEnumerateInstanceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceLayerProperties@ is an alias
+--           of @vkEnumerateInstanceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceLayerPropertiesSafe@.
+--
+vkEnumerateInstanceLayerProperties ::
+                                   Ptr Word32 -- ^ pPropertyCount
+                                              -> Ptr VkLayerProperties -- ^ pProperties
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateInstanceLayerProperties
+  = vkEnumerateInstanceLayerPropertiesUnsafe
+##else
+vkEnumerateInstanceLayerProperties
+  = vkEnumerateInstanceLayerPropertiesSafe
+
+##endif
+{-# INLINE vkEnumerateInstanceLayerProperties #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEnumerateInstanceLayerProperties
+--   >     ( uint32_t* pPropertyCount
+--   >     , VkLayerProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties registry at www.khronos.org>
+type HS_vkEnumerateInstanceLayerProperties =
+     Ptr Word32 -- ^ pPropertyCount
+                -> Ptr VkLayerProperties -- ^ pProperties
+                                         -> IO VkResult
+
+type PFN_vkEnumerateInstanceLayerProperties =
+     FunPtr HS_vkEnumerateInstanceLayerProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceLayerPropertiesUnsafe ::
+               PFN_vkEnumerateInstanceLayerProperties ->
+                 HS_vkEnumerateInstanceLayerProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceLayerPropertiesSafe ::
+               PFN_vkEnumerateInstanceLayerProperties ->
+                 HS_vkEnumerateInstanceLayerProperties
+
+instance VulkanProc "vkEnumerateInstanceLayerProperties" where
+    type VkProcType "vkEnumerateInstanceLayerProperties" =
+         HS_vkEnumerateInstanceLayerProperties
+    vkProcSymbol = _VkEnumerateInstanceLayerProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkEnumerateInstanceLayerPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceLayerPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEnumerateDeviceLayerProperties :: CString
+
+pattern VkEnumerateDeviceLayerProperties <-
+        (is_VkEnumerateDeviceLayerProperties -> True)
+  where
+    VkEnumerateDeviceLayerProperties
+      = _VkEnumerateDeviceLayerProperties
+
+{-# INLINE _VkEnumerateDeviceLayerProperties #-}
+
+_VkEnumerateDeviceLayerProperties :: CString
+_VkEnumerateDeviceLayerProperties
+  = Ptr "vkEnumerateDeviceLayerProperties\NUL"##
+
+{-# INLINE is_VkEnumerateDeviceLayerProperties #-}
+
+is_VkEnumerateDeviceLayerProperties :: CString -> Bool
+is_VkEnumerateDeviceLayerProperties
+  = (EQ ==) . cmpCStrings _VkEnumerateDeviceLayerProperties
+
+type VkEnumerateDeviceLayerProperties =
+     "vkEnumerateDeviceLayerProperties"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateDeviceLayerProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
+--
+-- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
+--           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEnumerateDeviceLayerProperties"
+               vkEnumerateDeviceLayerPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkLayerProperties -- ^ pProperties
+                                                     -> IO VkResult
+
+##else
+vkEnumerateDeviceLayerPropertiesUnsafe ::
+                                       VkPhysicalDevice -- ^ physicalDevice
+                                                        ->
+                                         Ptr Word32 -- ^ pPropertyCount
+                                                    -> Ptr VkLayerProperties -- ^ pProperties
+                                                                             -> IO VkResult
+vkEnumerateDeviceLayerPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateDeviceLayerProperties)
+
+{-# NOINLINE vkEnumerateDeviceLayerPropertiesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateDeviceLayerProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
+--
+-- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
+--           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEnumerateDeviceLayerProperties"
+               vkEnumerateDeviceLayerPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkLayerProperties -- ^ pProperties
+                                                     -> IO VkResult
+
+##else
+vkEnumerateDeviceLayerPropertiesSafe ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       Ptr Word32 -- ^ pPropertyCount
+                                                  -> Ptr VkLayerProperties -- ^ pProperties
+                                                                           -> IO VkResult
+vkEnumerateDeviceLayerPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateDeviceLayerProperties)
+
+{-# NOINLINE vkEnumerateDeviceLayerPropertiesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEnumerateDeviceLayerProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pPropertyCount
+-- >     , VkLayerProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetInstanceProc @VkEnumerateDeviceLayerProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateDeviceLayerProperties <- vkGetProc @VkEnumerateDeviceLayerProperties
+--
+-- __Note:__ @vkEnumerateDeviceLayerPropertiesUnsafe@ and @vkEnumerateDeviceLayerPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateDeviceLayerProperties@ is an alias
+--           of @vkEnumerateDeviceLayerPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateDeviceLayerPropertiesSafe@.
+--
+vkEnumerateDeviceLayerProperties ::
+                                 VkPhysicalDevice -- ^ physicalDevice
+                                                  ->
+                                   Ptr Word32 -- ^ pPropertyCount
+                                              -> Ptr VkLayerProperties -- ^ pProperties
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateDeviceLayerProperties
+  = vkEnumerateDeviceLayerPropertiesUnsafe
+##else
+vkEnumerateDeviceLayerProperties
+  = vkEnumerateDeviceLayerPropertiesSafe
+
+##endif
+{-# INLINE vkEnumerateDeviceLayerProperties #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEnumerateDeviceLayerProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pPropertyCount
+--   >     , VkLayerProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties registry at www.khronos.org>
+type HS_vkEnumerateDeviceLayerProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pPropertyCount
+                  -> Ptr VkLayerProperties -- ^ pProperties
+                                           -> IO VkResult
+
+type PFN_vkEnumerateDeviceLayerProperties =
+     FunPtr HS_vkEnumerateDeviceLayerProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateDeviceLayerPropertiesUnsafe ::
+               PFN_vkEnumerateDeviceLayerProperties ->
+                 HS_vkEnumerateDeviceLayerProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateDeviceLayerPropertiesSafe ::
+               PFN_vkEnumerateDeviceLayerProperties ->
+                 HS_vkEnumerateDeviceLayerProperties
+
+instance VulkanProc "vkEnumerateDeviceLayerProperties" where
+    type VkProcType "vkEnumerateDeviceLayerProperties" =
+         HS_vkEnumerateDeviceLayerProperties
+    vkProcSymbol = _VkEnumerateDeviceLayerProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkEnumerateDeviceLayerPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkEnumerateDeviceLayerPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceQueue :: CString
+
+pattern VkGetDeviceQueue <- (is_VkGetDeviceQueue -> True)
+  where
+    VkGetDeviceQueue = _VkGetDeviceQueue
+
+{-# INLINE _VkGetDeviceQueue #-}
+
+_VkGetDeviceQueue :: CString
+_VkGetDeviceQueue = Ptr "vkGetDeviceQueue\NUL"##
+
+{-# INLINE is_VkGetDeviceQueue #-}
+
+is_VkGetDeviceQueue :: CString -> Bool
+is_VkGetDeviceQueue = (EQ ==) . cmpCStrings _VkGetDeviceQueue
+
+type VkGetDeviceQueue = "vkGetDeviceQueue"
+
+-- |
+-- > void vkGetDeviceQueue
+-- >     ( VkDevice device
+-- >     , uint32_t queueFamilyIndex
+-- >     , uint32_t queueIndex
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
+--
+-- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
+--           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceQueue"
+               vkGetDeviceQueueUnsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ queueFamilyIndex
+                                  -> Word32 -- ^ queueIndex
+                                            -> Ptr VkQueue -- ^ pQueue
+                                                           -> IO ()
+
+##else
+vkGetDeviceQueueUnsafe ::
+                       VkDevice -- ^ device
+                                -> Word32 -- ^ queueFamilyIndex
+                                          -> Word32 -- ^ queueIndex
+                                                    -> Ptr VkQueue -- ^ pQueue
+                                                                   -> IO ()
+vkGetDeviceQueueUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceQueue)
+
+{-# NOINLINE vkGetDeviceQueueUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetDeviceQueue
+-- >     ( VkDevice device
+-- >     , uint32_t queueFamilyIndex
+-- >     , uint32_t queueIndex
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
+--
+-- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
+--           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceQueue" vkGetDeviceQueueSafe
+               :: VkDevice -- ^ device
+                           -> Word32 -- ^ queueFamilyIndex
+                                     -> Word32 -- ^ queueIndex
+                                               -> Ptr VkQueue -- ^ pQueue
+                                                              -> IO ()
+
+##else
+vkGetDeviceQueueSafe ::
+                     VkDevice -- ^ device
+                              -> Word32 -- ^ queueFamilyIndex
+                                        -> Word32 -- ^ queueIndex
+                                                  -> Ptr VkQueue -- ^ pQueue
+                                                                 -> IO ()
+vkGetDeviceQueueSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue)
+
+{-# NOINLINE vkGetDeviceQueueSafe #-}
+##endif
+
+-- |
+-- > void vkGetDeviceQueue
+-- >     ( VkDevice device
+-- >     , uint32_t queueFamilyIndex
+-- >     , uint32_t queueIndex
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue <- vkGetDeviceProc @VkGetDeviceQueue vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue <- vkGetProc @VkGetDeviceQueue
+--
+-- __Note:__ @vkGetDeviceQueueUnsafe@ and @vkGetDeviceQueueSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue@ is an alias
+--           of @vkGetDeviceQueueUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueueSafe@.
+--
+vkGetDeviceQueue ::
+                 VkDevice -- ^ device
+                          -> Word32 -- ^ queueFamilyIndex
+                                    -> Word32 -- ^ queueIndex
+                                              -> Ptr VkQueue -- ^ pQueue
+                                                             -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceQueue = vkGetDeviceQueueUnsafe
+##else
+vkGetDeviceQueue = vkGetDeviceQueueSafe
+
+##endif
+{-# INLINE vkGetDeviceQueue #-}
+
+-- | > void vkGetDeviceQueue
+--   >     ( VkDevice device
+--   >     , uint32_t queueFamilyIndex
+--   >     , uint32_t queueIndex
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue vkGetDeviceQueue registry at www.khronos.org>
+type HS_vkGetDeviceQueue =
+     VkDevice -- ^ device
+              -> Word32 -- ^ queueFamilyIndex
+                        -> Word32 -- ^ queueIndex
+                                  -> Ptr VkQueue -- ^ pQueue
+                                                 -> IO ()
+
+type PFN_vkGetDeviceQueue = FunPtr HS_vkGetDeviceQueue
+
+foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueueUnsafe
+               :: PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceQueueSafe ::
+               PFN_vkGetDeviceQueue -> HS_vkGetDeviceQueue
+
+instance VulkanProc "vkGetDeviceQueue" where
+    type VkProcType "vkGetDeviceQueue" = HS_vkGetDeviceQueue
+    vkProcSymbol = _VkGetDeviceQueue
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetDeviceQueueUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDeviceQueueSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueSubmit :: CString
+
+pattern VkQueueSubmit <- (is_VkQueueSubmit -> True)
+  where
+    VkQueueSubmit = _VkQueueSubmit
+
+{-# INLINE _VkQueueSubmit #-}
+
+_VkQueueSubmit :: CString
+_VkQueueSubmit = Ptr "vkQueueSubmit\NUL"##
+
+{-# INLINE is_VkQueueSubmit #-}
+
+is_VkQueueSubmit :: CString -> Bool
+is_VkQueueSubmit = (EQ ==) . cmpCStrings _VkQueueSubmit
+
+type VkQueueSubmit = "vkQueueSubmit"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueSubmit
+-- >     ( VkQueue queue
+-- >     , uint32_t submitCount
+-- >     , const VkSubmitInfo* pSubmits
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueSubmit <- vkGetProc @VkQueueSubmit
+--
+-- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
+--           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueSubmit" vkQueueSubmitUnsafe ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ submitCount
+                                 -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                     -> VkFence -- ^ fence
+                                                                -> IO VkResult
+
+##else
+vkQueueSubmitUnsafe ::
+                    VkQueue -- ^ queue
+                            -> Word32 -- ^ submitCount
+                                      -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                          -> VkFence -- ^ fence
+                                                                     -> IO VkResult
+vkQueueSubmitUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueSubmit)
+
+{-# NOINLINE vkQueueSubmitUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueSubmit
+-- >     ( VkQueue queue
+-- >     , uint32_t submitCount
+-- >     , const VkSubmitInfo* pSubmits
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueSubmit <- vkGetProc @VkQueueSubmit
+--
+-- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
+--           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueSubmit" vkQueueSubmitSafe ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ submitCount
+                                 -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                     -> VkFence -- ^ fence
+                                                                -> IO VkResult
+
+##else
+vkQueueSubmitSafe ::
+                  VkQueue -- ^ queue
+                          -> Word32 -- ^ submitCount
+                                    -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                        -> VkFence -- ^ fence
+                                                                   -> IO VkResult
+vkQueueSubmitSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueSubmit)
+
+{-# NOINLINE vkQueueSubmitSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueSubmit
+-- >     ( VkQueue queue
+-- >     , uint32_t submitCount
+-- >     , const VkSubmitInfo* pSubmits
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueSubmit <- vkGetInstanceProc @VkQueueSubmit vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueSubmit <- vkGetProc @VkQueueSubmit
+--
+-- __Note:__ @vkQueueSubmitUnsafe@ and @vkQueueSubmitSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueSubmit@ is an alias
+--           of @vkQueueSubmitUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueSubmitSafe@.
+--
+vkQueueSubmit ::
+              VkQueue -- ^ queue
+                      -> Word32 -- ^ submitCount
+                                -> Ptr VkSubmitInfo -- ^ pSubmits
+                                                    -> VkFence -- ^ fence
+                                                               -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkQueueSubmit = vkQueueSubmitUnsafe
+##else
+vkQueueSubmit = vkQueueSubmitSafe
+
+##endif
+{-# INLINE vkQueueSubmit #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkQueueSubmit
+--   >     ( VkQueue queue
+--   >     , uint32_t submitCount
+--   >     , const VkSubmitInfo* pSubmits
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueSubmit vkQueueSubmit registry at www.khronos.org>
+type HS_vkQueueSubmit =
+     VkQueue -- ^ queue
+             -> Word32 -- ^ submitCount
+                       -> Ptr VkSubmitInfo -- ^ pSubmits
+                                           -> VkFence -- ^ fence
+                                                      -> IO VkResult
+
+type PFN_vkQueueSubmit = FunPtr HS_vkQueueSubmit
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueSubmitUnsafe ::
+               PFN_vkQueueSubmit -> HS_vkQueueSubmit
+
+foreign import ccall safe "dynamic" unwrapVkQueueSubmitSafe ::
+               PFN_vkQueueSubmit -> HS_vkQueueSubmit
+
+instance VulkanProc "vkQueueSubmit" where
+    type VkProcType "vkQueueSubmit" = HS_vkQueueSubmit
+    vkProcSymbol = _VkQueueSubmit
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkQueueSubmitUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkQueueSubmitSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueWaitIdle :: CString
+
+pattern VkQueueWaitIdle <- (is_VkQueueWaitIdle -> True)
+  where
+    VkQueueWaitIdle = _VkQueueWaitIdle
+
+{-# INLINE _VkQueueWaitIdle #-}
+
+_VkQueueWaitIdle :: CString
+_VkQueueWaitIdle = Ptr "vkQueueWaitIdle\NUL"##
+
+{-# INLINE is_VkQueueWaitIdle #-}
+
+is_VkQueueWaitIdle :: CString -> Bool
+is_VkQueueWaitIdle = (EQ ==) . cmpCStrings _VkQueueWaitIdle
+
+type VkQueueWaitIdle = "vkQueueWaitIdle"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueWaitIdle
+-- >     ( VkQueue queue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
+--
+-- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
+--           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueWaitIdle" vkQueueWaitIdleUnsafe
+               :: VkQueue -- ^ queue
+                          -> IO VkResult
+
+##else
+vkQueueWaitIdleUnsafe :: VkQueue -- ^ queue
+                                 -> IO VkResult
+vkQueueWaitIdleUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueWaitIdle)
+
+{-# NOINLINE vkQueueWaitIdleUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueWaitIdle
+-- >     ( VkQueue queue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
+--
+-- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
+--           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueWaitIdle" vkQueueWaitIdleSafe ::
+               VkQueue -- ^ queue
+                       -> IO VkResult
+
+##else
+vkQueueWaitIdleSafe :: VkQueue -- ^ queue
+                               -> IO VkResult
+vkQueueWaitIdleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueWaitIdle)
+
+{-# NOINLINE vkQueueWaitIdleSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkQueueWaitIdle
+-- >     ( VkQueue queue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueWaitIdle <- vkGetInstanceProc @VkQueueWaitIdle vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueWaitIdle <- vkGetProc @VkQueueWaitIdle
+--
+-- __Note:__ @vkQueueWaitIdleUnsafe@ and @vkQueueWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueWaitIdle@ is an alias
+--           of @vkQueueWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueWaitIdleSafe@.
+--
+vkQueueWaitIdle :: VkQueue -- ^ queue
+                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkQueueWaitIdle = vkQueueWaitIdleUnsafe
+##else
+vkQueueWaitIdle = vkQueueWaitIdleSafe
+
+##endif
+{-# INLINE vkQueueWaitIdle #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkQueueWaitIdle
+--   >     ( VkQueue queue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueWaitIdle vkQueueWaitIdle registry at www.khronos.org>
+type HS_vkQueueWaitIdle = VkQueue -- ^ queue
+                                  -> IO VkResult
+
+type PFN_vkQueueWaitIdle = FunPtr HS_vkQueueWaitIdle
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueWaitIdleUnsafe
+               :: PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
+
+foreign import ccall safe "dynamic" unwrapVkQueueWaitIdleSafe ::
+               PFN_vkQueueWaitIdle -> HS_vkQueueWaitIdle
+
+instance VulkanProc "vkQueueWaitIdle" where
+    type VkProcType "vkQueueWaitIdle" = HS_vkQueueWaitIdle
+    vkProcSymbol = _VkQueueWaitIdle
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkQueueWaitIdleUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkQueueWaitIdleSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDeviceWaitIdle :: CString
+
+pattern VkDeviceWaitIdle <- (is_VkDeviceWaitIdle -> True)
+  where
+    VkDeviceWaitIdle = _VkDeviceWaitIdle
+
+{-# INLINE _VkDeviceWaitIdle #-}
+
+_VkDeviceWaitIdle :: CString
+_VkDeviceWaitIdle = Ptr "vkDeviceWaitIdle\NUL"##
+
+{-# INLINE is_VkDeviceWaitIdle #-}
+
+is_VkDeviceWaitIdle :: CString -> Bool
+is_VkDeviceWaitIdle = (EQ ==) . cmpCStrings _VkDeviceWaitIdle
+
+type VkDeviceWaitIdle = "vkDeviceWaitIdle"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkDeviceWaitIdle
+-- >     ( VkDevice device
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
+--
+-- or less efficient:
+--
+-- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
+--
+-- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
+--           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDeviceWaitIdle"
+               vkDeviceWaitIdleUnsafe :: VkDevice -- ^ device
+                                                  -> IO VkResult
+
+##else
+vkDeviceWaitIdleUnsafe :: VkDevice -- ^ device
+                                   -> IO VkResult
+vkDeviceWaitIdleUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDeviceWaitIdle)
+
+{-# NOINLINE vkDeviceWaitIdleUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkDeviceWaitIdle
+-- >     ( VkDevice device
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
+--
+-- or less efficient:
+--
+-- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
+--
+-- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
+--           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDeviceWaitIdle" vkDeviceWaitIdleSafe
+               :: VkDevice -- ^ device
+                           -> IO VkResult
+
+##else
+vkDeviceWaitIdleSafe :: VkDevice -- ^ device
+                                 -> IO VkResult
+vkDeviceWaitIdleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDeviceWaitIdle)
+
+{-# NOINLINE vkDeviceWaitIdleSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkDeviceWaitIdle
+-- >     ( VkDevice device
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDeviceWaitIdle <- vkGetDeviceProc @VkDeviceWaitIdle vkDevice
+--
+-- or less efficient:
+--
+-- > myDeviceWaitIdle <- vkGetProc @VkDeviceWaitIdle
+--
+-- __Note:__ @vkDeviceWaitIdleUnsafe@ and @vkDeviceWaitIdleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDeviceWaitIdle@ is an alias
+--           of @vkDeviceWaitIdleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDeviceWaitIdleSafe@.
+--
+vkDeviceWaitIdle :: VkDevice -- ^ device
+                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkDeviceWaitIdle = vkDeviceWaitIdleUnsafe
+##else
+vkDeviceWaitIdle = vkDeviceWaitIdleSafe
+
+##endif
+{-# INLINE vkDeviceWaitIdle #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkDeviceWaitIdle
+--   >     ( VkDevice device
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDeviceWaitIdle vkDeviceWaitIdle registry at www.khronos.org>
+type HS_vkDeviceWaitIdle = VkDevice -- ^ device
+                                    -> IO VkResult
+
+type PFN_vkDeviceWaitIdle = FunPtr HS_vkDeviceWaitIdle
+
+foreign import ccall unsafe "dynamic" unwrapVkDeviceWaitIdleUnsafe
+               :: PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
+
+foreign import ccall safe "dynamic" unwrapVkDeviceWaitIdleSafe ::
+               PFN_vkDeviceWaitIdle -> HS_vkDeviceWaitIdle
+
+instance VulkanProc "vkDeviceWaitIdle" where
+    type VkProcType "vkDeviceWaitIdle" = HS_vkDeviceWaitIdle
+    vkProcSymbol = _VkDeviceWaitIdle
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDeviceWaitIdleUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDeviceWaitIdleSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateMemory :: CString
+
+pattern VkAllocateMemory <- (is_VkAllocateMemory -> True)
+  where
+    VkAllocateMemory = _VkAllocateMemory
+
+{-# INLINE _VkAllocateMemory #-}
+
+_VkAllocateMemory :: CString
+_VkAllocateMemory = Ptr "vkAllocateMemory\NUL"##
+
+{-# INLINE is_VkAllocateMemory #-}
+
+is_VkAllocateMemory :: CString -> Bool
+is_VkAllocateMemory = (EQ ==) . cmpCStrings _VkAllocateMemory
+
+type VkAllocateMemory = "vkAllocateMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+-- > VkResult vkAllocateMemory
+-- >     ( VkDevice device
+-- >     , const VkMemoryAllocateInfo* pAllocateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDeviceMemory* pMemory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateMemory <- vkGetProc @VkAllocateMemory
+--
+-- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
+--           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateMemory"
+               vkAllocateMemoryUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                   -> IO VkResult
+
+##else
+vkAllocateMemoryUnsafe ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                                  ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                           -> IO VkResult
+vkAllocateMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkAllocateMemory)
+
+{-# NOINLINE vkAllocateMemoryUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+-- > VkResult vkAllocateMemory
+-- >     ( VkDevice device
+-- >     , const VkMemoryAllocateInfo* pAllocateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDeviceMemory* pMemory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateMemory <- vkGetProc @VkAllocateMemory
+--
+-- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
+--           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateMemory" vkAllocateMemorySafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                   -> IO VkResult
+
+##else
+vkAllocateMemorySafe ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                                ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                         -> IO VkResult
+vkAllocateMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateMemory)
+
+{-# NOINLINE vkAllocateMemorySafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+-- > VkResult vkAllocateMemory
+-- >     ( VkDevice device
+-- >     , const VkMemoryAllocateInfo* pAllocateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDeviceMemory* pMemory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateMemory <- vkGetDeviceProc @VkAllocateMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateMemory <- vkGetProc @VkAllocateMemory
+--
+-- __Note:__ @vkAllocateMemoryUnsafe@ and @vkAllocateMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateMemory@ is an alias
+--           of @vkAllocateMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateMemorySafe@.
+--
+vkAllocateMemory ::
+                 VkDevice -- ^ device
+                          ->
+                   Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                            ->
+                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                               -> Ptr VkDeviceMemory -- ^ pMemory
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkAllocateMemory = vkAllocateMemoryUnsafe
+##else
+vkAllocateMemory = vkAllocateMemorySafe
+
+##endif
+{-# INLINE vkAllocateMemory #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_INVALID_EXTERNAL_HANDLE'.
+--
+--   > VkResult vkAllocateMemory
+--   >     ( VkDevice device
+--   >     , const VkMemoryAllocateInfo* pAllocateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDeviceMemory* pMemory
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateMemory vkAllocateMemory registry at www.khronos.org>
+type HS_vkAllocateMemory =
+     VkDevice -- ^ device
+              ->
+       Ptr VkMemoryAllocateInfo -- ^ pAllocateInfo
+                                ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDeviceMemory -- ^ pMemory
+                                                         -> IO VkResult
+
+type PFN_vkAllocateMemory = FunPtr HS_vkAllocateMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkAllocateMemoryUnsafe
+               :: PFN_vkAllocateMemory -> HS_vkAllocateMemory
+
+foreign import ccall safe "dynamic" unwrapVkAllocateMemorySafe ::
+               PFN_vkAllocateMemory -> HS_vkAllocateMemory
+
+instance VulkanProc "vkAllocateMemory" where
+    type VkProcType "vkAllocateMemory" = HS_vkAllocateMemory
+    vkProcSymbol = _VkAllocateMemory
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkAllocateMemoryUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkAllocateMemorySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeMemory :: CString
+
+pattern VkFreeMemory <- (is_VkFreeMemory -> True)
+  where
+    VkFreeMemory = _VkFreeMemory
+
+{-# INLINE _VkFreeMemory #-}
+
+_VkFreeMemory :: CString
+_VkFreeMemory = Ptr "vkFreeMemory\NUL"##
+
+{-# INLINE is_VkFreeMemory #-}
+
+is_VkFreeMemory :: CString -> Bool
+is_VkFreeMemory = (EQ ==) . cmpCStrings _VkFreeMemory
+
+type VkFreeMemory = "vkFreeMemory"
+
+-- |
+-- > void vkFreeMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeMemory <- vkGetProc @VkFreeMemory
+--
+-- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
+--           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeMemory" vkFreeMemoryUnsafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkFreeMemoryUnsafe ::
+                   VkDevice -- ^ device
+                            -> VkDeviceMemory -- ^ memory
+                                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                           -> IO ()
+vkFreeMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeMemory)
+
+{-# NOINLINE vkFreeMemoryUnsafe #-}
+##endif
+
+-- |
+-- > void vkFreeMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeMemory <- vkGetProc @VkFreeMemory
+--
+-- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
+--           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeMemory" vkFreeMemorySafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkFreeMemorySafe ::
+                 VkDevice -- ^ device
+                          -> VkDeviceMemory -- ^ memory
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+vkFreeMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeMemory)
+
+{-# NOINLINE vkFreeMemorySafe #-}
+##endif
+
+-- |
+-- > void vkFreeMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeMemory <- vkGetDeviceProc @VkFreeMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeMemory <- vkGetProc @VkFreeMemory
+--
+-- __Note:__ @vkFreeMemoryUnsafe@ and @vkFreeMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeMemory@ is an alias
+--           of @vkFreeMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeMemorySafe@.
+--
+vkFreeMemory ::
+             VkDevice -- ^ device
+                      -> VkDeviceMemory -- ^ memory
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkFreeMemory = vkFreeMemoryUnsafe
+##else
+vkFreeMemory = vkFreeMemorySafe
+
+##endif
+{-# INLINE vkFreeMemory #-}
+
+-- | > void vkFreeMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeMemory vkFreeMemory registry at www.khronos.org>
+type HS_vkFreeMemory =
+     VkDevice -- ^ device
+              -> VkDeviceMemory -- ^ memory
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkFreeMemory = FunPtr HS_vkFreeMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkFreeMemoryUnsafe ::
+               PFN_vkFreeMemory -> HS_vkFreeMemory
+
+foreign import ccall safe "dynamic" unwrapVkFreeMemorySafe ::
+               PFN_vkFreeMemory -> HS_vkFreeMemory
+
+instance VulkanProc "vkFreeMemory" where
+    type VkProcType "vkFreeMemory" = HS_vkFreeMemory
+    vkProcSymbol = _VkFreeMemory
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkFreeMemoryUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkFreeMemorySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkMapMemory :: CString
+
+pattern VkMapMemory <- (is_VkMapMemory -> True)
+  where
+    VkMapMemory = _VkMapMemory
+
+{-# INLINE _VkMapMemory #-}
+
+_VkMapMemory :: CString
+_VkMapMemory = Ptr "vkMapMemory\NUL"##
+
+{-# INLINE is_VkMapMemory #-}
+
+is_VkMapMemory :: CString -> Bool
+is_VkMapMemory = (EQ ==) . cmpCStrings _VkMapMemory
+
+type VkMapMemory = "vkMapMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+-- > VkResult vkMapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize offset
+-- >     , VkDeviceSize size
+-- >     , VkMemoryMapFlags flags
+-- >     , void** ppData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myMapMemory <- vkGetProc @VkMapMemory
+--
+-- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMapMemory@ is an alias
+--           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkMapMemory" vkMapMemoryUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkDeviceSize -- ^ size
+                                  -> VkMemoryMapFlags -- ^ flags
+                                                      -> Ptr (Ptr Void) -- ^ ppData
+                                                                        -> IO VkResult
+
+##else
+vkMapMemoryUnsafe ::
+                  VkDevice -- ^ device
+                           ->
+                    VkDeviceMemory -- ^ memory
+                                   ->
+                      VkDeviceSize -- ^ offset
+                                   ->
+                        VkDeviceSize -- ^ size
+                                     -> VkMemoryMapFlags -- ^ flags
+                                                         -> Ptr (Ptr Void) -- ^ ppData
+                                                                           -> IO VkResult
+vkMapMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkMapMemory)
+
+{-# NOINLINE vkMapMemoryUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+-- > VkResult vkMapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize offset
+-- >     , VkDeviceSize size
+-- >     , VkMemoryMapFlags flags
+-- >     , void** ppData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myMapMemory <- vkGetProc @VkMapMemory
+--
+-- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMapMemory@ is an alias
+--           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkMapMemory" vkMapMemorySafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDeviceMemory -- ^ memory
+                                ->
+                   VkDeviceSize -- ^ offset
+                                ->
+                     VkDeviceSize -- ^ size
+                                  -> VkMemoryMapFlags -- ^ flags
+                                                      -> Ptr (Ptr Void) -- ^ ppData
+                                                                        -> IO VkResult
+
+##else
+vkMapMemorySafe ::
+                VkDevice -- ^ device
+                         ->
+                  VkDeviceMemory -- ^ memory
+                                 ->
+                    VkDeviceSize -- ^ offset
+                                 ->
+                      VkDeviceSize -- ^ size
+                                   -> VkMemoryMapFlags -- ^ flags
+                                                       -> Ptr (Ptr Void) -- ^ ppData
+                                                                         -> IO VkResult
+vkMapMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkMapMemory)
+
+{-# NOINLINE vkMapMemorySafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+-- > VkResult vkMapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize offset
+-- >     , VkDeviceSize size
+-- >     , VkMemoryMapFlags flags
+-- >     , void** ppData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMapMemory <- vkGetDeviceProc @VkMapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myMapMemory <- vkGetProc @VkMapMemory
+--
+-- __Note:__ @vkMapMemoryUnsafe@ and @vkMapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMapMemory@ is an alias
+--           of @vkMapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMapMemorySafe@.
+--
+vkMapMemory ::
+            VkDevice -- ^ device
+                     ->
+              VkDeviceMemory -- ^ memory
+                             ->
+                VkDeviceSize -- ^ offset
+                             ->
+                  VkDeviceSize -- ^ size
+                               -> VkMemoryMapFlags -- ^ flags
+                                                   -> Ptr (Ptr Void) -- ^ ppData
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkMapMemory = vkMapMemoryUnsafe
+##else
+vkMapMemory = vkMapMemorySafe
+
+##endif
+{-# INLINE vkMapMemory #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_MEMORY_MAP_FAILED'.
+--
+--   > VkResult vkMapMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize offset
+--   >     , VkDeviceSize size
+--   >     , VkMemoryMapFlags flags
+--   >     , void** ppData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMapMemory vkMapMemory registry at www.khronos.org>
+type HS_vkMapMemory =
+     VkDevice -- ^ device
+              ->
+       VkDeviceMemory -- ^ memory
+                      ->
+         VkDeviceSize -- ^ offset
+                      ->
+           VkDeviceSize -- ^ size
+                        -> VkMemoryMapFlags -- ^ flags
+                                            -> Ptr (Ptr Void) -- ^ ppData
+                                                              -> IO VkResult
+
+type PFN_vkMapMemory = FunPtr HS_vkMapMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkMapMemoryUnsafe ::
+               PFN_vkMapMemory -> HS_vkMapMemory
+
+foreign import ccall safe "dynamic" unwrapVkMapMemorySafe ::
+               PFN_vkMapMemory -> HS_vkMapMemory
+
+instance VulkanProc "vkMapMemory" where
+    type VkProcType "vkMapMemory" = HS_vkMapMemory
+    vkProcSymbol = _VkMapMemory
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkMapMemoryUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkMapMemorySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUnmapMemory :: CString
+
+pattern VkUnmapMemory <- (is_VkUnmapMemory -> True)
+  where
+    VkUnmapMemory = _VkUnmapMemory
+
+{-# INLINE _VkUnmapMemory #-}
+
+_VkUnmapMemory :: CString
+_VkUnmapMemory = Ptr "vkUnmapMemory\NUL"##
+
+{-# INLINE is_VkUnmapMemory #-}
+
+is_VkUnmapMemory :: CString -> Bool
+is_VkUnmapMemory = (EQ ==) . cmpCStrings _VkUnmapMemory
+
+type VkUnmapMemory = "vkUnmapMemory"
+
+-- |
+-- > void vkUnmapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myUnmapMemory <- vkGetProc @VkUnmapMemory
+--
+-- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
+--           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkUnmapMemory" vkUnmapMemoryUnsafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> IO ()
+
+##else
+vkUnmapMemoryUnsafe :: VkDevice -- ^ device
+                                -> VkDeviceMemory -- ^ memory
+                                                  -> IO ()
+vkUnmapMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkUnmapMemory)
+
+{-# NOINLINE vkUnmapMemoryUnsafe #-}
+##endif
+
+-- |
+-- > void vkUnmapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myUnmapMemory <- vkGetProc @VkUnmapMemory
+--
+-- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
+--           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkUnmapMemory" vkUnmapMemorySafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> IO ()
+
+##else
+vkUnmapMemorySafe :: VkDevice -- ^ device
+                              -> VkDeviceMemory -- ^ memory
+                                                -> IO ()
+vkUnmapMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkUnmapMemory)
+
+{-# NOINLINE vkUnmapMemorySafe #-}
+##endif
+
+-- |
+-- > void vkUnmapMemory
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUnmapMemory <- vkGetDeviceProc @VkUnmapMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myUnmapMemory <- vkGetProc @VkUnmapMemory
+--
+-- __Note:__ @vkUnmapMemoryUnsafe@ and @vkUnmapMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUnmapMemory@ is an alias
+--           of @vkUnmapMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUnmapMemorySafe@.
+--
+vkUnmapMemory :: VkDevice -- ^ device
+                          -> VkDeviceMemory -- ^ memory
+                                            -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkUnmapMemory = vkUnmapMemoryUnsafe
+##else
+vkUnmapMemory = vkUnmapMemorySafe
+
+##endif
+{-# INLINE vkUnmapMemory #-}
+
+-- | > void vkUnmapMemory
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUnmapMemory vkUnmapMemory registry at www.khronos.org>
+type HS_vkUnmapMemory = VkDevice -- ^ device
+                                 -> VkDeviceMemory -- ^ memory
+                                                   -> IO ()
+
+type PFN_vkUnmapMemory = FunPtr HS_vkUnmapMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkUnmapMemoryUnsafe ::
+               PFN_vkUnmapMemory -> HS_vkUnmapMemory
+
+foreign import ccall safe "dynamic" unwrapVkUnmapMemorySafe ::
+               PFN_vkUnmapMemory -> HS_vkUnmapMemory
+
+instance VulkanProc "vkUnmapMemory" where
+    type VkProcType "vkUnmapMemory" = HS_vkUnmapMemory
+    vkProcSymbol = _VkUnmapMemory
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkUnmapMemoryUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkUnmapMemorySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFlushMappedMemoryRanges :: CString
+
+pattern VkFlushMappedMemoryRanges <-
+        (is_VkFlushMappedMemoryRanges -> True)
+  where
+    VkFlushMappedMemoryRanges = _VkFlushMappedMemoryRanges
+
+{-# INLINE _VkFlushMappedMemoryRanges #-}
+
+_VkFlushMappedMemoryRanges :: CString
+_VkFlushMappedMemoryRanges = Ptr "vkFlushMappedMemoryRanges\NUL"##
+
+{-# INLINE is_VkFlushMappedMemoryRanges #-}
+
+is_VkFlushMappedMemoryRanges :: CString -> Bool
+is_VkFlushMappedMemoryRanges
+  = (EQ ==) . cmpCStrings _VkFlushMappedMemoryRanges
+
+type VkFlushMappedMemoryRanges = "vkFlushMappedMemoryRanges"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFlushMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
+--
+-- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
+--           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFlushMappedMemoryRanges"
+               vkFlushMappedMemoryRangesUnsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkFlushMappedMemoryRangesUnsafe ::
+                                VkDevice -- ^ device
+                                         -> Word32 -- ^ memoryRangeCount
+                                                   -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                              -> IO VkResult
+vkFlushMappedMemoryRangesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkFlushMappedMemoryRanges)
+
+{-# NOINLINE vkFlushMappedMemoryRangesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFlushMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
+--
+-- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
+--           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFlushMappedMemoryRanges"
+               vkFlushMappedMemoryRangesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkFlushMappedMemoryRangesSafe ::
+                              VkDevice -- ^ device
+                                       -> Word32 -- ^ memoryRangeCount
+                                                 -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                            -> IO VkResult
+vkFlushMappedMemoryRangesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFlushMappedMemoryRanges)
+
+{-# NOINLINE vkFlushMappedMemoryRangesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFlushMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFlushMappedMemoryRanges <- vkGetDeviceProc @VkFlushMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myFlushMappedMemoryRanges <- vkGetProc @VkFlushMappedMemoryRanges
+--
+-- __Note:__ @vkFlushMappedMemoryRangesUnsafe@ and @vkFlushMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFlushMappedMemoryRanges@ is an alias
+--           of @vkFlushMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFlushMappedMemoryRangesSafe@.
+--
+vkFlushMappedMemoryRanges ::
+                          VkDevice -- ^ device
+                                   -> Word32 -- ^ memoryRangeCount
+                                             -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                        -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkFlushMappedMemoryRanges = vkFlushMappedMemoryRangesUnsafe
+##else
+vkFlushMappedMemoryRanges = vkFlushMappedMemoryRangesSafe
+
+##endif
+{-# INLINE vkFlushMappedMemoryRanges #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkFlushMappedMemoryRanges
+--   >     ( VkDevice device
+--   >     , uint32_t memoryRangeCount
+--   >     , const VkMappedMemoryRange* pMemoryRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges registry at www.khronos.org>
+type HS_vkFlushMappedMemoryRanges =
+     VkDevice -- ^ device
+              -> Word32 -- ^ memoryRangeCount
+                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                   -> IO VkResult
+
+type PFN_vkFlushMappedMemoryRanges =
+     FunPtr HS_vkFlushMappedMemoryRanges
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkFlushMappedMemoryRangesUnsafe ::
+               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
+
+foreign import ccall safe "dynamic"
+               unwrapVkFlushMappedMemoryRangesSafe ::
+               PFN_vkFlushMappedMemoryRanges -> HS_vkFlushMappedMemoryRanges
+
+instance VulkanProc "vkFlushMappedMemoryRanges" where
+    type VkProcType "vkFlushMappedMemoryRanges" =
+         HS_vkFlushMappedMemoryRanges
+    vkProcSymbol = _VkFlushMappedMemoryRanges
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkFlushMappedMemoryRangesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkFlushMappedMemoryRangesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkInvalidateMappedMemoryRanges :: CString
+
+pattern VkInvalidateMappedMemoryRanges <-
+        (is_VkInvalidateMappedMemoryRanges -> True)
+  where
+    VkInvalidateMappedMemoryRanges = _VkInvalidateMappedMemoryRanges
+
+{-# INLINE _VkInvalidateMappedMemoryRanges #-}
+
+_VkInvalidateMappedMemoryRanges :: CString
+_VkInvalidateMappedMemoryRanges
+  = Ptr "vkInvalidateMappedMemoryRanges\NUL"##
+
+{-# INLINE is_VkInvalidateMappedMemoryRanges #-}
+
+is_VkInvalidateMappedMemoryRanges :: CString -> Bool
+is_VkInvalidateMappedMemoryRanges
+  = (EQ ==) . cmpCStrings _VkInvalidateMappedMemoryRanges
+
+type VkInvalidateMappedMemoryRanges =
+     "vkInvalidateMappedMemoryRanges"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkInvalidateMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
+--
+-- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
+--           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkInvalidateMappedMemoryRanges"
+               vkInvalidateMappedMemoryRangesUnsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkInvalidateMappedMemoryRangesUnsafe ::
+                                     VkDevice -- ^ device
+                                              -> Word32 -- ^ memoryRangeCount
+                                                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                                   -> IO VkResult
+vkInvalidateMappedMemoryRangesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkInvalidateMappedMemoryRanges)
+
+{-# NOINLINE vkInvalidateMappedMemoryRangesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkInvalidateMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
+--
+-- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
+--           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkInvalidateMappedMemoryRanges"
+               vkInvalidateMappedMemoryRangesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ memoryRangeCount
+                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                             -> IO VkResult
+
+##else
+vkInvalidateMappedMemoryRangesSafe ::
+                                   VkDevice -- ^ device
+                                            -> Word32 -- ^ memoryRangeCount
+                                                      -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                                 -> IO VkResult
+vkInvalidateMappedMemoryRangesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkInvalidateMappedMemoryRanges)
+
+{-# NOINLINE vkInvalidateMappedMemoryRangesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkInvalidateMappedMemoryRanges
+-- >     ( VkDevice device
+-- >     , uint32_t memoryRangeCount
+-- >     , const VkMappedMemoryRange* pMemoryRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetDeviceProc @VkInvalidateMappedMemoryRanges vkDevice
+--
+-- or less efficient:
+--
+-- > myInvalidateMappedMemoryRanges <- vkGetProc @VkInvalidateMappedMemoryRanges
+--
+-- __Note:__ @vkInvalidateMappedMemoryRangesUnsafe@ and @vkInvalidateMappedMemoryRangesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkInvalidateMappedMemoryRanges@ is an alias
+--           of @vkInvalidateMappedMemoryRangesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkInvalidateMappedMemoryRangesSafe@.
+--
+vkInvalidateMappedMemoryRanges ::
+                               VkDevice -- ^ device
+                                        -> Word32 -- ^ memoryRangeCount
+                                                  -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkInvalidateMappedMemoryRanges
+  = vkInvalidateMappedMemoryRangesUnsafe
+##else
+vkInvalidateMappedMemoryRanges = vkInvalidateMappedMemoryRangesSafe
+
+##endif
+{-# INLINE vkInvalidateMappedMemoryRanges #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkInvalidateMappedMemoryRanges
+--   >     ( VkDevice device
+--   >     , uint32_t memoryRangeCount
+--   >     , const VkMappedMemoryRange* pMemoryRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges registry at www.khronos.org>
+type HS_vkInvalidateMappedMemoryRanges =
+     VkDevice -- ^ device
+              -> Word32 -- ^ memoryRangeCount
+                        -> Ptr VkMappedMemoryRange -- ^ pMemoryRanges
+                                                   -> IO VkResult
+
+type PFN_vkInvalidateMappedMemoryRanges =
+     FunPtr HS_vkInvalidateMappedMemoryRanges
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkInvalidateMappedMemoryRangesUnsafe ::
+               PFN_vkInvalidateMappedMemoryRanges ->
+                 HS_vkInvalidateMappedMemoryRanges
+
+foreign import ccall safe "dynamic"
+               unwrapVkInvalidateMappedMemoryRangesSafe ::
+               PFN_vkInvalidateMappedMemoryRanges ->
+                 HS_vkInvalidateMappedMemoryRanges
+
+instance VulkanProc "vkInvalidateMappedMemoryRanges" where
+    type VkProcType "vkInvalidateMappedMemoryRanges" =
+         HS_vkInvalidateMappedMemoryRanges
+    vkProcSymbol = _VkInvalidateMappedMemoryRanges
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkInvalidateMappedMemoryRangesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkInvalidateMappedMemoryRangesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetDeviceMemoryCommitment :: CString
+
+pattern VkGetDeviceMemoryCommitment <-
+        (is_VkGetDeviceMemoryCommitment -> True)
+  where
+    VkGetDeviceMemoryCommitment = _VkGetDeviceMemoryCommitment
+
+{-# INLINE _VkGetDeviceMemoryCommitment #-}
+
+_VkGetDeviceMemoryCommitment :: CString
+_VkGetDeviceMemoryCommitment
+  = Ptr "vkGetDeviceMemoryCommitment\NUL"##
+
+{-# INLINE is_VkGetDeviceMemoryCommitment #-}
+
+is_VkGetDeviceMemoryCommitment :: CString -> Bool
+is_VkGetDeviceMemoryCommitment
+  = (EQ ==) . cmpCStrings _VkGetDeviceMemoryCommitment
+
+type VkGetDeviceMemoryCommitment = "vkGetDeviceMemoryCommitment"
+
+-- |
+-- > void vkGetDeviceMemoryCommitment
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize* pCommittedMemoryInBytes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
+--
+-- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
+--           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetDeviceMemoryCommitment"
+               vkGetDeviceMemoryCommitmentUnsafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                              -> IO ()
+
+##else
+vkGetDeviceMemoryCommitmentUnsafe ::
+                                  VkDevice -- ^ device
+                                           -> VkDeviceMemory -- ^ memory
+                                                             -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                                                 -> IO ()
+vkGetDeviceMemoryCommitmentUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetDeviceMemoryCommitment)
+
+{-# NOINLINE vkGetDeviceMemoryCommitmentUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetDeviceMemoryCommitment
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize* pCommittedMemoryInBytes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
+--
+-- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
+--           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetDeviceMemoryCommitment"
+               vkGetDeviceMemoryCommitmentSafe ::
+               VkDevice -- ^ device
+                        -> VkDeviceMemory -- ^ memory
+                                          -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                              -> IO ()
+
+##else
+vkGetDeviceMemoryCommitmentSafe ::
+                                VkDevice -- ^ device
+                                         -> VkDeviceMemory -- ^ memory
+                                                           -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                                               -> IO ()
+vkGetDeviceMemoryCommitmentSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDeviceMemoryCommitment)
+
+{-# NOINLINE vkGetDeviceMemoryCommitmentSafe #-}
+##endif
+
+-- |
+-- > void vkGetDeviceMemoryCommitment
+-- >     ( VkDevice device
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize* pCommittedMemoryInBytes
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetDeviceProc @VkGetDeviceMemoryCommitment vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceMemoryCommitment <- vkGetProc @VkGetDeviceMemoryCommitment
+--
+-- __Note:__ @vkGetDeviceMemoryCommitmentUnsafe@ and @vkGetDeviceMemoryCommitmentSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceMemoryCommitment@ is an alias
+--           of @vkGetDeviceMemoryCommitmentUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceMemoryCommitmentSafe@.
+--
+vkGetDeviceMemoryCommitment ::
+                            VkDevice -- ^ device
+                                     -> VkDeviceMemory -- ^ memory
+                                                       -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceMemoryCommitment = vkGetDeviceMemoryCommitmentUnsafe
+##else
+vkGetDeviceMemoryCommitment = vkGetDeviceMemoryCommitmentSafe
+
+##endif
+{-# INLINE vkGetDeviceMemoryCommitment #-}
+
+-- | > void vkGetDeviceMemoryCommitment
+--   >     ( VkDevice device
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize* pCommittedMemoryInBytes
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment registry at www.khronos.org>
+type HS_vkGetDeviceMemoryCommitment =
+     VkDevice -- ^ device
+              -> VkDeviceMemory -- ^ memory
+                                -> Ptr VkDeviceSize -- ^ pCommittedMemoryInBytes
+                                                    -> IO ()
+
+type PFN_vkGetDeviceMemoryCommitment =
+     FunPtr HS_vkGetDeviceMemoryCommitment
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDeviceMemoryCommitmentUnsafe ::
+               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceMemoryCommitmentSafe ::
+               PFN_vkGetDeviceMemoryCommitment -> HS_vkGetDeviceMemoryCommitment
+
+instance VulkanProc "vkGetDeviceMemoryCommitment" where
+    type VkProcType "vkGetDeviceMemoryCommitment" =
+         HS_vkGetDeviceMemoryCommitment
+    vkProcSymbol = _VkGetDeviceMemoryCommitment
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetDeviceMemoryCommitmentUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDeviceMemoryCommitmentSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindBufferMemory :: CString
+
+pattern VkBindBufferMemory <- (is_VkBindBufferMemory -> True)
+  where
+    VkBindBufferMemory = _VkBindBufferMemory
+
+{-# INLINE _VkBindBufferMemory #-}
+
+_VkBindBufferMemory :: CString
+_VkBindBufferMemory = Ptr "vkBindBufferMemory\NUL"##
+
+{-# INLINE is_VkBindBufferMemory #-}
+
+is_VkBindBufferMemory :: CString -> Bool
+is_VkBindBufferMemory = (EQ ==) . cmpCStrings _VkBindBufferMemory
+
+type VkBindBufferMemory = "vkBindBufferMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
+--
+-- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
+--           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBindBufferMemory"
+               vkBindBufferMemoryUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceMemory -- ^ memory
+                                            -> VkDeviceSize -- ^ memoryOffset
+                                                            -> IO VkResult
+
+##else
+vkBindBufferMemoryUnsafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           VkBuffer -- ^ buffer
+                                    -> VkDeviceMemory -- ^ memory
+                                                      -> VkDeviceSize -- ^ memoryOffset
+                                                                      -> IO VkResult
+vkBindBufferMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindBufferMemory)
+
+{-# NOINLINE vkBindBufferMemoryUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
+--
+-- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
+--           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBindBufferMemory"
+               vkBindBufferMemorySafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceMemory -- ^ memory
+                                            -> VkDeviceSize -- ^ memoryOffset
+                                                            -> IO VkResult
+
+##else
+vkBindBufferMemorySafe ::
+                       VkDevice -- ^ device
+                                ->
+                         VkBuffer -- ^ buffer
+                                  -> VkDeviceMemory -- ^ memory
+                                                    -> VkDeviceSize -- ^ memoryOffset
+                                                                    -> IO VkResult
+vkBindBufferMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory)
+
+{-# NOINLINE vkBindBufferMemorySafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory <- vkGetDeviceProc @VkBindBufferMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory <- vkGetProc @VkBindBufferMemory
+--
+-- __Note:__ @vkBindBufferMemoryUnsafe@ and @vkBindBufferMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory@ is an alias
+--           of @vkBindBufferMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemorySafe@.
+--
+vkBindBufferMemory ::
+                   VkDevice -- ^ device
+                            ->
+                     VkBuffer -- ^ buffer
+                              -> VkDeviceMemory -- ^ memory
+                                                -> VkDeviceSize -- ^ memoryOffset
+                                                                -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkBindBufferMemory = vkBindBufferMemoryUnsafe
+##else
+vkBindBufferMemory = vkBindBufferMemorySafe
+
+##endif
+{-# INLINE vkBindBufferMemory #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindBufferMemory
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize memoryOffset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory vkBindBufferMemory registry at www.khronos.org>
+type HS_vkBindBufferMemory =
+     VkDevice -- ^ device
+              ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceMemory -- ^ memory
+                                  -> VkDeviceSize -- ^ memoryOffset
+                                                  -> IO VkResult
+
+type PFN_vkBindBufferMemory = FunPtr HS_vkBindBufferMemory
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkBindBufferMemoryUnsafe ::
+               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
+
+foreign import ccall safe "dynamic" unwrapVkBindBufferMemorySafe ::
+               PFN_vkBindBufferMemory -> HS_vkBindBufferMemory
+
+instance VulkanProc "vkBindBufferMemory" where
+    type VkProcType "vkBindBufferMemory" = HS_vkBindBufferMemory
+    vkProcSymbol = _VkBindBufferMemory
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemoryUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkBindBufferMemorySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindImageMemory :: CString
+
+pattern VkBindImageMemory <- (is_VkBindImageMemory -> True)
+  where
+    VkBindImageMemory = _VkBindImageMemory
+
+{-# INLINE _VkBindImageMemory #-}
+
+_VkBindImageMemory :: CString
+_VkBindImageMemory = Ptr "vkBindImageMemory\NUL"##
+
+{-# INLINE is_VkBindImageMemory #-}
+
+is_VkBindImageMemory :: CString -> Bool
+is_VkBindImageMemory = (EQ ==) . cmpCStrings _VkBindImageMemory
+
+type VkBindImageMemory = "vkBindImageMemory"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory <- vkGetProc @VkBindImageMemory
+--
+-- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
+--           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBindImageMemory"
+               vkBindImageMemoryUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         -> VkDeviceMemory -- ^ memory
+                                           -> VkDeviceSize -- ^ memoryOffset
+                                                           -> IO VkResult
+
+##else
+vkBindImageMemoryUnsafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          VkImage -- ^ image
+                                  -> VkDeviceMemory -- ^ memory
+                                                    -> VkDeviceSize -- ^ memoryOffset
+                                                                    -> IO VkResult
+vkBindImageMemoryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindImageMemory)
+
+{-# NOINLINE vkBindImageMemoryUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory <- vkGetProc @VkBindImageMemory
+--
+-- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
+--           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBindImageMemory" vkBindImageMemorySafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         -> VkDeviceMemory -- ^ memory
+                                           -> VkDeviceSize -- ^ memoryOffset
+                                                           -> IO VkResult
+
+##else
+vkBindImageMemorySafe ::
+                      VkDevice -- ^ device
+                               ->
+                        VkImage -- ^ image
+                                -> VkDeviceMemory -- ^ memory
+                                                  -> VkDeviceSize -- ^ memoryOffset
+                                                                  -> IO VkResult
+vkBindImageMemorySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory)
+
+{-# NOINLINE vkBindImageMemorySafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkDeviceMemory memory
+-- >     , VkDeviceSize memoryOffset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory <- vkGetDeviceProc @VkBindImageMemory vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory <- vkGetProc @VkBindImageMemory
+--
+-- __Note:__ @vkBindImageMemoryUnsafe@ and @vkBindImageMemorySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory@ is an alias
+--           of @vkBindImageMemoryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemorySafe@.
+--
+vkBindImageMemory ::
+                  VkDevice -- ^ device
+                           ->
+                    VkImage -- ^ image
+                            -> VkDeviceMemory -- ^ memory
+                                              -> VkDeviceSize -- ^ memoryOffset
+                                                              -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkBindImageMemory = vkBindImageMemoryUnsafe
+##else
+vkBindImageMemory = vkBindImageMemorySafe
+
+##endif
+{-# INLINE vkBindImageMemory #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindImageMemory
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , VkDeviceMemory memory
+--   >     , VkDeviceSize memoryOffset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory vkBindImageMemory registry at www.khronos.org>
+type HS_vkBindImageMemory =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               -> VkDeviceMemory -- ^ memory
+                                 -> VkDeviceSize -- ^ memoryOffset
+                                                 -> IO VkResult
+
+type PFN_vkBindImageMemory = FunPtr HS_vkBindImageMemory
+
+foreign import ccall unsafe "dynamic" unwrapVkBindImageMemoryUnsafe
+               :: PFN_vkBindImageMemory -> HS_vkBindImageMemory
+
+foreign import ccall safe "dynamic" unwrapVkBindImageMemorySafe ::
+               PFN_vkBindImageMemory -> HS_vkBindImageMemory
+
+instance VulkanProc "vkBindImageMemory" where
+    type VkProcType "vkBindImageMemory" = HS_vkBindImageMemory
+    vkProcSymbol = _VkBindImageMemory
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkBindImageMemoryUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkBindImageMemorySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetBufferMemoryRequirements :: CString
+
+pattern VkGetBufferMemoryRequirements <-
+        (is_VkGetBufferMemoryRequirements -> True)
+  where
+    VkGetBufferMemoryRequirements = _VkGetBufferMemoryRequirements
+
+{-# INLINE _VkGetBufferMemoryRequirements #-}
+
+_VkGetBufferMemoryRequirements :: CString
+_VkGetBufferMemoryRequirements
+  = Ptr "vkGetBufferMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetBufferMemoryRequirements #-}
+
+is_VkGetBufferMemoryRequirements :: CString -> Bool
+is_VkGetBufferMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements
+
+type VkGetBufferMemoryRequirements =
+     "vkGetBufferMemoryRequirements"
+
+-- |
+-- > void vkGetBufferMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
+--
+-- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
+--           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetBufferMemoryRequirements"
+               vkGetBufferMemoryRequirementsUnsafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                -> IO ()
+
+##else
+vkGetBufferMemoryRequirementsUnsafe ::
+                                    VkDevice -- ^ device
+                                             -> VkBuffer -- ^ buffer
+                                                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                     -> IO ()
+vkGetBufferMemoryRequirementsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetBufferMemoryRequirements)
+
+{-# NOINLINE vkGetBufferMemoryRequirementsUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
+--
+-- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
+--           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetBufferMemoryRequirements"
+               vkGetBufferMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                -> IO ()
+
+##else
+vkGetBufferMemoryRequirementsSafe ::
+                                  VkDevice -- ^ device
+                                           -> VkBuffer -- ^ buffer
+                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                   -> IO ()
+vkGetBufferMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetBufferMemoryRequirements)
+
+{-# NOINLINE vkGetBufferMemoryRequirementsSafe #-}
+##endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements <- vkGetDeviceProc @VkGetBufferMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements <- vkGetProc @VkGetBufferMemoryRequirements
+--
+-- __Note:__ @vkGetBufferMemoryRequirementsUnsafe@ and @vkGetBufferMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements@ is an alias
+--           of @vkGetBufferMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirementsSafe@.
+--
+vkGetBufferMemoryRequirements ::
+                              VkDevice -- ^ device
+                                       -> VkBuffer -- ^ buffer
+                                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                               -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirementsUnsafe
+##else
+vkGetBufferMemoryRequirements = vkGetBufferMemoryRequirementsSafe
+
+##endif
+{-# INLINE vkGetBufferMemoryRequirements #-}
+
+-- | > void vkGetBufferMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements registry at www.khronos.org>
+type HS_vkGetBufferMemoryRequirements =
+     VkDevice -- ^ device
+              -> VkBuffer -- ^ buffer
+                          -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                      -> IO ()
+
+type PFN_vkGetBufferMemoryRequirements =
+     FunPtr HS_vkGetBufferMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetBufferMemoryRequirementsUnsafe ::
+               PFN_vkGetBufferMemoryRequirements ->
+                 HS_vkGetBufferMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetBufferMemoryRequirementsSafe ::
+               PFN_vkGetBufferMemoryRequirements ->
+                 HS_vkGetBufferMemoryRequirements
+
+instance VulkanProc "vkGetBufferMemoryRequirements" where
+    type VkProcType "vkGetBufferMemoryRequirements" =
+         HS_vkGetBufferMemoryRequirements
+    vkProcSymbol = _VkGetBufferMemoryRequirements
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetBufferMemoryRequirementsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirementsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageMemoryRequirements :: CString
+
+pattern VkGetImageMemoryRequirements <-
+        (is_VkGetImageMemoryRequirements -> True)
+  where
+    VkGetImageMemoryRequirements = _VkGetImageMemoryRequirements
+
+{-# INLINE _VkGetImageMemoryRequirements #-}
+
+_VkGetImageMemoryRequirements :: CString
+_VkGetImageMemoryRequirements
+  = Ptr "vkGetImageMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetImageMemoryRequirements #-}
+
+is_VkGetImageMemoryRequirements :: CString -> Bool
+is_VkGetImageMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements
+
+type VkGetImageMemoryRequirements = "vkGetImageMemoryRequirements"
+
+-- |
+-- > void vkGetImageMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
+--
+-- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
+--           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageMemoryRequirements"
+               vkGetImageMemoryRequirementsUnsafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                               -> IO ()
+
+##else
+vkGetImageMemoryRequirementsUnsafe ::
+                                   VkDevice -- ^ device
+                                            -> VkImage -- ^ image
+                                                       -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                   -> IO ()
+vkGetImageMemoryRequirementsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageMemoryRequirements)
+
+{-# NOINLINE vkGetImageMemoryRequirementsUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetImageMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
+--
+-- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
+--           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageMemoryRequirements"
+               vkGetImageMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                               -> IO ()
+
+##else
+vkGetImageMemoryRequirementsSafe ::
+                                 VkDevice -- ^ device
+                                          -> VkImage -- ^ image
+                                                     -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                                 -> IO ()
+vkGetImageMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageMemoryRequirements)
+
+{-# NOINLINE vkGetImageMemoryRequirementsSafe #-}
+##endif
+
+-- |
+-- > void vkGetImageMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , VkMemoryRequirements* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements <- vkGetDeviceProc @VkGetImageMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements <- vkGetProc @VkGetImageMemoryRequirements
+--
+-- __Note:__ @vkGetImageMemoryRequirementsUnsafe@ and @vkGetImageMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements@ is an alias
+--           of @vkGetImageMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirementsSafe@.
+--
+vkGetImageMemoryRequirements ::
+                             VkDevice -- ^ device
+                                      -> VkImage -- ^ image
+                                                 -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                                             -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetImageMemoryRequirements = vkGetImageMemoryRequirementsUnsafe
+##else
+vkGetImageMemoryRequirements = vkGetImageMemoryRequirementsSafe
+
+##endif
+{-# INLINE vkGetImageMemoryRequirements #-}
+
+-- | > void vkGetImageMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , VkMemoryRequirements* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements vkGetImageMemoryRequirements registry at www.khronos.org>
+type HS_vkGetImageMemoryRequirements =
+     VkDevice -- ^ device
+              -> VkImage -- ^ image
+                         -> Ptr VkMemoryRequirements -- ^ pMemoryRequirements
+                                                     -> IO ()
+
+type PFN_vkGetImageMemoryRequirements =
+     FunPtr HS_vkGetImageMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageMemoryRequirementsUnsafe ::
+               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageMemoryRequirementsSafe ::
+               PFN_vkGetImageMemoryRequirements -> HS_vkGetImageMemoryRequirements
+
+instance VulkanProc "vkGetImageMemoryRequirements" where
+    type VkProcType "vkGetImageMemoryRequirements" =
+         HS_vkGetImageMemoryRequirements
+    vkProcSymbol = _VkGetImageMemoryRequirements
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetImageMemoryRequirementsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirementsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSparseMemoryRequirements :: CString
+
+pattern VkGetImageSparseMemoryRequirements <-
+        (is_VkGetImageSparseMemoryRequirements -> True)
+  where
+    VkGetImageSparseMemoryRequirements
+      = _VkGetImageSparseMemoryRequirements
+
+{-# INLINE _VkGetImageSparseMemoryRequirements #-}
+
+_VkGetImageSparseMemoryRequirements :: CString
+_VkGetImageSparseMemoryRequirements
+  = Ptr "vkGetImageSparseMemoryRequirements\NUL"##
+
+{-# INLINE is_VkGetImageSparseMemoryRequirements #-}
+
+is_VkGetImageSparseMemoryRequirements :: CString -> Bool
+is_VkGetImageSparseMemoryRequirements
+  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements
+
+type VkGetImageSparseMemoryRequirements =
+     "vkGetImageSparseMemoryRequirements"
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
+--           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements"
+               vkGetImageSparseMemoryRequirementsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                     -> IO ()
+
+##else
+vkGetImageSparseMemoryRequirementsUnsafe ::
+                                         VkDevice -- ^ device
+                                                  ->
+                                           VkImage -- ^ image
+                                                   ->
+                                             Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                        ->
+                                               Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                                   -> IO ()
+vkGetImageSparseMemoryRequirementsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageSparseMemoryRequirements)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirementsUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
+--           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageSparseMemoryRequirements"
+               vkGetImageSparseMemoryRequirementsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                     -> IO ()
+
+##else
+vkGetImageSparseMemoryRequirementsSafe ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         VkImage -- ^ image
+                                                 ->
+                                           Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                      ->
+                                             Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                                 -> IO ()
+vkGetImageSparseMemoryRequirementsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSparseMemoryRequirements)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirementsSafe #-}
+##endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements <- vkGetProc @VkGetImageSparseMemoryRequirements
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirementsUnsafe@ and @vkGetImageSparseMemoryRequirementsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements@ is an alias
+--           of @vkGetImageSparseMemoryRequirementsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirementsSafe@.
+--
+vkGetImageSparseMemoryRequirements ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     VkImage -- ^ image
+                                             ->
+                                       Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                  -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetImageSparseMemoryRequirements
+  = vkGetImageSparseMemoryRequirementsUnsafe
+##else
+vkGetImageSparseMemoryRequirements
+  = vkGetImageSparseMemoryRequirementsSafe
+
+##endif
+{-# INLINE vkGetImageSparseMemoryRequirements #-}
+
+-- | > void vkGetImageSparseMemoryRequirements
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements registry at www.khronos.org>
+type HS_vkGetImageSparseMemoryRequirements =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               ->
+         Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                    -> Ptr VkSparseImageMemoryRequirements -- ^ pSparseMemoryRequirements
+                                                           -> IO ()
+
+type PFN_vkGetImageSparseMemoryRequirements =
+     FunPtr HS_vkGetImageSparseMemoryRequirements
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirementsUnsafe ::
+               PFN_vkGetImageSparseMemoryRequirements ->
+                 HS_vkGetImageSparseMemoryRequirements
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirementsSafe ::
+               PFN_vkGetImageSparseMemoryRequirements ->
+                 HS_vkGetImageSparseMemoryRequirements
+
+instance VulkanProc "vkGetImageSparseMemoryRequirements" where
+    type VkProcType "vkGetImageSparseMemoryRequirements" =
+         HS_vkGetImageSparseMemoryRequirements
+    vkProcSymbol = _VkGetImageSparseMemoryRequirements
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetImageSparseMemoryRequirementsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirementsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties :: CString
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties <-
+        (is_VkGetPhysicalDeviceSparseImageFormatProperties -> True)
+  where
+    VkGetPhysicalDeviceSparseImageFormatProperties
+      = _VkGetPhysicalDeviceSparseImageFormatProperties
+
+{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties #-}
+
+_VkGetPhysicalDeviceSparseImageFormatProperties :: CString
+_VkGetPhysicalDeviceSparseImageFormatProperties
+  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties\NUL"##
+
+{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties #-}
+
+is_VkGetPhysicalDeviceSparseImageFormatProperties ::
+                                                  CString -> Bool
+is_VkGetPhysicalDeviceSparseImageFormatProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties
+
+type VkGetPhysicalDeviceSparseImageFormatProperties =
+     "vkGetPhysicalDeviceSparseImageFormatProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkSampleCountFlagBits samples
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageTiling tiling
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceSparseImageFormatProperties"
+               vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkSampleCountFlagBits -- ^ samples
+                                           ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageTiling -- ^ tiling
+                                       ->
+                           Ptr Word32 -- ^ pPropertyCount
+                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
+                                                     VkPhysicalDevice -- ^ physicalDevice
+                                                                      ->
+                                                       VkFormat -- ^ format
+                                                                ->
+                                                         VkImageType -- ^ type
+                                                                     ->
+                                                           VkSampleCountFlagBits -- ^ samples
+                                                                                 ->
+                                                             VkImageUsageFlags -- ^ usage
+                                                                               ->
+                                                               VkImageTiling -- ^ tiling
+                                                                             ->
+                                                                 Ptr Word32 -- ^ pPropertyCount
+                                                                            ->
+                                                                   Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                     -> IO ()
+vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceSparseImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
+             #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkSampleCountFlagBits samples
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageTiling tiling
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe
+               "vkGetPhysicalDeviceSparseImageFormatProperties"
+               vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 VkFormat -- ^ format
+                          ->
+                   VkImageType -- ^ type
+                               ->
+                     VkSampleCountFlagBits -- ^ samples
+                                           ->
+                       VkImageUsageFlags -- ^ usage
+                                         ->
+                         VkImageTiling -- ^ tiling
+                                       ->
+                           Ptr Word32 -- ^ pPropertyCount
+                                      -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                           -> IO ()
+
+##else
+vkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     VkFormat -- ^ format
+                                                              ->
+                                                       VkImageType -- ^ type
+                                                                   ->
+                                                         VkSampleCountFlagBits -- ^ samples
+                                                                               ->
+                                                           VkImageUsageFlags -- ^ usage
+                                                                             ->
+                                                             VkImageTiling -- ^ tiling
+                                                                           ->
+                                                               Ptr Word32 -- ^ pPropertyCount
+                                                                          ->
+                                                                 Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                   -> IO ()
+vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatPropertiesSafe #-}
+##endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkImageType type
+-- >     , VkSampleCountFlagBits samples
+-- >     , VkImageUsageFlags usage
+-- >     , VkImageTiling tiling
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ and @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatPropertiesSafe@.
+--
+vkGetPhysicalDeviceSparseImageFormatProperties ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 VkFormat -- ^ format
+                                                          ->
+                                                   VkImageType -- ^ type
+                                                               ->
+                                                     VkSampleCountFlagBits -- ^ samples
+                                                                           ->
+                                                       VkImageUsageFlags -- ^ usage
+                                                                         ->
+                                                         VkImageTiling -- ^ tiling
+                                                                       ->
+                                                           Ptr Word32 -- ^ pPropertyCount
+                                                                      ->
+                                                             Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                                               ->
+                                                               IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceSparseImageFormatProperties
+  = vkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
+##else
+vkGetPhysicalDeviceSparseImageFormatProperties
+  = vkGetPhysicalDeviceSparseImageFormatPropertiesSafe
+
+##endif
+{-# INLINE vkGetPhysicalDeviceSparseImageFormatProperties #-}
+
+-- | > void vkGetPhysicalDeviceSparseImageFormatProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkImageType type
+--   >     , VkSampleCountFlagBits samples
+--   >     , VkImageUsageFlags usage
+--   >     , VkImageTiling tiling
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceSparseImageFormatProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       VkFormat -- ^ format
+                ->
+         VkImageType -- ^ type
+                     ->
+           VkSampleCountFlagBits -- ^ samples
+                                 ->
+             VkImageUsageFlags -- ^ usage
+                               ->
+               VkImageTiling -- ^ tiling
+                             ->
+                 Ptr Word32 -- ^ pPropertyCount
+                            -> Ptr VkSparseImageFormatProperties -- ^ pProperties
+                                                                 -> IO ()
+
+type PFN_vkGetPhysicalDeviceSparseImageFormatProperties =
+     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties
+
+instance VulkanProc
+           "vkGetPhysicalDeviceSparseImageFormatProperties"
+         where
+    type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties" =
+         HS_vkGetPhysicalDeviceSparseImageFormatProperties
+    vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSparseImageFormatPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkQueueBindSparse :: CString
+
+pattern VkQueueBindSparse <- (is_VkQueueBindSparse -> True)
+  where
+    VkQueueBindSparse = _VkQueueBindSparse
+
+{-# INLINE _VkQueueBindSparse #-}
+
+_VkQueueBindSparse :: CString
+_VkQueueBindSparse = Ptr "vkQueueBindSparse\NUL"##
+
+{-# INLINE is_VkQueueBindSparse #-}
+
+is_VkQueueBindSparse :: CString -> Bool
+is_VkQueueBindSparse = (EQ ==) . cmpCStrings _VkQueueBindSparse
+
+type VkQueueBindSparse = "vkQueueBindSparse"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- Queues: 'sparse_binding'.
+--
+-- > VkResult vkQueueBindSparse
+-- >     ( VkQueue queue
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindSparseInfo* pBindInfo
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
+--
+-- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
+--           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkQueueBindSparse"
+               vkQueueBindSparseUnsafe ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ bindInfoCount
+                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                         -> VkFence -- ^ fence
+                                                                    -> IO VkResult
+
+##else
+vkQueueBindSparseUnsafe ::
+                        VkQueue -- ^ queue
+                                -> Word32 -- ^ bindInfoCount
+                                          -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                                  -> VkFence -- ^ fence
+                                                                             -> IO VkResult
+vkQueueBindSparseUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkQueueBindSparse)
+
+{-# NOINLINE vkQueueBindSparseUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- Queues: 'sparse_binding'.
+--
+-- > VkResult vkQueueBindSparse
+-- >     ( VkQueue queue
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindSparseInfo* pBindInfo
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
+--
+-- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
+--           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkQueueBindSparse" vkQueueBindSparseSafe
+               ::
+               VkQueue -- ^ queue
+                       -> Word32 -- ^ bindInfoCount
+                                 -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                         -> VkFence -- ^ fence
+                                                                    -> IO VkResult
+
+##else
+vkQueueBindSparseSafe ::
+                      VkQueue -- ^ queue
+                              -> Word32 -- ^ bindInfoCount
+                                        -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                                -> VkFence -- ^ fence
+                                                                           -> IO VkResult
+vkQueueBindSparseSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkQueueBindSparse)
+
+{-# NOINLINE vkQueueBindSparseSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- Queues: 'sparse_binding'.
+--
+-- > VkResult vkQueueBindSparse
+-- >     ( VkQueue queue
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindSparseInfo* pBindInfo
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myQueueBindSparse <- vkGetInstanceProc @VkQueueBindSparse vkInstance
+--
+-- or less efficient:
+--
+-- > myQueueBindSparse <- vkGetProc @VkQueueBindSparse
+--
+-- __Note:__ @vkQueueBindSparseUnsafe@ and @vkQueueBindSparseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkQueueBindSparse@ is an alias
+--           of @vkQueueBindSparseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkQueueBindSparseSafe@.
+--
+vkQueueBindSparse ::
+                  VkQueue -- ^ queue
+                          -> Word32 -- ^ bindInfoCount
+                                    -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                                            -> VkFence -- ^ fence
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkQueueBindSparse = vkQueueBindSparseUnsafe
+##else
+vkQueueBindSparse = vkQueueBindSparseSafe
+
+##endif
+{-# INLINE vkQueueBindSparse #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   Queues: 'sparse_binding'.
+--
+--   > VkResult vkQueueBindSparse
+--   >     ( VkQueue queue
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindSparseInfo* pBindInfo
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkQueueBindSparse vkQueueBindSparse registry at www.khronos.org>
+type HS_vkQueueBindSparse =
+     VkQueue -- ^ queue
+             -> Word32 -- ^ bindInfoCount
+                       -> Ptr VkBindSparseInfo -- ^ pBindInfo
+                                               -> VkFence -- ^ fence
+                                                          -> IO VkResult
+
+type PFN_vkQueueBindSparse = FunPtr HS_vkQueueBindSparse
+
+foreign import ccall unsafe "dynamic" unwrapVkQueueBindSparseUnsafe
+               :: PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
+
+foreign import ccall safe "dynamic" unwrapVkQueueBindSparseSafe ::
+               PFN_vkQueueBindSparse -> HS_vkQueueBindSparse
+
+instance VulkanProc "vkQueueBindSparse" where
+    type VkProcType "vkQueueBindSparse" = HS_vkQueueBindSparse
+    vkProcSymbol = _VkQueueBindSparse
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkQueueBindSparseUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkQueueBindSparseSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateFence :: CString
+
+pattern VkCreateFence <- (is_VkCreateFence -> True)
+  where
+    VkCreateFence = _VkCreateFence
+
+{-# INLINE _VkCreateFence #-}
+
+_VkCreateFence :: CString
+_VkCreateFence = Ptr "vkCreateFence\NUL"##
+
+{-# INLINE is_VkCreateFence #-}
+
+is_VkCreateFence :: CString -> Bool
+is_VkCreateFence = (EQ ==) . cmpCStrings _VkCreateFence
+
+type VkCreateFence = "vkCreateFence"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFence
+-- >     ( VkDevice device
+-- >     , const VkFenceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFence* pFence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFence <- vkGetProc @VkCreateFence
+--
+-- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFence@ is an alias
+--           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateFence" vkCreateFenceUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+##else
+vkCreateFenceUnsafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                            ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkFence -- ^ pFence
+                                                                 -> IO VkResult
+vkCreateFenceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateFence)
+
+{-# NOINLINE vkCreateFenceUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFence
+-- >     ( VkDevice device
+-- >     , const VkFenceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFence* pFence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFence <- vkGetProc @VkCreateFence
+--
+-- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFence@ is an alias
+--           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateFence" vkCreateFenceSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFence -- ^ pFence
+                                                            -> IO VkResult
+
+##else
+vkCreateFenceSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkFence -- ^ pFence
+                                                               -> IO VkResult
+vkCreateFenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFence)
+
+{-# NOINLINE vkCreateFenceSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFence
+-- >     ( VkDevice device
+-- >     , const VkFenceCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFence* pFence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFence <- vkGetDeviceProc @VkCreateFence vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFence <- vkGetProc @VkCreateFence
+--
+-- __Note:__ @vkCreateFenceUnsafe@ and @vkCreateFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFence@ is an alias
+--           of @vkCreateFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFenceSafe@.
+--
+vkCreateFence ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkFence -- ^ pFence
+                                                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateFence = vkCreateFenceUnsafe
+##else
+vkCreateFence = vkCreateFenceSafe
+
+##endif
+{-# INLINE vkCreateFence #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateFence
+--   >     ( VkDevice device
+--   >     , const VkFenceCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkFence* pFence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFence vkCreateFence registry at www.khronos.org>
+type HS_vkCreateFence =
+     VkDevice -- ^ device
+              ->
+       Ptr VkFenceCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkFence -- ^ pFence
+                                                  -> IO VkResult
+
+type PFN_vkCreateFence = FunPtr HS_vkCreateFence
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateFenceUnsafe ::
+               PFN_vkCreateFence -> HS_vkCreateFence
+
+foreign import ccall safe "dynamic" unwrapVkCreateFenceSafe ::
+               PFN_vkCreateFence -> HS_vkCreateFence
+
+instance VulkanProc "vkCreateFence" where
+    type VkProcType "vkCreateFence" = HS_vkCreateFence
+    vkProcSymbol = _VkCreateFence
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateFenceUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateFenceSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyFence :: CString
+
+pattern VkDestroyFence <- (is_VkDestroyFence -> True)
+  where
+    VkDestroyFence = _VkDestroyFence
+
+{-# INLINE _VkDestroyFence #-}
+
+_VkDestroyFence :: CString
+_VkDestroyFence = Ptr "vkDestroyFence\NUL"##
+
+{-# INLINE is_VkDestroyFence #-}
+
+is_VkDestroyFence :: CString -> Bool
+is_VkDestroyFence = (EQ ==) . cmpCStrings _VkDestroyFence
+
+type VkDestroyFence = "vkDestroyFence"
+
+-- |
+-- > void vkDestroyFence
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFence <- vkGetProc @VkDestroyFence
+--
+-- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
+--           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyFence" vkDestroyFenceUnsafe
+               :: VkDevice -- ^ device
+                           -> VkFence -- ^ fence
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
+##else
+vkDestroyFenceUnsafe ::
+                     VkDevice -- ^ device
+                              -> VkFence -- ^ fence
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyFenceUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyFence)
+
+{-# NOINLINE vkDestroyFenceUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyFence
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFence <- vkGetProc @VkDestroyFence
+--
+-- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
+--           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyFence" vkDestroyFenceSafe ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyFenceSafe ::
+                   VkDevice -- ^ device
+                            -> VkFence -- ^ fence
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyFenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFence)
+
+{-# NOINLINE vkDestroyFenceSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyFence
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFence <- vkGetDeviceProc @VkDestroyFence vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFence <- vkGetProc @VkDestroyFence
+--
+-- __Note:__ @vkDestroyFenceUnsafe@ and @vkDestroyFenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFence@ is an alias
+--           of @vkDestroyFenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFenceSafe@.
+--
+vkDestroyFence ::
+               VkDevice -- ^ device
+                        -> VkFence -- ^ fence
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyFence = vkDestroyFenceUnsafe
+##else
+vkDestroyFence = vkDestroyFenceSafe
+
+##endif
+{-# INLINE vkDestroyFence #-}
+
+-- | > void vkDestroyFence
+--   >     ( VkDevice device
+--   >     , VkFence fence
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFence vkDestroyFence registry at www.khronos.org>
+type HS_vkDestroyFence =
+     VkDevice -- ^ device
+              -> VkFence -- ^ fence
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyFence = FunPtr HS_vkDestroyFence
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyFenceUnsafe ::
+               PFN_vkDestroyFence -> HS_vkDestroyFence
+
+foreign import ccall safe "dynamic" unwrapVkDestroyFenceSafe ::
+               PFN_vkDestroyFence -> HS_vkDestroyFence
+
+instance VulkanProc "vkDestroyFence" where
+    type VkProcType "vkDestroyFence" = HS_vkDestroyFence
+    vkProcSymbol = _VkDestroyFence
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyFenceUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyFenceSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetFences :: CString
+
+pattern VkResetFences <- (is_VkResetFences -> True)
+  where
+    VkResetFences = _VkResetFences
+
+{-# INLINE _VkResetFences #-}
+
+_VkResetFences :: CString
+_VkResetFences = Ptr "vkResetFences\NUL"##
+
+{-# INLINE is_VkResetFences #-}
+
+is_VkResetFences :: CString -> Bool
+is_VkResetFences = (EQ ==) . cmpCStrings _VkResetFences
+
+type VkResetFences = "vkResetFences"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
+--
+-- or less efficient:
+--
+-- > myResetFences <- vkGetProc @VkResetFences
+--
+-- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetFences@ is an alias
+--           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetFences" vkResetFencesUnsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ fenceCount
+                                  -> Ptr VkFence -- ^ pFences
+                                                 -> IO VkResult
+
+##else
+vkResetFencesUnsafe ::
+                    VkDevice -- ^ device
+                             -> Word32 -- ^ fenceCount
+                                       -> Ptr VkFence -- ^ pFences
+                                                      -> IO VkResult
+vkResetFencesUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetFences)
+
+{-# NOINLINE vkResetFencesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
+--
+-- or less efficient:
+--
+-- > myResetFences <- vkGetProc @VkResetFences
+--
+-- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetFences@ is an alias
+--           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetFences" vkResetFencesSafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ fenceCount
+                                  -> Ptr VkFence -- ^ pFences
+                                                 -> IO VkResult
+
+##else
+vkResetFencesSafe ::
+                  VkDevice -- ^ device
+                           -> Word32 -- ^ fenceCount
+                                     -> Ptr VkFence -- ^ pFences
+                                                    -> IO VkResult
+vkResetFencesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetFences)
+
+{-# NOINLINE vkResetFencesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetFences <- vkGetDeviceProc @VkResetFences vkDevice
+--
+-- or less efficient:
+--
+-- > myResetFences <- vkGetProc @VkResetFences
+--
+-- __Note:__ @vkResetFencesUnsafe@ and @vkResetFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetFences@ is an alias
+--           of @vkResetFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetFencesSafe@.
+--
+vkResetFences :: VkDevice -- ^ device
+                          -> Word32 -- ^ fenceCount
+                                    -> Ptr VkFence -- ^ pFences
+                                                   -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetFences = vkResetFencesUnsafe
+##else
+vkResetFences = vkResetFencesSafe
+
+##endif
+{-# INLINE vkResetFences #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetFences
+--   >     ( VkDevice device
+--   >     , uint32_t fenceCount
+--   >     , const VkFence* pFences
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetFences vkResetFences registry at www.khronos.org>
+type HS_vkResetFences =
+     VkDevice -- ^ device
+              -> Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> IO VkResult
+
+type PFN_vkResetFences = FunPtr HS_vkResetFences
+
+foreign import ccall unsafe "dynamic" unwrapVkResetFencesUnsafe ::
+               PFN_vkResetFences -> HS_vkResetFences
+
+foreign import ccall safe "dynamic" unwrapVkResetFencesSafe ::
+               PFN_vkResetFences -> HS_vkResetFences
+
+instance VulkanProc "vkResetFences" where
+    type VkProcType "vkResetFences" = HS_vkResetFences
+    vkProcSymbol = _VkResetFences
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkResetFencesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkResetFencesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetFenceStatus :: CString
+
+pattern VkGetFenceStatus <- (is_VkGetFenceStatus -> True)
+  where
+    VkGetFenceStatus = _VkGetFenceStatus
+
+{-# INLINE _VkGetFenceStatus #-}
+
+_VkGetFenceStatus :: CString
+_VkGetFenceStatus = Ptr "vkGetFenceStatus\NUL"##
+
+{-# INLINE is_VkGetFenceStatus #-}
+
+is_VkGetFenceStatus :: CString -> Bool
+is_VkGetFenceStatus = (EQ ==) . cmpCStrings _VkGetFenceStatus
+
+type VkGetFenceStatus = "vkGetFenceStatus"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetFenceStatus
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
+--
+-- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
+--           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetFenceStatus"
+               vkGetFenceStatusUnsafe :: VkDevice -- ^ device
+                                                  -> VkFence -- ^ fence
+                                                             -> IO VkResult
+
+##else
+vkGetFenceStatusUnsafe :: VkDevice -- ^ device
+                                   -> VkFence -- ^ fence
+                                              -> IO VkResult
+vkGetFenceStatusUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetFenceStatus)
+
+{-# NOINLINE vkGetFenceStatusUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetFenceStatus
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
+--
+-- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
+--           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetFenceStatus" vkGetFenceStatusSafe
+               :: VkDevice -- ^ device
+                           -> VkFence -- ^ fence
+                                      -> IO VkResult
+
+##else
+vkGetFenceStatusSafe :: VkDevice -- ^ device
+                                 -> VkFence -- ^ fence
+                                            -> IO VkResult
+vkGetFenceStatusSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetFenceStatus)
+
+{-# NOINLINE vkGetFenceStatusSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetFenceStatus
+-- >     ( VkDevice device
+-- >     , VkFence fence
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetFenceStatus <- vkGetDeviceProc @VkGetFenceStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetFenceStatus <- vkGetProc @VkGetFenceStatus
+--
+-- __Note:__ @vkGetFenceStatusUnsafe@ and @vkGetFenceStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetFenceStatus@ is an alias
+--           of @vkGetFenceStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetFenceStatusSafe@.
+--
+vkGetFenceStatus :: VkDevice -- ^ device
+                             -> VkFence -- ^ fence
+                                        -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetFenceStatus = vkGetFenceStatusUnsafe
+##else
+vkGetFenceStatus = vkGetFenceStatusSafe
+
+##endif
+{-# INLINE vkGetFenceStatus #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetFenceStatus
+--   >     ( VkDevice device
+--   >     , VkFence fence
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetFenceStatus vkGetFenceStatus registry at www.khronos.org>
+type HS_vkGetFenceStatus = VkDevice -- ^ device
+                                    -> VkFence -- ^ fence
+                                               -> IO VkResult
+
+type PFN_vkGetFenceStatus = FunPtr HS_vkGetFenceStatus
+
+foreign import ccall unsafe "dynamic" unwrapVkGetFenceStatusUnsafe
+               :: PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
+
+foreign import ccall safe "dynamic" unwrapVkGetFenceStatusSafe ::
+               PFN_vkGetFenceStatus -> HS_vkGetFenceStatus
+
+instance VulkanProc "vkGetFenceStatus" where
+    type VkProcType "vkGetFenceStatus" = HS_vkGetFenceStatus
+    vkProcSymbol = _VkGetFenceStatus
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetFenceStatusUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetFenceStatusSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkWaitForFences :: CString
+
+pattern VkWaitForFences <- (is_VkWaitForFences -> True)
+  where
+    VkWaitForFences = _VkWaitForFences
+
+{-# INLINE _VkWaitForFences #-}
+
+_VkWaitForFences :: CString
+_VkWaitForFences = Ptr "vkWaitForFences\NUL"##
+
+{-# INLINE is_VkWaitForFences #-}
+
+is_VkWaitForFences :: CString -> Bool
+is_VkWaitForFences = (EQ ==) . cmpCStrings _VkWaitForFences
+
+type VkWaitForFences = "vkWaitForFences"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkWaitForFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     , VkBool32 waitAll
+-- >     , uint64_t timeout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
+--
+-- or less efficient:
+--
+-- > myWaitForFences <- vkGetProc @VkWaitForFences
+--
+-- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
+--           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkWaitForFences" vkWaitForFencesUnsafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> VkBool32 -- ^ waitAll
+                                                   -> Word64 -- ^ timeout
+                                                             -> IO VkResult
+
+##else
+vkWaitForFencesUnsafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Word32 -- ^ fenceCount
+                               -> Ptr VkFence -- ^ pFences
+                                              -> VkBool32 -- ^ waitAll
+                                                          -> Word64 -- ^ timeout
+                                                                    -> IO VkResult
+vkWaitForFencesUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkWaitForFences)
+
+{-# NOINLINE vkWaitForFencesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkWaitForFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     , VkBool32 waitAll
+-- >     , uint64_t timeout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
+--
+-- or less efficient:
+--
+-- > myWaitForFences <- vkGetProc @VkWaitForFences
+--
+-- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
+--           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkWaitForFences" vkWaitForFencesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ fenceCount
+                        -> Ptr VkFence -- ^ pFences
+                                       -> VkBool32 -- ^ waitAll
+                                                   -> Word64 -- ^ timeout
+                                                             -> IO VkResult
+
+##else
+vkWaitForFencesSafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Word32 -- ^ fenceCount
+                             -> Ptr VkFence -- ^ pFences
+                                            -> VkBool32 -- ^ waitAll
+                                                        -> Word64 -- ^ timeout
+                                                                  -> IO VkResult
+vkWaitForFencesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkWaitForFences)
+
+{-# NOINLINE vkWaitForFencesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkWaitForFences
+-- >     ( VkDevice device
+-- >     , uint32_t fenceCount
+-- >     , const VkFence* pFences
+-- >     , VkBool32 waitAll
+-- >     , uint64_t timeout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myWaitForFences <- vkGetDeviceProc @VkWaitForFences vkDevice
+--
+-- or less efficient:
+--
+-- > myWaitForFences <- vkGetProc @VkWaitForFences
+--
+-- __Note:__ @vkWaitForFencesUnsafe@ and @vkWaitForFencesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkWaitForFences@ is an alias
+--           of @vkWaitForFencesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkWaitForFencesSafe@.
+--
+vkWaitForFences ::
+                VkDevice -- ^ device
+                         ->
+                  Word32 -- ^ fenceCount
+                         -> Ptr VkFence -- ^ pFences
+                                        -> VkBool32 -- ^ waitAll
+                                                    -> Word64 -- ^ timeout
+                                                              -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkWaitForFences = vkWaitForFencesUnsafe
+##else
+vkWaitForFences = vkWaitForFencesSafe
+
+##endif
+{-# INLINE vkWaitForFences #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_TIMEOUT'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkWaitForFences
+--   >     ( VkDevice device
+--   >     , uint32_t fenceCount
+--   >     , const VkFence* pFences
+--   >     , VkBool32 waitAll
+--   >     , uint64_t timeout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkWaitForFences vkWaitForFences registry at www.khronos.org>
+type HS_vkWaitForFences =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ fenceCount
+              -> Ptr VkFence -- ^ pFences
+                             -> VkBool32 -- ^ waitAll
+                                         -> Word64 -- ^ timeout
+                                                   -> IO VkResult
+
+type PFN_vkWaitForFences = FunPtr HS_vkWaitForFences
+
+foreign import ccall unsafe "dynamic" unwrapVkWaitForFencesUnsafe
+               :: PFN_vkWaitForFences -> HS_vkWaitForFences
+
+foreign import ccall safe "dynamic" unwrapVkWaitForFencesSafe ::
+               PFN_vkWaitForFences -> HS_vkWaitForFences
+
+instance VulkanProc "vkWaitForFences" where
+    type VkProcType "vkWaitForFences" = HS_vkWaitForFences
+    vkProcSymbol = _VkWaitForFences
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkWaitForFencesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkWaitForFencesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateSemaphore :: CString
+
+pattern VkCreateSemaphore <- (is_VkCreateSemaphore -> True)
+  where
+    VkCreateSemaphore = _VkCreateSemaphore
+
+{-# INLINE _VkCreateSemaphore #-}
+
+_VkCreateSemaphore :: CString
+_VkCreateSemaphore = Ptr "vkCreateSemaphore\NUL"##
+
+{-# INLINE is_VkCreateSemaphore #-}
+
+is_VkCreateSemaphore :: CString -> Bool
+is_VkCreateSemaphore = (EQ ==) . cmpCStrings _VkCreateSemaphore
+
+type VkCreateSemaphore = "vkCreateSemaphore"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSemaphore
+-- >     ( VkDevice device
+-- >     , const VkSemaphoreCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSemaphore* pSemaphore
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
+--
+-- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
+--           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateSemaphore"
+               vkCreateSemaphoreUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                -> IO VkResult
+
+##else
+vkCreateSemaphoreUnsafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                                    ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                         -> IO VkResult
+vkCreateSemaphoreUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateSemaphore)
+
+{-# NOINLINE vkCreateSemaphoreUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSemaphore
+-- >     ( VkDevice device
+-- >     , const VkSemaphoreCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSemaphore* pSemaphore
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
+--
+-- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
+--           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateSemaphore" vkCreateSemaphoreSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                -> IO VkResult
+
+##else
+vkCreateSemaphoreSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                       -> IO VkResult
+vkCreateSemaphoreSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSemaphore)
+
+{-# NOINLINE vkCreateSemaphoreSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSemaphore
+-- >     ( VkDevice device
+-- >     , const VkSemaphoreCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSemaphore* pSemaphore
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSemaphore <- vkGetDeviceProc @VkCreateSemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSemaphore <- vkGetProc @VkCreateSemaphore
+--
+-- __Note:__ @vkCreateSemaphoreUnsafe@ and @vkCreateSemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSemaphore@ is an alias
+--           of @vkCreateSemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSemaphoreSafe@.
+--
+vkCreateSemaphore ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkSemaphore -- ^ pSemaphore
+                                                                   -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateSemaphore = vkCreateSemaphoreUnsafe
+##else
+vkCreateSemaphore = vkCreateSemaphoreSafe
+
+##endif
+{-# INLINE vkCreateSemaphore #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateSemaphore
+--   >     ( VkDevice device
+--   >     , const VkSemaphoreCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSemaphore* pSemaphore
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSemaphore vkCreateSemaphore registry at www.khronos.org>
+type HS_vkCreateSemaphore =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSemaphoreCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkSemaphore -- ^ pSemaphore
+                                                      -> IO VkResult
+
+type PFN_vkCreateSemaphore = FunPtr HS_vkCreateSemaphore
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateSemaphoreUnsafe
+               :: PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
+
+foreign import ccall safe "dynamic" unwrapVkCreateSemaphoreSafe ::
+               PFN_vkCreateSemaphore -> HS_vkCreateSemaphore
+
+instance VulkanProc "vkCreateSemaphore" where
+    type VkProcType "vkCreateSemaphore" = HS_vkCreateSemaphore
+    vkProcSymbol = _VkCreateSemaphore
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateSemaphoreUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateSemaphoreSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySemaphore :: CString
+
+pattern VkDestroySemaphore <- (is_VkDestroySemaphore -> True)
+  where
+    VkDestroySemaphore = _VkDestroySemaphore
+
+{-# INLINE _VkDestroySemaphore #-}
+
+_VkDestroySemaphore :: CString
+_VkDestroySemaphore = Ptr "vkDestroySemaphore\NUL"##
+
+{-# INLINE is_VkDestroySemaphore #-}
+
+is_VkDestroySemaphore :: CString -> Bool
+is_VkDestroySemaphore = (EQ ==) . cmpCStrings _VkDestroySemaphore
+
+type VkDestroySemaphore = "vkDestroySemaphore"
+
+-- |
+-- > void vkDestroySemaphore
+-- >     ( VkDevice device
+-- >     , VkSemaphore semaphore
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
+--
+-- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
+--           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroySemaphore"
+               vkDestroySemaphoreUnsafe ::
+               VkDevice -- ^ device
+                        -> VkSemaphore -- ^ semaphore
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroySemaphoreUnsafe ::
+                         VkDevice -- ^ device
+                                  -> VkSemaphore -- ^ semaphore
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroySemaphoreUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroySemaphore)
+
+{-# NOINLINE vkDestroySemaphoreUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroySemaphore
+-- >     ( VkDevice device
+-- >     , VkSemaphore semaphore
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
+--
+-- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
+--           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroySemaphore"
+               vkDestroySemaphoreSafe ::
+               VkDevice -- ^ device
+                        -> VkSemaphore -- ^ semaphore
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroySemaphoreSafe ::
+                       VkDevice -- ^ device
+                                -> VkSemaphore -- ^ semaphore
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroySemaphoreSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySemaphore)
+
+{-# NOINLINE vkDestroySemaphoreSafe #-}
+##endif
+
+-- |
+-- > void vkDestroySemaphore
+-- >     ( VkDevice device
+-- >     , VkSemaphore semaphore
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySemaphore <- vkGetDeviceProc @VkDestroySemaphore vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySemaphore <- vkGetProc @VkDestroySemaphore
+--
+-- __Note:__ @vkDestroySemaphoreUnsafe@ and @vkDestroySemaphoreSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySemaphore@ is an alias
+--           of @vkDestroySemaphoreUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySemaphoreSafe@.
+--
+vkDestroySemaphore ::
+                   VkDevice -- ^ device
+                            -> VkSemaphore -- ^ semaphore
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroySemaphore = vkDestroySemaphoreUnsafe
+##else
+vkDestroySemaphore = vkDestroySemaphoreSafe
+
+##endif
+{-# INLINE vkDestroySemaphore #-}
+
+-- | > void vkDestroySemaphore
+--   >     ( VkDevice device
+--   >     , VkSemaphore semaphore
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySemaphore vkDestroySemaphore registry at www.khronos.org>
+type HS_vkDestroySemaphore =
+     VkDevice -- ^ device
+              -> VkSemaphore -- ^ semaphore
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroySemaphore = FunPtr HS_vkDestroySemaphore
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroySemaphoreUnsafe ::
+               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
+
+foreign import ccall safe "dynamic" unwrapVkDestroySemaphoreSafe ::
+               PFN_vkDestroySemaphore -> HS_vkDestroySemaphore
+
+instance VulkanProc "vkDestroySemaphore" where
+    type VkProcType "vkDestroySemaphore" = HS_vkDestroySemaphore
+    vkProcSymbol = _VkDestroySemaphore
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroySemaphoreUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroySemaphoreSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateEvent :: CString
+
+pattern VkCreateEvent <- (is_VkCreateEvent -> True)
+  where
+    VkCreateEvent = _VkCreateEvent
+
+{-# INLINE _VkCreateEvent #-}
+
+_VkCreateEvent :: CString
+_VkCreateEvent = Ptr "vkCreateEvent\NUL"##
+
+{-# INLINE is_VkCreateEvent #-}
+
+is_VkCreateEvent :: CString -> Bool
+is_VkCreateEvent = (EQ ==) . cmpCStrings _VkCreateEvent
+
+type VkCreateEvent = "vkCreateEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateEvent
+-- >     ( VkDevice device
+-- >     , const VkEventCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkEvent* pEvent
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateEvent <- vkGetProc @VkCreateEvent
+--
+-- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
+--           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateEvent" vkCreateEventUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkEvent -- ^ pEvent
+                                                            -> IO VkResult
+
+##else
+vkCreateEventUnsafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                            ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkEvent -- ^ pEvent
+                                                                 -> IO VkResult
+vkCreateEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateEvent)
+
+{-# NOINLINE vkCreateEventUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateEvent
+-- >     ( VkDevice device
+-- >     , const VkEventCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkEvent* pEvent
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateEvent <- vkGetProc @VkCreateEvent
+--
+-- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
+--           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateEvent" vkCreateEventSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkEvent -- ^ pEvent
+                                                            -> IO VkResult
+
+##else
+vkCreateEventSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkEvent -- ^ pEvent
+                                                               -> IO VkResult
+vkCreateEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateEvent)
+
+{-# NOINLINE vkCreateEventSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateEvent
+-- >     ( VkDevice device
+-- >     , const VkEventCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkEvent* pEvent
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateEvent <- vkGetDeviceProc @VkCreateEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateEvent <- vkGetProc @VkCreateEvent
+--
+-- __Note:__ @vkCreateEventUnsafe@ and @vkCreateEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateEvent@ is an alias
+--           of @vkCreateEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateEventSafe@.
+--
+vkCreateEvent ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkEventCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkEvent -- ^ pEvent
+                                                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateEvent = vkCreateEventUnsafe
+##else
+vkCreateEvent = vkCreateEventSafe
+
+##endif
+{-# INLINE vkCreateEvent #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateEvent
+--   >     ( VkDevice device
+--   >     , const VkEventCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkEvent* pEvent
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateEvent vkCreateEvent registry at www.khronos.org>
+type HS_vkCreateEvent =
+     VkDevice -- ^ device
+              ->
+       Ptr VkEventCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkEvent -- ^ pEvent
+                                                  -> IO VkResult
+
+type PFN_vkCreateEvent = FunPtr HS_vkCreateEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateEventUnsafe ::
+               PFN_vkCreateEvent -> HS_vkCreateEvent
+
+foreign import ccall safe "dynamic" unwrapVkCreateEventSafe ::
+               PFN_vkCreateEvent -> HS_vkCreateEvent
+
+instance VulkanProc "vkCreateEvent" where
+    type VkProcType "vkCreateEvent" = HS_vkCreateEvent
+    vkProcSymbol = _VkCreateEvent
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateEventUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateEventSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyEvent :: CString
+
+pattern VkDestroyEvent <- (is_VkDestroyEvent -> True)
+  where
+    VkDestroyEvent = _VkDestroyEvent
+
+{-# INLINE _VkDestroyEvent #-}
+
+_VkDestroyEvent :: CString
+_VkDestroyEvent = Ptr "vkDestroyEvent\NUL"##
+
+{-# INLINE is_VkDestroyEvent #-}
+
+is_VkDestroyEvent :: CString -> Bool
+is_VkDestroyEvent = (EQ ==) . cmpCStrings _VkDestroyEvent
+
+type VkDestroyEvent = "vkDestroyEvent"
+
+-- |
+-- > void vkDestroyEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyEvent <- vkGetProc @VkDestroyEvent
+--
+-- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
+--           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyEvent" vkDestroyEventUnsafe
+               :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
+##else
+vkDestroyEventUnsafe ::
+                     VkDevice -- ^ device
+                              -> VkEvent -- ^ event
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyEvent)
+
+{-# NOINLINE vkDestroyEventUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyEvent <- vkGetProc @VkDestroyEvent
+--
+-- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
+--           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyEvent" vkDestroyEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyEventSafe ::
+                   VkDevice -- ^ device
+                            -> VkEvent -- ^ event
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyEvent)
+
+{-# NOINLINE vkDestroyEventSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyEvent <- vkGetDeviceProc @VkDestroyEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyEvent <- vkGetProc @VkDestroyEvent
+--
+-- __Note:__ @vkDestroyEventUnsafe@ and @vkDestroyEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyEvent@ is an alias
+--           of @vkDestroyEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyEventSafe@.
+--
+vkDestroyEvent ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyEvent = vkDestroyEventUnsafe
+##else
+vkDestroyEvent = vkDestroyEventSafe
+
+##endif
+{-# INLINE vkDestroyEvent #-}
+
+-- | > void vkDestroyEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyEvent vkDestroyEvent registry at www.khronos.org>
+type HS_vkDestroyEvent =
+     VkDevice -- ^ device
+              -> VkEvent -- ^ event
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyEvent = FunPtr HS_vkDestroyEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyEventUnsafe ::
+               PFN_vkDestroyEvent -> HS_vkDestroyEvent
+
+foreign import ccall safe "dynamic" unwrapVkDestroyEventSafe ::
+               PFN_vkDestroyEvent -> HS_vkDestroyEvent
+
+instance VulkanProc "vkDestroyEvent" where
+    type VkProcType "vkDestroyEvent" = HS_vkDestroyEvent
+    vkProcSymbol = _VkDestroyEvent
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyEventUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyEventSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetEventStatus :: CString
+
+pattern VkGetEventStatus <- (is_VkGetEventStatus -> True)
+  where
+    VkGetEventStatus = _VkGetEventStatus
+
+{-# INLINE _VkGetEventStatus #-}
+
+_VkGetEventStatus :: CString
+_VkGetEventStatus = Ptr "vkGetEventStatus\NUL"##
+
+{-# INLINE is_VkGetEventStatus #-}
+
+is_VkGetEventStatus :: CString -> Bool
+is_VkGetEventStatus = (EQ ==) . cmpCStrings _VkGetEventStatus
+
+type VkGetEventStatus = "vkGetEventStatus"
+
+-- |
+-- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetEventStatus
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetEventStatus <- vkGetProc @VkGetEventStatus
+--
+-- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
+--           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetEventStatus"
+               vkGetEventStatusUnsafe :: VkDevice -- ^ device
+                                                  -> VkEvent -- ^ event
+                                                             -> IO VkResult
+
+##else
+vkGetEventStatusUnsafe :: VkDevice -- ^ device
+                                   -> VkEvent -- ^ event
+                                              -> IO VkResult
+vkGetEventStatusUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetEventStatus)
+
+{-# NOINLINE vkGetEventStatusUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetEventStatus
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetEventStatus <- vkGetProc @VkGetEventStatus
+--
+-- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
+--           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetEventStatus" vkGetEventStatusSafe
+               :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> IO VkResult
+
+##else
+vkGetEventStatusSafe :: VkDevice -- ^ device
+                                 -> VkEvent -- ^ event
+                                            -> IO VkResult
+vkGetEventStatusSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetEventStatus)
+
+{-# NOINLINE vkGetEventStatusSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetEventStatus
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetEventStatus <- vkGetDeviceProc @VkGetEventStatus vkDevice
+--
+-- or less efficient:
+--
+-- > myGetEventStatus <- vkGetProc @VkGetEventStatus
+--
+-- __Note:__ @vkGetEventStatusUnsafe@ and @vkGetEventStatusSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetEventStatus@ is an alias
+--           of @vkGetEventStatusUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetEventStatusSafe@.
+--
+vkGetEventStatus :: VkDevice -- ^ device
+                             -> VkEvent -- ^ event
+                                        -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetEventStatus = vkGetEventStatusUnsafe
+##else
+vkGetEventStatus = vkGetEventStatusSafe
+
+##endif
+{-# INLINE vkGetEventStatus #-}
+
+-- | Success codes: 'VK_EVENT_SET', 'VK_EVENT_RESET'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetEventStatus
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetEventStatus vkGetEventStatus registry at www.khronos.org>
+type HS_vkGetEventStatus = VkDevice -- ^ device
+                                    -> VkEvent -- ^ event
+                                               -> IO VkResult
+
+type PFN_vkGetEventStatus = FunPtr HS_vkGetEventStatus
+
+foreign import ccall unsafe "dynamic" unwrapVkGetEventStatusUnsafe
+               :: PFN_vkGetEventStatus -> HS_vkGetEventStatus
+
+foreign import ccall safe "dynamic" unwrapVkGetEventStatusSafe ::
+               PFN_vkGetEventStatus -> HS_vkGetEventStatus
+
+instance VulkanProc "vkGetEventStatus" where
+    type VkProcType "vkGetEventStatus" = HS_vkGetEventStatus
+    vkProcSymbol = _VkGetEventStatus
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetEventStatusUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetEventStatusSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkSetEvent :: CString
+
+pattern VkSetEvent <- (is_VkSetEvent -> True)
+  where
+    VkSetEvent = _VkSetEvent
+
+{-# INLINE _VkSetEvent #-}
+
+_VkSetEvent :: CString
+_VkSetEvent = Ptr "vkSetEvent\NUL"##
+
+{-# INLINE is_VkSetEvent #-}
+
+is_VkSetEvent :: CString -> Bool
+is_VkSetEvent = (EQ ==) . cmpCStrings _VkSetEvent
+
+type VkSetEvent = "vkSetEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkSetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > mySetEvent <- vkGetProc @VkSetEvent
+--
+-- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkSetEvent@ is an alias
+--           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkSetEvent" vkSetEventUnsafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkSetEventUnsafe :: VkDevice -- ^ device
+                             -> VkEvent -- ^ event
+                                        -> IO VkResult
+vkSetEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkSetEvent)
+
+{-# NOINLINE vkSetEventUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkSetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > mySetEvent <- vkGetProc @VkSetEvent
+--
+-- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkSetEvent@ is an alias
+--           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkSetEvent" vkSetEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkSetEventSafe :: VkDevice -- ^ device
+                           -> VkEvent -- ^ event
+                                      -> IO VkResult
+vkSetEventSafe = unsafeDupablePerformIO (vkGetProcSafe @VkSetEvent)
+
+{-# NOINLINE vkSetEventSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkSetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > mySetEvent <- vkGetDeviceProc @VkSetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > mySetEvent <- vkGetProc @VkSetEvent
+--
+-- __Note:__ @vkSetEventUnsafe@ and @vkSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkSetEvent@ is an alias
+--           of @vkSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkSetEventSafe@.
+--
+vkSetEvent :: VkDevice -- ^ device
+                       -> VkEvent -- ^ event
+                                  -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkSetEvent = vkSetEventUnsafe
+##else
+vkSetEvent = vkSetEventSafe
+
+##endif
+{-# INLINE vkSetEvent #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkSetEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkSetEvent vkSetEvent registry at www.khronos.org>
+type HS_vkSetEvent = VkDevice -- ^ device
+                              -> VkEvent -- ^ event
+                                         -> IO VkResult
+
+type PFN_vkSetEvent = FunPtr HS_vkSetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkSetEventUnsafe ::
+               PFN_vkSetEvent -> HS_vkSetEvent
+
+foreign import ccall safe "dynamic" unwrapVkSetEventSafe ::
+               PFN_vkSetEvent -> HS_vkSetEvent
+
+instance VulkanProc "vkSetEvent" where
+    type VkProcType "vkSetEvent" = HS_vkSetEvent
+    vkProcSymbol = _VkSetEvent
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkSetEventUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkSetEventSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetEvent :: CString
+
+pattern VkResetEvent <- (is_VkResetEvent -> True)
+  where
+    VkResetEvent = _VkResetEvent
+
+{-# INLINE _VkResetEvent #-}
+
+_VkResetEvent :: CString
+_VkResetEvent = Ptr "vkResetEvent\NUL"##
+
+{-# INLINE is_VkResetEvent #-}
+
+is_VkResetEvent :: CString -> Bool
+is_VkResetEvent = (EQ ==) . cmpCStrings _VkResetEvent
+
+type VkResetEvent = "vkResetEvent"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myResetEvent <- vkGetProc @VkResetEvent
+--
+-- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetEvent@ is an alias
+--           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetEvent" vkResetEventUnsafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkResetEventUnsafe :: VkDevice -- ^ device
+                               -> VkEvent -- ^ event
+                                          -> IO VkResult
+vkResetEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetEvent)
+
+{-# NOINLINE vkResetEventUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myResetEvent <- vkGetProc @VkResetEvent
+--
+-- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetEvent@ is an alias
+--           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetEvent" vkResetEventSafe ::
+               VkDevice -- ^ device
+                        -> VkEvent -- ^ event
+                                   -> IO VkResult
+
+##else
+vkResetEventSafe :: VkDevice -- ^ device
+                             -> VkEvent -- ^ event
+                                        -> IO VkResult
+vkResetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetEvent)
+
+{-# NOINLINE vkResetEventSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetEvent
+-- >     ( VkDevice device
+-- >     , VkEvent event
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetEvent <- vkGetDeviceProc @VkResetEvent vkDevice
+--
+-- or less efficient:
+--
+-- > myResetEvent <- vkGetProc @VkResetEvent
+--
+-- __Note:__ @vkResetEventUnsafe@ and @vkResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetEvent@ is an alias
+--           of @vkResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetEventSafe@.
+--
+vkResetEvent :: VkDevice -- ^ device
+                         -> VkEvent -- ^ event
+                                    -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetEvent = vkResetEventUnsafe
+##else
+vkResetEvent = vkResetEventSafe
+
+##endif
+{-# INLINE vkResetEvent #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetEvent
+--   >     ( VkDevice device
+--   >     , VkEvent event
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetEvent vkResetEvent registry at www.khronos.org>
+type HS_vkResetEvent = VkDevice -- ^ device
+                                -> VkEvent -- ^ event
+                                           -> IO VkResult
+
+type PFN_vkResetEvent = FunPtr HS_vkResetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkResetEventUnsafe ::
+               PFN_vkResetEvent -> HS_vkResetEvent
+
+foreign import ccall safe "dynamic" unwrapVkResetEventSafe ::
+               PFN_vkResetEvent -> HS_vkResetEvent
+
+instance VulkanProc "vkResetEvent" where
+    type VkProcType "vkResetEvent" = HS_vkResetEvent
+    vkProcSymbol = _VkResetEvent
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkResetEventUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkResetEventSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateQueryPool :: CString
+
+pattern VkCreateQueryPool <- (is_VkCreateQueryPool -> True)
+  where
+    VkCreateQueryPool = _VkCreateQueryPool
+
+{-# INLINE _VkCreateQueryPool #-}
+
+_VkCreateQueryPool :: CString
+_VkCreateQueryPool = Ptr "vkCreateQueryPool\NUL"##
+
+{-# INLINE is_VkCreateQueryPool #-}
+
+is_VkCreateQueryPool :: CString -> Bool
+is_VkCreateQueryPool = (EQ ==) . cmpCStrings _VkCreateQueryPool
+
+type VkCreateQueryPool = "vkCreateQueryPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateQueryPool
+-- >     ( VkDevice device
+-- >     , const VkQueryPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkQueryPool* pQueryPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
+--
+-- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
+--           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateQueryPool"
+               vkCreateQueryPoolUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                -> IO VkResult
+
+##else
+vkCreateQueryPoolUnsafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                                    ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                         -> IO VkResult
+vkCreateQueryPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateQueryPool)
+
+{-# NOINLINE vkCreateQueryPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateQueryPool
+-- >     ( VkDevice device
+-- >     , const VkQueryPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkQueryPool* pQueryPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
+--
+-- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
+--           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateQueryPool" vkCreateQueryPoolSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                -> IO VkResult
+
+##else
+vkCreateQueryPoolSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                       -> IO VkResult
+vkCreateQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateQueryPool)
+
+{-# NOINLINE vkCreateQueryPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateQueryPool
+-- >     ( VkDevice device
+-- >     , const VkQueryPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkQueryPool* pQueryPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateQueryPool <- vkGetDeviceProc @VkCreateQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateQueryPool <- vkGetProc @VkCreateQueryPool
+--
+-- __Note:__ @vkCreateQueryPoolUnsafe@ and @vkCreateQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateQueryPool@ is an alias
+--           of @vkCreateQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateQueryPoolSafe@.
+--
+vkCreateQueryPool ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkQueryPool -- ^ pQueryPool
+                                                                   -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateQueryPool = vkCreateQueryPoolUnsafe
+##else
+vkCreateQueryPool = vkCreateQueryPoolSafe
+
+##endif
+{-# INLINE vkCreateQueryPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateQueryPool
+--   >     ( VkDevice device
+--   >     , const VkQueryPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkQueryPool* pQueryPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateQueryPool vkCreateQueryPool registry at www.khronos.org>
+type HS_vkCreateQueryPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkQueryPoolCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkQueryPool -- ^ pQueryPool
+                                                      -> IO VkResult
+
+type PFN_vkCreateQueryPool = FunPtr HS_vkCreateQueryPool
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateQueryPoolUnsafe
+               :: PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkCreateQueryPoolSafe ::
+               PFN_vkCreateQueryPool -> HS_vkCreateQueryPool
+
+instance VulkanProc "vkCreateQueryPool" where
+    type VkProcType "vkCreateQueryPool" = HS_vkCreateQueryPool
+    vkProcSymbol = _VkCreateQueryPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateQueryPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateQueryPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyQueryPool :: CString
+
+pattern VkDestroyQueryPool <- (is_VkDestroyQueryPool -> True)
+  where
+    VkDestroyQueryPool = _VkDestroyQueryPool
+
+{-# INLINE _VkDestroyQueryPool #-}
+
+_VkDestroyQueryPool :: CString
+_VkDestroyQueryPool = Ptr "vkDestroyQueryPool\NUL"##
+
+{-# INLINE is_VkDestroyQueryPool #-}
+
+is_VkDestroyQueryPool :: CString -> Bool
+is_VkDestroyQueryPool = (EQ ==) . cmpCStrings _VkDestroyQueryPool
+
+type VkDestroyQueryPool = "vkDestroyQueryPool"
+
+-- |
+-- > void vkDestroyQueryPool
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
+--
+-- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
+--           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyQueryPool"
+               vkDestroyQueryPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkQueryPool -- ^ queryPool
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyQueryPoolUnsafe ::
+                         VkDevice -- ^ device
+                                  -> VkQueryPool -- ^ queryPool
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyQueryPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyQueryPool)
+
+{-# NOINLINE vkDestroyQueryPoolUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyQueryPool
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
+--
+-- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
+--           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyQueryPool"
+               vkDestroyQueryPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkQueryPool -- ^ queryPool
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyQueryPoolSafe ::
+                       VkDevice -- ^ device
+                                -> VkQueryPool -- ^ queryPool
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyQueryPool)
+
+{-# NOINLINE vkDestroyQueryPoolSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyQueryPool
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyQueryPool <- vkGetDeviceProc @VkDestroyQueryPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyQueryPool <- vkGetProc @VkDestroyQueryPool
+--
+-- __Note:__ @vkDestroyQueryPoolUnsafe@ and @vkDestroyQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyQueryPool@ is an alias
+--           of @vkDestroyQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyQueryPoolSafe@.
+--
+vkDestroyQueryPool ::
+                   VkDevice -- ^ device
+                            -> VkQueryPool -- ^ queryPool
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyQueryPool = vkDestroyQueryPoolUnsafe
+##else
+vkDestroyQueryPool = vkDestroyQueryPoolSafe
+
+##endif
+{-# INLINE vkDestroyQueryPool #-}
+
+-- | > void vkDestroyQueryPool
+--   >     ( VkDevice device
+--   >     , VkQueryPool queryPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyQueryPool vkDestroyQueryPool registry at www.khronos.org>
+type HS_vkDestroyQueryPool =
+     VkDevice -- ^ device
+              -> VkQueryPool -- ^ queryPool
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyQueryPool = FunPtr HS_vkDestroyQueryPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyQueryPoolUnsafe ::
+               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkDestroyQueryPoolSafe ::
+               PFN_vkDestroyQueryPool -> HS_vkDestroyQueryPool
+
+instance VulkanProc "vkDestroyQueryPool" where
+    type VkProcType "vkDestroyQueryPool" = HS_vkDestroyQueryPool
+    vkProcSymbol = _VkDestroyQueryPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyQueryPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyQueryPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetQueryPoolResults :: CString
+
+pattern VkGetQueryPoolResults <- (is_VkGetQueryPoolResults -> True)
+  where
+    VkGetQueryPoolResults = _VkGetQueryPoolResults
+
+{-# INLINE _VkGetQueryPoolResults #-}
+
+_VkGetQueryPoolResults :: CString
+_VkGetQueryPoolResults = Ptr "vkGetQueryPoolResults\NUL"##
+
+{-# INLINE is_VkGetQueryPoolResults #-}
+
+is_VkGetQueryPoolResults :: CString -> Bool
+is_VkGetQueryPoolResults
+  = (EQ ==) . cmpCStrings _VkGetQueryPoolResults
+
+type VkGetQueryPoolResults = "vkGetQueryPoolResults"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetQueryPoolResults
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , size_t dataSize
+-- >     , void* pData
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
+--
+-- or less efficient:
+--
+-- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
+--
+-- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
+--           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetQueryPoolResults"
+               vkGetQueryPoolResultsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       CSize -- ^ dataSize
+                             ->
+                         Ptr Void -- ^ pData
+                                  -> VkDeviceSize -- ^ stride
+                                                  -> VkQueryResultFlags -- ^ flags
+                                                                        -> IO VkResult
+
+##else
+vkGetQueryPoolResultsUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkQueryPool -- ^ queryPool
+                                          ->
+                                Word32 -- ^ firstQuery
+                                       ->
+                                  Word32 -- ^ queryCount
+                                         ->
+                                    CSize -- ^ dataSize
+                                          ->
+                                      Ptr Void -- ^ pData
+                                               -> VkDeviceSize -- ^ stride
+                                                               -> VkQueryResultFlags -- ^ flags
+                                                                                     -> IO VkResult
+vkGetQueryPoolResultsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetQueryPoolResults)
+
+{-# NOINLINE vkGetQueryPoolResultsUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetQueryPoolResults
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , size_t dataSize
+-- >     , void* pData
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
+--
+-- or less efficient:
+--
+-- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
+--
+-- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
+--           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetQueryPoolResults"
+               vkGetQueryPoolResultsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       CSize -- ^ dataSize
+                             ->
+                         Ptr Void -- ^ pData
+                                  -> VkDeviceSize -- ^ stride
+                                                  -> VkQueryResultFlags -- ^ flags
+                                                                        -> IO VkResult
+
+##else
+vkGetQueryPoolResultsSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkQueryPool -- ^ queryPool
+                                        ->
+                              Word32 -- ^ firstQuery
+                                     ->
+                                Word32 -- ^ queryCount
+                                       ->
+                                  CSize -- ^ dataSize
+                                        ->
+                                    Ptr Void -- ^ pData
+                                             -> VkDeviceSize -- ^ stride
+                                                             -> VkQueryResultFlags -- ^ flags
+                                                                                   -> IO VkResult
+vkGetQueryPoolResultsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetQueryPoolResults)
+
+{-# NOINLINE vkGetQueryPoolResultsSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+-- > VkResult vkGetQueryPoolResults
+-- >     ( VkDevice device
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , size_t dataSize
+-- >     , void* pData
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetQueryPoolResults <- vkGetDeviceProc @VkGetQueryPoolResults vkDevice
+--
+-- or less efficient:
+--
+-- > myGetQueryPoolResults <- vkGetProc @VkGetQueryPoolResults
+--
+-- __Note:__ @vkGetQueryPoolResultsUnsafe@ and @vkGetQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetQueryPoolResults@ is an alias
+--           of @vkGetQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetQueryPoolResultsSafe@.
+--
+vkGetQueryPoolResults ::
+                      VkDevice -- ^ device
+                               ->
+                        VkQueryPool -- ^ queryPool
+                                    ->
+                          Word32 -- ^ firstQuery
+                                 ->
+                            Word32 -- ^ queryCount
+                                   ->
+                              CSize -- ^ dataSize
+                                    ->
+                                Ptr Void -- ^ pData
+                                         -> VkDeviceSize -- ^ stride
+                                                         -> VkQueryResultFlags -- ^ flags
+                                                                               -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetQueryPoolResults = vkGetQueryPoolResultsUnsafe
+##else
+vkGetQueryPoolResults = vkGetQueryPoolResultsSafe
+
+##endif
+{-# INLINE vkGetQueryPoolResults #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_NOT_READY'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_DEVICE_LOST'.
+--
+--   > VkResult vkGetQueryPoolResults
+--   >     ( VkDevice device
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     , size_t dataSize
+--   >     , void* pData
+--   >     , VkDeviceSize stride
+--   >     , VkQueryResultFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetQueryPoolResults vkGetQueryPoolResults registry at www.khronos.org>
+type HS_vkGetQueryPoolResults =
+     VkDevice -- ^ device
+              ->
+       VkQueryPool -- ^ queryPool
+                   ->
+         Word32 -- ^ firstQuery
+                ->
+           Word32 -- ^ queryCount
+                  ->
+             CSize -- ^ dataSize
+                   ->
+               Ptr Void -- ^ pData
+                        -> VkDeviceSize -- ^ stride
+                                        -> VkQueryResultFlags -- ^ flags
+                                                              -> IO VkResult
+
+type PFN_vkGetQueryPoolResults = FunPtr HS_vkGetQueryPoolResults
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetQueryPoolResultsUnsafe ::
+               PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
+
+foreign import ccall safe "dynamic" unwrapVkGetQueryPoolResultsSafe
+               :: PFN_vkGetQueryPoolResults -> HS_vkGetQueryPoolResults
+
+instance VulkanProc "vkGetQueryPoolResults" where
+    type VkProcType "vkGetQueryPoolResults" = HS_vkGetQueryPoolResults
+    vkProcSymbol = _VkGetQueryPoolResults
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetQueryPoolResultsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetQueryPoolResultsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateBuffer :: CString
+
+pattern VkCreateBuffer <- (is_VkCreateBuffer -> True)
+  where
+    VkCreateBuffer = _VkCreateBuffer
+
+{-# INLINE _VkCreateBuffer #-}
+
+_VkCreateBuffer :: CString
+_VkCreateBuffer = Ptr "vkCreateBuffer\NUL"##
+
+{-# INLINE is_VkCreateBuffer #-}
+
+is_VkCreateBuffer :: CString -> Bool
+is_VkCreateBuffer = (EQ ==) . cmpCStrings _VkCreateBuffer
+
+type VkCreateBuffer = "vkCreateBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBuffer
+-- >     ( VkDevice device
+-- >     , const VkBufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBuffer* pBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBuffer <- vkGetProc @VkCreateBuffer
+--
+-- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
+--           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateBuffer" vkCreateBufferUnsafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+
+##else
+vkCreateBufferUnsafe ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                              ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkBuffer -- ^ pBuffer
+                                                                   -> IO VkResult
+vkCreateBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateBuffer)
+
+{-# NOINLINE vkCreateBufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBuffer
+-- >     ( VkDevice device
+-- >     , const VkBufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBuffer* pBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBuffer <- vkGetProc @VkCreateBuffer
+--
+-- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
+--           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateBuffer" vkCreateBufferSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+
+##else
+vkCreateBufferSafe ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                            ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkBuffer -- ^ pBuffer
+                                                                 -> IO VkResult
+vkCreateBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBuffer)
+
+{-# NOINLINE vkCreateBufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBuffer
+-- >     ( VkDevice device
+-- >     , const VkBufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBuffer* pBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBuffer <- vkGetDeviceProc @VkCreateBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBuffer <- vkGetProc @VkCreateBuffer
+--
+-- __Note:__ @vkCreateBufferUnsafe@ and @vkCreateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBuffer@ is an alias
+--           of @vkCreateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferSafe@.
+--
+vkCreateBuffer ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBuffer -- ^ pBuffer
+                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateBuffer = vkCreateBufferUnsafe
+##else
+vkCreateBuffer = vkCreateBufferSafe
+
+##endif
+{-# INLINE vkCreateBuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateBuffer
+--   >     ( VkDevice device
+--   >     , const VkBufferCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkBuffer* pBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBuffer vkCreateBuffer registry at www.khronos.org>
+type HS_vkCreateBuffer =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferCreateInfo -- ^ pCreateInfo
+                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkBuffer -- ^ pBuffer
+                                                   -> IO VkResult
+
+type PFN_vkCreateBuffer = FunPtr HS_vkCreateBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateBufferUnsafe ::
+               PFN_vkCreateBuffer -> HS_vkCreateBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCreateBufferSafe ::
+               PFN_vkCreateBuffer -> HS_vkCreateBuffer
+
+instance VulkanProc "vkCreateBuffer" where
+    type VkProcType "vkCreateBuffer" = HS_vkCreateBuffer
+    vkProcSymbol = _VkCreateBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyBuffer :: CString
+
+pattern VkDestroyBuffer <- (is_VkDestroyBuffer -> True)
+  where
+    VkDestroyBuffer = _VkDestroyBuffer
+
+{-# INLINE _VkDestroyBuffer #-}
+
+_VkDestroyBuffer :: CString
+_VkDestroyBuffer = Ptr "vkDestroyBuffer\NUL"##
+
+{-# INLINE is_VkDestroyBuffer #-}
+
+is_VkDestroyBuffer :: CString -> Bool
+is_VkDestroyBuffer = (EQ ==) . cmpCStrings _VkDestroyBuffer
+
+type VkDestroyBuffer = "vkDestroyBuffer"
+
+-- |
+-- > void vkDestroyBuffer
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
+--
+-- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
+--           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyBuffer" vkDestroyBufferUnsafe
+               :: VkDevice -- ^ device
+                           -> VkBuffer -- ^ buffer
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyBufferUnsafe ::
+                      VkDevice -- ^ device
+                               -> VkBuffer -- ^ buffer
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+vkDestroyBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyBuffer)
+
+{-# NOINLINE vkDestroyBufferUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyBuffer
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
+--
+-- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
+--           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyBuffer" vkDestroyBufferSafe ::
+               VkDevice -- ^ device
+                        -> VkBuffer -- ^ buffer
+                                    -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 -> IO ()
+
+##else
+vkDestroyBufferSafe ::
+                    VkDevice -- ^ device
+                             -> VkBuffer -- ^ buffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBuffer)
+
+{-# NOINLINE vkDestroyBufferSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyBuffer
+-- >     ( VkDevice device
+-- >     , VkBuffer buffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBuffer <- vkGetDeviceProc @VkDestroyBuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBuffer <- vkGetProc @VkDestroyBuffer
+--
+-- __Note:__ @vkDestroyBufferUnsafe@ and @vkDestroyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBuffer@ is an alias
+--           of @vkDestroyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferSafe@.
+--
+vkDestroyBuffer ::
+                VkDevice -- ^ device
+                         -> VkBuffer -- ^ buffer
+                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyBuffer = vkDestroyBufferUnsafe
+##else
+vkDestroyBuffer = vkDestroyBufferSafe
+
+##endif
+{-# INLINE vkDestroyBuffer #-}
+
+-- | > void vkDestroyBuffer
+--   >     ( VkDevice device
+--   >     , VkBuffer buffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBuffer vkDestroyBuffer registry at www.khronos.org>
+type HS_vkDestroyBuffer =
+     VkDevice -- ^ device
+              -> VkBuffer -- ^ buffer
+                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> IO ()
+
+type PFN_vkDestroyBuffer = FunPtr HS_vkDestroyBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyBufferUnsafe
+               :: PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
+
+foreign import ccall safe "dynamic" unwrapVkDestroyBufferSafe ::
+               PFN_vkDestroyBuffer -> HS_vkDestroyBuffer
+
+instance VulkanProc "vkDestroyBuffer" where
+    type VkProcType "vkDestroyBuffer" = HS_vkDestroyBuffer
+    vkProcSymbol = _VkDestroyBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateBufferView :: CString
+
+pattern VkCreateBufferView <- (is_VkCreateBufferView -> True)
+  where
+    VkCreateBufferView = _VkCreateBufferView
+
+{-# INLINE _VkCreateBufferView #-}
+
+_VkCreateBufferView :: CString
+_VkCreateBufferView = Ptr "vkCreateBufferView\NUL"##
+
+{-# INLINE is_VkCreateBufferView #-}
+
+is_VkCreateBufferView :: CString -> Bool
+is_VkCreateBufferView = (EQ ==) . cmpCStrings _VkCreateBufferView
+
+type VkCreateBufferView = "vkCreateBufferView"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBufferView
+-- >     ( VkDevice device
+-- >     , const VkBufferViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBufferView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBufferView <- vkGetProc @VkCreateBufferView
+--
+-- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
+--           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateBufferView"
+               vkCreateBufferViewUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBufferView -- ^ pView
+                                                                 -> IO VkResult
+
+##else
+vkCreateBufferViewUnsafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                                      ->
+                             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> Ptr VkBufferView -- ^ pView
+                                                                           -> IO VkResult
+vkCreateBufferViewUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateBufferView)
+
+{-# NOINLINE vkCreateBufferViewUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBufferView
+-- >     ( VkDevice device
+-- >     , const VkBufferViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBufferView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBufferView <- vkGetProc @VkCreateBufferView
+--
+-- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
+--           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateBufferView"
+               vkCreateBufferViewSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkBufferView -- ^ pView
+                                                                 -> IO VkResult
+
+##else
+vkCreateBufferViewSafe ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                                    ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkBufferView -- ^ pView
+                                                                         -> IO VkResult
+vkCreateBufferViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateBufferView)
+
+{-# NOINLINE vkCreateBufferViewSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateBufferView
+-- >     ( VkDevice device
+-- >     , const VkBufferViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkBufferView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateBufferView <- vkGetDeviceProc @VkCreateBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateBufferView <- vkGetProc @VkCreateBufferView
+--
+-- __Note:__ @vkCreateBufferViewUnsafe@ and @vkCreateBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateBufferView@ is an alias
+--           of @vkCreateBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateBufferViewSafe@.
+--
+vkCreateBufferView ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                                ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkBufferView -- ^ pView
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateBufferView = vkCreateBufferViewUnsafe
+##else
+vkCreateBufferView = vkCreateBufferViewSafe
+
+##endif
+{-# INLINE vkCreateBufferView #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateBufferView
+--   >     ( VkDevice device
+--   >     , const VkBufferViewCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkBufferView* pView
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateBufferView vkCreateBufferView registry at www.khronos.org>
+type HS_vkCreateBufferView =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferViewCreateInfo -- ^ pCreateInfo
+                                  ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkBufferView -- ^ pView
+                                                       -> IO VkResult
+
+type PFN_vkCreateBufferView = FunPtr HS_vkCreateBufferView
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateBufferViewUnsafe ::
+               PFN_vkCreateBufferView -> HS_vkCreateBufferView
+
+foreign import ccall safe "dynamic" unwrapVkCreateBufferViewSafe ::
+               PFN_vkCreateBufferView -> HS_vkCreateBufferView
+
+instance VulkanProc "vkCreateBufferView" where
+    type VkProcType "vkCreateBufferView" = HS_vkCreateBufferView
+    vkProcSymbol = _VkCreateBufferView
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateBufferViewUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateBufferViewSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyBufferView :: CString
+
+pattern VkDestroyBufferView <- (is_VkDestroyBufferView -> True)
+  where
+    VkDestroyBufferView = _VkDestroyBufferView
+
+{-# INLINE _VkDestroyBufferView #-}
+
+_VkDestroyBufferView :: CString
+_VkDestroyBufferView = Ptr "vkDestroyBufferView\NUL"##
+
+{-# INLINE is_VkDestroyBufferView #-}
+
+is_VkDestroyBufferView :: CString -> Bool
+is_VkDestroyBufferView = (EQ ==) . cmpCStrings _VkDestroyBufferView
+
+type VkDestroyBufferView = "vkDestroyBufferView"
+
+-- |
+-- > void vkDestroyBufferView
+-- >     ( VkDevice device
+-- >     , VkBufferView bufferView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
+--
+-- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
+--           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyBufferView"
+               vkDestroyBufferViewUnsafe ::
+               VkDevice -- ^ device
+                        -> VkBufferView -- ^ bufferView
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyBufferViewUnsafe ::
+                          VkDevice -- ^ device
+                                   -> VkBufferView -- ^ bufferView
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyBufferViewUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyBufferView)
+
+{-# NOINLINE vkDestroyBufferViewUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyBufferView
+-- >     ( VkDevice device
+-- >     , VkBufferView bufferView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
+--
+-- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
+--           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyBufferView"
+               vkDestroyBufferViewSafe ::
+               VkDevice -- ^ device
+                        -> VkBufferView -- ^ bufferView
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyBufferViewSafe ::
+                        VkDevice -- ^ device
+                                 -> VkBufferView -- ^ bufferView
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyBufferViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyBufferView)
+
+{-# NOINLINE vkDestroyBufferViewSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyBufferView
+-- >     ( VkDevice device
+-- >     , VkBufferView bufferView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyBufferView <- vkGetDeviceProc @VkDestroyBufferView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyBufferView <- vkGetProc @VkDestroyBufferView
+--
+-- __Note:__ @vkDestroyBufferViewUnsafe@ and @vkDestroyBufferViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyBufferView@ is an alias
+--           of @vkDestroyBufferViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyBufferViewSafe@.
+--
+vkDestroyBufferView ::
+                    VkDevice -- ^ device
+                             -> VkBufferView -- ^ bufferView
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyBufferView = vkDestroyBufferViewUnsafe
+##else
+vkDestroyBufferView = vkDestroyBufferViewSafe
+
+##endif
+{-# INLINE vkDestroyBufferView #-}
+
+-- | > void vkDestroyBufferView
+--   >     ( VkDevice device
+--   >     , VkBufferView bufferView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyBufferView vkDestroyBufferView registry at www.khronos.org>
+type HS_vkDestroyBufferView =
+     VkDevice -- ^ device
+              -> VkBufferView -- ^ bufferView
+                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> IO ()
+
+type PFN_vkDestroyBufferView = FunPtr HS_vkDestroyBufferView
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyBufferViewUnsafe ::
+               PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
+
+foreign import ccall safe "dynamic" unwrapVkDestroyBufferViewSafe
+               :: PFN_vkDestroyBufferView -> HS_vkDestroyBufferView
+
+instance VulkanProc "vkDestroyBufferView" where
+    type VkProcType "vkDestroyBufferView" = HS_vkDestroyBufferView
+    vkProcSymbol = _VkDestroyBufferView
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyBufferViewUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyBufferViewSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateImage :: CString
+
+pattern VkCreateImage <- (is_VkCreateImage -> True)
+  where
+    VkCreateImage = _VkCreateImage
+
+{-# INLINE _VkCreateImage #-}
+
+_VkCreateImage :: CString
+_VkCreateImage = Ptr "vkCreateImage\NUL"##
+
+{-# INLINE is_VkCreateImage #-}
+
+is_VkCreateImage :: CString -> Bool
+is_VkCreateImage = (EQ ==) . cmpCStrings _VkCreateImage
+
+type VkCreateImage = "vkCreateImage"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImage
+-- >     ( VkDevice device
+-- >     , const VkImageCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImage* pImage
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImage <- vkGetProc @VkCreateImage
+--
+-- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImage@ is an alias
+--           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateImage" vkCreateImageUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImage -- ^ pImage
+                                                            -> IO VkResult
+
+##else
+vkCreateImageUnsafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                            ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkImage -- ^ pImage
+                                                                 -> IO VkResult
+vkCreateImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateImage)
+
+{-# NOINLINE vkCreateImageUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImage
+-- >     ( VkDevice device
+-- >     , const VkImageCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImage* pImage
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImage <- vkGetProc @VkCreateImage
+--
+-- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImage@ is an alias
+--           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateImage" vkCreateImageSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                       ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImage -- ^ pImage
+                                                            -> IO VkResult
+
+##else
+vkCreateImageSafe ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                          ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkImage -- ^ pImage
+                                                               -> IO VkResult
+vkCreateImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImage)
+
+{-# NOINLINE vkCreateImageSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImage
+-- >     ( VkDevice device
+-- >     , const VkImageCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImage* pImage
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImage <- vkGetDeviceProc @VkCreateImage vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImage <- vkGetProc @VkCreateImage
+--
+-- __Note:__ @vkCreateImageUnsafe@ and @vkCreateImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImage@ is an alias
+--           of @vkCreateImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageSafe@.
+--
+vkCreateImage ::
+              VkDevice -- ^ device
+                       ->
+                Ptr VkImageCreateInfo -- ^ pCreateInfo
+                                      ->
+                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                            -> Ptr VkImage -- ^ pImage
+                                                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateImage = vkCreateImageUnsafe
+##else
+vkCreateImage = vkCreateImageSafe
+
+##endif
+{-# INLINE vkCreateImage #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateImage
+--   >     ( VkDevice device
+--   >     , const VkImageCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkImage* pImage
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImage vkCreateImage registry at www.khronos.org>
+type HS_vkCreateImage =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageCreateInfo -- ^ pCreateInfo
+                             ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkImage -- ^ pImage
+                                                  -> IO VkResult
+
+type PFN_vkCreateImage = FunPtr HS_vkCreateImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateImageUnsafe ::
+               PFN_vkCreateImage -> HS_vkCreateImage
+
+foreign import ccall safe "dynamic" unwrapVkCreateImageSafe ::
+               PFN_vkCreateImage -> HS_vkCreateImage
+
+instance VulkanProc "vkCreateImage" where
+    type VkProcType "vkCreateImage" = HS_vkCreateImage
+    vkProcSymbol = _VkCreateImage
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateImageUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateImageSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyImage :: CString
+
+pattern VkDestroyImage <- (is_VkDestroyImage -> True)
+  where
+    VkDestroyImage = _VkDestroyImage
+
+{-# INLINE _VkDestroyImage #-}
+
+_VkDestroyImage :: CString
+_VkDestroyImage = Ptr "vkDestroyImage\NUL"##
+
+{-# INLINE is_VkDestroyImage #-}
+
+is_VkDestroyImage :: CString -> Bool
+is_VkDestroyImage = (EQ ==) . cmpCStrings _VkDestroyImage
+
+type VkDestroyImage = "vkDestroyImage"
+
+-- |
+-- > void vkDestroyImage
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImage <- vkGetProc @VkDestroyImage
+--
+-- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
+--           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyImage" vkDestroyImageUnsafe
+               :: VkDevice -- ^ device
+                           -> VkImage -- ^ image
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
+##else
+vkDestroyImageUnsafe ::
+                     VkDevice -- ^ device
+                              -> VkImage -- ^ image
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyImage)
+
+{-# NOINLINE vkDestroyImageUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyImage
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImage <- vkGetProc @VkDestroyImage
+--
+-- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
+--           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyImage" vkDestroyImageSafe ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+
+##else
+vkDestroyImageSafe ::
+                   VkDevice -- ^ device
+                            -> VkImage -- ^ image
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImage)
+
+{-# NOINLINE vkDestroyImageSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyImage
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImage <- vkGetDeviceProc @VkDestroyImage vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImage <- vkGetProc @VkDestroyImage
+--
+-- __Note:__ @vkDestroyImageUnsafe@ and @vkDestroyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImage@ is an alias
+--           of @vkDestroyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageSafe@.
+--
+vkDestroyImage ::
+               VkDevice -- ^ device
+                        -> VkImage -- ^ image
+                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyImage = vkDestroyImageUnsafe
+##else
+vkDestroyImage = vkDestroyImageSafe
+
+##endif
+{-# INLINE vkDestroyImage #-}
+
+-- | > void vkDestroyImage
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImage vkDestroyImage registry at www.khronos.org>
+type HS_vkDestroyImage =
+     VkDevice -- ^ device
+              -> VkImage -- ^ image
+                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> IO ()
+
+type PFN_vkDestroyImage = FunPtr HS_vkDestroyImage
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyImageUnsafe ::
+               PFN_vkDestroyImage -> HS_vkDestroyImage
+
+foreign import ccall safe "dynamic" unwrapVkDestroyImageSafe ::
+               PFN_vkDestroyImage -> HS_vkDestroyImage
+
+instance VulkanProc "vkDestroyImage" where
+    type VkProcType "vkDestroyImage" = HS_vkDestroyImage
+    vkProcSymbol = _VkDestroyImage
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyImageUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyImageSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSubresourceLayout :: CString
+
+pattern VkGetImageSubresourceLayout <-
+        (is_VkGetImageSubresourceLayout -> True)
+  where
+    VkGetImageSubresourceLayout = _VkGetImageSubresourceLayout
+
+{-# INLINE _VkGetImageSubresourceLayout #-}
+
+_VkGetImageSubresourceLayout :: CString
+_VkGetImageSubresourceLayout
+  = Ptr "vkGetImageSubresourceLayout\NUL"##
+
+{-# INLINE is_VkGetImageSubresourceLayout #-}
+
+is_VkGetImageSubresourceLayout :: CString -> Bool
+is_VkGetImageSubresourceLayout
+  = (EQ ==) . cmpCStrings _VkGetImageSubresourceLayout
+
+type VkGetImageSubresourceLayout = "vkGetImageSubresourceLayout"
+
+-- |
+-- > void vkGetImageSubresourceLayout
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkImageSubresource* pSubresource
+-- >     , VkSubresourceLayout* pLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
+--
+-- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
+--           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetImageSubresourceLayout"
+               vkGetImageSubresourceLayoutUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr VkImageSubresource -- ^ pSubresource
+                                          -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                     -> IO ()
+
+##else
+vkGetImageSubresourceLayoutUnsafe ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    VkImage -- ^ image
+                                            ->
+                                      Ptr VkImageSubresource -- ^ pSubresource
+                                                             -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                                        -> IO ()
+vkGetImageSubresourceLayoutUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageSubresourceLayout)
+
+{-# NOINLINE vkGetImageSubresourceLayoutUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetImageSubresourceLayout
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkImageSubresource* pSubresource
+-- >     , VkSubresourceLayout* pLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
+--
+-- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
+--           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetImageSubresourceLayout"
+               vkGetImageSubresourceLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkImage -- ^ image
+                         ->
+                   Ptr VkImageSubresource -- ^ pSubresource
+                                          -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                     -> IO ()
+
+##else
+vkGetImageSubresourceLayoutSafe ::
+                                VkDevice -- ^ device
+                                         ->
+                                  VkImage -- ^ image
+                                          ->
+                                    Ptr VkImageSubresource -- ^ pSubresource
+                                                           -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                                      -> IO ()
+vkGetImageSubresourceLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSubresourceLayout)
+
+{-# NOINLINE vkGetImageSubresourceLayoutSafe #-}
+##endif
+
+-- |
+-- > void vkGetImageSubresourceLayout
+-- >     ( VkDevice device
+-- >     , VkImage image
+-- >     , const VkImageSubresource* pSubresource
+-- >     , VkSubresourceLayout* pLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSubresourceLayout <- vkGetDeviceProc @VkGetImageSubresourceLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSubresourceLayout <- vkGetProc @VkGetImageSubresourceLayout
+--
+-- __Note:__ @vkGetImageSubresourceLayoutUnsafe@ and @vkGetImageSubresourceLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSubresourceLayout@ is an alias
+--           of @vkGetImageSubresourceLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSubresourceLayoutSafe@.
+--
+vkGetImageSubresourceLayout ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkImage -- ^ image
+                                      ->
+                                Ptr VkImageSubresource -- ^ pSubresource
+                                                       -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetImageSubresourceLayout = vkGetImageSubresourceLayoutUnsafe
+##else
+vkGetImageSubresourceLayout = vkGetImageSubresourceLayoutSafe
+
+##endif
+{-# INLINE vkGetImageSubresourceLayout #-}
+
+-- | > void vkGetImageSubresourceLayout
+--   >     ( VkDevice device
+--   >     , VkImage image
+--   >     , const VkImageSubresource* pSubresource
+--   >     , VkSubresourceLayout* pLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSubresourceLayout vkGetImageSubresourceLayout registry at www.khronos.org>
+type HS_vkGetImageSubresourceLayout =
+     VkDevice -- ^ device
+              ->
+       VkImage -- ^ image
+               ->
+         Ptr VkImageSubresource -- ^ pSubresource
+                                -> Ptr VkSubresourceLayout -- ^ pLayout
+                                                           -> IO ()
+
+type PFN_vkGetImageSubresourceLayout =
+     FunPtr HS_vkGetImageSubresourceLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSubresourceLayoutUnsafe ::
+               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSubresourceLayoutSafe ::
+               PFN_vkGetImageSubresourceLayout -> HS_vkGetImageSubresourceLayout
+
+instance VulkanProc "vkGetImageSubresourceLayout" where
+    type VkProcType "vkGetImageSubresourceLayout" =
+         HS_vkGetImageSubresourceLayout
+    vkProcSymbol = _VkGetImageSubresourceLayout
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetImageSubresourceLayoutUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetImageSubresourceLayoutSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateImageView :: CString
+
+pattern VkCreateImageView <- (is_VkCreateImageView -> True)
+  where
+    VkCreateImageView = _VkCreateImageView
+
+{-# INLINE _VkCreateImageView #-}
+
+_VkCreateImageView :: CString
+_VkCreateImageView = Ptr "vkCreateImageView\NUL"##
+
+{-# INLINE is_VkCreateImageView #-}
+
+is_VkCreateImageView :: CString -> Bool
+is_VkCreateImageView = (EQ ==) . cmpCStrings _VkCreateImageView
+
+type VkCreateImageView = "vkCreateImageView"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImageView
+-- >     ( VkDevice device
+-- >     , const VkImageViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImageView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImageView <- vkGetProc @VkCreateImageView
+--
+-- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
+--           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateImageView"
+               vkCreateImageViewUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImageView -- ^ pView
+                                                                -> IO VkResult
+
+##else
+vkCreateImageViewUnsafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                                    ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkImageView -- ^ pView
+                                                                         -> IO VkResult
+vkCreateImageViewUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateImageView)
+
+{-# NOINLINE vkCreateImageViewUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImageView
+-- >     ( VkDevice device
+-- >     , const VkImageViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImageView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImageView <- vkGetProc @VkCreateImageView
+--
+-- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
+--           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateImageView" vkCreateImageViewSafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                           ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkImageView -- ^ pView
+                                                                -> IO VkResult
+
+##else
+vkCreateImageViewSafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                                  ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkImageView -- ^ pView
+                                                                       -> IO VkResult
+vkCreateImageViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateImageView)
+
+{-# NOINLINE vkCreateImageViewSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateImageView
+-- >     ( VkDevice device
+-- >     , const VkImageViewCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkImageView* pView
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateImageView <- vkGetDeviceProc @VkCreateImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateImageView <- vkGetProc @VkCreateImageView
+--
+-- __Note:__ @vkCreateImageViewUnsafe@ and @vkCreateImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateImageView@ is an alias
+--           of @vkCreateImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateImageViewSafe@.
+--
+vkCreateImageView ::
+                  VkDevice -- ^ device
+                           ->
+                    Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                              ->
+                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                -> Ptr VkImageView -- ^ pView
+                                                                   -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateImageView = vkCreateImageViewUnsafe
+##else
+vkCreateImageView = vkCreateImageViewSafe
+
+##endif
+{-# INLINE vkCreateImageView #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateImageView
+--   >     ( VkDevice device
+--   >     , const VkImageViewCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkImageView* pView
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateImageView vkCreateImageView registry at www.khronos.org>
+type HS_vkCreateImageView =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageViewCreateInfo -- ^ pCreateInfo
+                                 ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkImageView -- ^ pView
+                                                      -> IO VkResult
+
+type PFN_vkCreateImageView = FunPtr HS_vkCreateImageView
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateImageViewUnsafe
+               :: PFN_vkCreateImageView -> HS_vkCreateImageView
+
+foreign import ccall safe "dynamic" unwrapVkCreateImageViewSafe ::
+               PFN_vkCreateImageView -> HS_vkCreateImageView
+
+instance VulkanProc "vkCreateImageView" where
+    type VkProcType "vkCreateImageView" = HS_vkCreateImageView
+    vkProcSymbol = _VkCreateImageView
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateImageViewUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateImageViewSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyImageView :: CString
+
+pattern VkDestroyImageView <- (is_VkDestroyImageView -> True)
+  where
+    VkDestroyImageView = _VkDestroyImageView
+
+{-# INLINE _VkDestroyImageView #-}
+
+_VkDestroyImageView :: CString
+_VkDestroyImageView = Ptr "vkDestroyImageView\NUL"##
+
+{-# INLINE is_VkDestroyImageView #-}
+
+is_VkDestroyImageView :: CString -> Bool
+is_VkDestroyImageView = (EQ ==) . cmpCStrings _VkDestroyImageView
+
+type VkDestroyImageView = "vkDestroyImageView"
+
+-- |
+-- > void vkDestroyImageView
+-- >     ( VkDevice device
+-- >     , VkImageView imageView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImageView <- vkGetProc @VkDestroyImageView
+--
+-- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
+--           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyImageView"
+               vkDestroyImageViewUnsafe ::
+               VkDevice -- ^ device
+                        -> VkImageView -- ^ imageView
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyImageViewUnsafe ::
+                         VkDevice -- ^ device
+                                  -> VkImageView -- ^ imageView
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyImageViewUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyImageView)
+
+{-# NOINLINE vkDestroyImageViewUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyImageView
+-- >     ( VkDevice device
+-- >     , VkImageView imageView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImageView <- vkGetProc @VkDestroyImageView
+--
+-- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
+--           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyImageView"
+               vkDestroyImageViewSafe ::
+               VkDevice -- ^ device
+                        -> VkImageView -- ^ imageView
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyImageViewSafe ::
+                       VkDevice -- ^ device
+                                -> VkImageView -- ^ imageView
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyImageViewSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyImageView)
+
+{-# NOINLINE vkDestroyImageViewSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyImageView
+-- >     ( VkDevice device
+-- >     , VkImageView imageView
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyImageView <- vkGetDeviceProc @VkDestroyImageView vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyImageView <- vkGetProc @VkDestroyImageView
+--
+-- __Note:__ @vkDestroyImageViewUnsafe@ and @vkDestroyImageViewSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyImageView@ is an alias
+--           of @vkDestroyImageViewUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyImageViewSafe@.
+--
+vkDestroyImageView ::
+                   VkDevice -- ^ device
+                            -> VkImageView -- ^ imageView
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyImageView = vkDestroyImageViewUnsafe
+##else
+vkDestroyImageView = vkDestroyImageViewSafe
+
+##endif
+{-# INLINE vkDestroyImageView #-}
+
+-- | > void vkDestroyImageView
+--   >     ( VkDevice device
+--   >     , VkImageView imageView
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyImageView vkDestroyImageView registry at www.khronos.org>
+type HS_vkDestroyImageView =
+     VkDevice -- ^ device
+              -> VkImageView -- ^ imageView
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyImageView = FunPtr HS_vkDestroyImageView
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyImageViewUnsafe ::
+               PFN_vkDestroyImageView -> HS_vkDestroyImageView
+
+foreign import ccall safe "dynamic" unwrapVkDestroyImageViewSafe ::
+               PFN_vkDestroyImageView -> HS_vkDestroyImageView
+
+instance VulkanProc "vkDestroyImageView" where
+    type VkProcType "vkDestroyImageView" = HS_vkDestroyImageView
+    vkProcSymbol = _VkDestroyImageView
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyImageViewUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyImageViewSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateShaderModule :: CString
+
+pattern VkCreateShaderModule <- (is_VkCreateShaderModule -> True)
+  where
+    VkCreateShaderModule = _VkCreateShaderModule
+
+{-# INLINE _VkCreateShaderModule #-}
+
+_VkCreateShaderModule :: CString
+_VkCreateShaderModule = Ptr "vkCreateShaderModule\NUL"##
+
+{-# INLINE is_VkCreateShaderModule #-}
+
+is_VkCreateShaderModule :: CString -> Bool
+is_VkCreateShaderModule
+  = (EQ ==) . cmpCStrings _VkCreateShaderModule
+
+type VkCreateShaderModule = "vkCreateShaderModule"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateShaderModule
+-- >     ( VkDevice device
+-- >     , const VkShaderModuleCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkShaderModule* pShaderModule
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
+--
+-- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
+--           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateShaderModule"
+               vkCreateShaderModuleUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                   -> IO VkResult
+
+##else
+vkCreateShaderModuleUnsafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                                          ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                               -> IO VkResult
+vkCreateShaderModuleUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateShaderModule)
+
+{-# NOINLINE vkCreateShaderModuleUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateShaderModule
+-- >     ( VkDevice device
+-- >     , const VkShaderModuleCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkShaderModule* pShaderModule
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
+--
+-- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
+--           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateShaderModule"
+               vkCreateShaderModuleSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                              ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                   -> IO VkResult
+
+##else
+vkCreateShaderModuleSafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                                        ->
+                             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                             -> IO VkResult
+vkCreateShaderModuleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateShaderModule)
+
+{-# NOINLINE vkCreateShaderModuleSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateShaderModule
+-- >     ( VkDevice device
+-- >     , const VkShaderModuleCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkShaderModule* pShaderModule
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateShaderModule <- vkGetDeviceProc @VkCreateShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateShaderModule <- vkGetProc @VkCreateShaderModule
+--
+-- __Note:__ @vkCreateShaderModuleUnsafe@ and @vkCreateShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateShaderModule@ is an alias
+--           of @vkCreateShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateShaderModuleSafe@.
+--
+vkCreateShaderModule ::
+                     VkDevice -- ^ device
+                              ->
+                       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                                    ->
+                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                   -> Ptr VkShaderModule -- ^ pShaderModule
+                                                                         -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateShaderModule = vkCreateShaderModuleUnsafe
+##else
+vkCreateShaderModule = vkCreateShaderModuleSafe
+
+##endif
+{-# INLINE vkCreateShaderModule #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateShaderModule
+--   >     ( VkDevice device
+--   >     , const VkShaderModuleCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkShaderModule* pShaderModule
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateShaderModule vkCreateShaderModule registry at www.khronos.org>
+type HS_vkCreateShaderModule =
+     VkDevice -- ^ device
+              ->
+       Ptr VkShaderModuleCreateInfo -- ^ pCreateInfo
+                                    ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkShaderModule -- ^ pShaderModule
+                                                         -> IO VkResult
+
+type PFN_vkCreateShaderModule = FunPtr HS_vkCreateShaderModule
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateShaderModuleUnsafe ::
+               PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
+
+foreign import ccall safe "dynamic" unwrapVkCreateShaderModuleSafe
+               :: PFN_vkCreateShaderModule -> HS_vkCreateShaderModule
+
+instance VulkanProc "vkCreateShaderModule" where
+    type VkProcType "vkCreateShaderModule" = HS_vkCreateShaderModule
+    vkProcSymbol = _VkCreateShaderModule
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateShaderModuleUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateShaderModuleSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyShaderModule :: CString
+
+pattern VkDestroyShaderModule <- (is_VkDestroyShaderModule -> True)
+  where
+    VkDestroyShaderModule = _VkDestroyShaderModule
+
+{-# INLINE _VkDestroyShaderModule #-}
+
+_VkDestroyShaderModule :: CString
+_VkDestroyShaderModule = Ptr "vkDestroyShaderModule\NUL"##
+
+{-# INLINE is_VkDestroyShaderModule #-}
+
+is_VkDestroyShaderModule :: CString -> Bool
+is_VkDestroyShaderModule
+  = (EQ ==) . cmpCStrings _VkDestroyShaderModule
+
+type VkDestroyShaderModule = "vkDestroyShaderModule"
+
+-- |
+-- > void vkDestroyShaderModule
+-- >     ( VkDevice device
+-- >     , VkShaderModule shaderModule
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
+--
+-- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
+--           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyShaderModule"
+               vkDestroyShaderModuleUnsafe ::
+               VkDevice -- ^ device
+                        -> VkShaderModule -- ^ shaderModule
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroyShaderModuleUnsafe ::
+                            VkDevice -- ^ device
+                                     -> VkShaderModule -- ^ shaderModule
+                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                    -> IO ()
+vkDestroyShaderModuleUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyShaderModule)
+
+{-# NOINLINE vkDestroyShaderModuleUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyShaderModule
+-- >     ( VkDevice device
+-- >     , VkShaderModule shaderModule
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
+--
+-- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
+--           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyShaderModule"
+               vkDestroyShaderModuleSafe ::
+               VkDevice -- ^ device
+                        -> VkShaderModule -- ^ shaderModule
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+##else
+vkDestroyShaderModuleSafe ::
+                          VkDevice -- ^ device
+                                   -> VkShaderModule -- ^ shaderModule
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyShaderModuleSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyShaderModule)
+
+{-# NOINLINE vkDestroyShaderModuleSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyShaderModule
+-- >     ( VkDevice device
+-- >     , VkShaderModule shaderModule
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyShaderModule <- vkGetDeviceProc @VkDestroyShaderModule vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyShaderModule <- vkGetProc @VkDestroyShaderModule
+--
+-- __Note:__ @vkDestroyShaderModuleUnsafe@ and @vkDestroyShaderModuleSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyShaderModule@ is an alias
+--           of @vkDestroyShaderModuleUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyShaderModuleSafe@.
+--
+vkDestroyShaderModule ::
+                      VkDevice -- ^ device
+                               -> VkShaderModule -- ^ shaderModule
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyShaderModule = vkDestroyShaderModuleUnsafe
+##else
+vkDestroyShaderModule = vkDestroyShaderModuleSafe
+
+##endif
+{-# INLINE vkDestroyShaderModule #-}
+
+-- | > void vkDestroyShaderModule
+--   >     ( VkDevice device
+--   >     , VkShaderModule shaderModule
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyShaderModule vkDestroyShaderModule registry at www.khronos.org>
+type HS_vkDestroyShaderModule =
+     VkDevice -- ^ device
+              -> VkShaderModule -- ^ shaderModule
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkDestroyShaderModule = FunPtr HS_vkDestroyShaderModule
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyShaderModuleUnsafe ::
+               PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
+
+foreign import ccall safe "dynamic" unwrapVkDestroyShaderModuleSafe
+               :: PFN_vkDestroyShaderModule -> HS_vkDestroyShaderModule
+
+instance VulkanProc "vkDestroyShaderModule" where
+    type VkProcType "vkDestroyShaderModule" = HS_vkDestroyShaderModule
+    vkProcSymbol = _VkDestroyShaderModule
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyShaderModuleUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyShaderModuleSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreatePipelineCache :: CString
+
+pattern VkCreatePipelineCache <- (is_VkCreatePipelineCache -> True)
+  where
+    VkCreatePipelineCache = _VkCreatePipelineCache
+
+{-# INLINE _VkCreatePipelineCache #-}
+
+_VkCreatePipelineCache :: CString
+_VkCreatePipelineCache = Ptr "vkCreatePipelineCache\NUL"##
+
+{-# INLINE is_VkCreatePipelineCache #-}
+
+is_VkCreatePipelineCache :: CString -> Bool
+is_VkCreatePipelineCache
+  = (EQ ==) . cmpCStrings _VkCreatePipelineCache
+
+type VkCreatePipelineCache = "vkCreatePipelineCache"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineCache
+-- >     ( VkDevice device
+-- >     , const VkPipelineCacheCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineCache* pPipelineCache
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
+--
+-- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
+--           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreatePipelineCache"
+               vkCreatePipelineCacheUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                    -> IO VkResult
+
+##else
+vkCreatePipelineCacheUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                                            ->
+                                Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                                 -> IO VkResult
+vkCreatePipelineCacheUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreatePipelineCache)
+
+{-# NOINLINE vkCreatePipelineCacheUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineCache
+-- >     ( VkDevice device
+-- >     , const VkPipelineCacheCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineCache* pPipelineCache
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
+--
+-- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
+--           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreatePipelineCache"
+               vkCreatePipelineCacheSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                               ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                    -> IO VkResult
+
+##else
+vkCreatePipelineCacheSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                                          ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                               -> IO VkResult
+vkCreatePipelineCacheSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineCache)
+
+{-# NOINLINE vkCreatePipelineCacheSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineCache
+-- >     ( VkDevice device
+-- >     , const VkPipelineCacheCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineCache* pPipelineCache
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineCache <- vkGetDeviceProc @VkCreatePipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineCache <- vkGetProc @VkCreatePipelineCache
+--
+-- __Note:__ @vkCreatePipelineCacheUnsafe@ and @vkCreatePipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineCache@ is an alias
+--           of @vkCreatePipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineCacheSafe@.
+--
+vkCreatePipelineCache ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                                      ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                                           -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreatePipelineCache = vkCreatePipelineCacheUnsafe
+##else
+vkCreatePipelineCache = vkCreatePipelineCacheSafe
+
+##endif
+{-# INLINE vkCreatePipelineCache #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreatePipelineCache
+--   >     ( VkDevice device
+--   >     , const VkPipelineCacheCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipelineCache* pPipelineCache
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineCache vkCreatePipelineCache registry at www.khronos.org>
+type HS_vkCreatePipelineCache =
+     VkDevice -- ^ device
+              ->
+       Ptr VkPipelineCacheCreateInfo -- ^ pCreateInfo
+                                     ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkPipelineCache -- ^ pPipelineCache
+                                                          -> IO VkResult
+
+type PFN_vkCreatePipelineCache = FunPtr HS_vkCreatePipelineCache
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreatePipelineCacheUnsafe ::
+               PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
+
+foreign import ccall safe "dynamic" unwrapVkCreatePipelineCacheSafe
+               :: PFN_vkCreatePipelineCache -> HS_vkCreatePipelineCache
+
+instance VulkanProc "vkCreatePipelineCache" where
+    type VkProcType "vkCreatePipelineCache" = HS_vkCreatePipelineCache
+    vkProcSymbol = _VkCreatePipelineCache
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreatePipelineCacheUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreatePipelineCacheSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipelineCache :: CString
+
+pattern VkDestroyPipelineCache <-
+        (is_VkDestroyPipelineCache -> True)
+  where
+    VkDestroyPipelineCache = _VkDestroyPipelineCache
+
+{-# INLINE _VkDestroyPipelineCache #-}
+
+_VkDestroyPipelineCache :: CString
+_VkDestroyPipelineCache = Ptr "vkDestroyPipelineCache\NUL"##
+
+{-# INLINE is_VkDestroyPipelineCache #-}
+
+is_VkDestroyPipelineCache :: CString -> Bool
+is_VkDestroyPipelineCache
+  = (EQ ==) . cmpCStrings _VkDestroyPipelineCache
+
+type VkDestroyPipelineCache = "vkDestroyPipelineCache"
+
+-- |
+-- > void vkDestroyPipelineCache
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
+--
+-- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
+--           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipelineCache"
+               vkDestroyPipelineCacheUnsafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+
+##else
+vkDestroyPipelineCacheUnsafe ::
+                             VkDevice -- ^ device
+                                      -> VkPipelineCache -- ^ pipelineCache
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyPipelineCacheUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipelineCache)
+
+{-# NOINLINE vkDestroyPipelineCacheUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineCache
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
+--
+-- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
+--           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipelineCache"
+               vkDestroyPipelineCacheSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+
+##else
+vkDestroyPipelineCacheSafe ::
+                           VkDevice -- ^ device
+                                    -> VkPipelineCache -- ^ pipelineCache
+                                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                    -> IO ()
+vkDestroyPipelineCacheSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineCache)
+
+{-# NOINLINE vkDestroyPipelineCacheSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineCache
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineCache <- vkGetDeviceProc @VkDestroyPipelineCache vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineCache <- vkGetProc @VkDestroyPipelineCache
+--
+-- __Note:__ @vkDestroyPipelineCacheUnsafe@ and @vkDestroyPipelineCacheSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineCache@ is an alias
+--           of @vkDestroyPipelineCacheUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineCacheSafe@.
+--
+vkDestroyPipelineCache ::
+                       VkDevice -- ^ device
+                                -> VkPipelineCache -- ^ pipelineCache
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyPipelineCache = vkDestroyPipelineCacheUnsafe
+##else
+vkDestroyPipelineCache = vkDestroyPipelineCacheSafe
+
+##endif
+{-# INLINE vkDestroyPipelineCache #-}
+
+-- | > void vkDestroyPipelineCache
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineCache vkDestroyPipelineCache registry at www.khronos.org>
+type HS_vkDestroyPipelineCache =
+     VkDevice -- ^ device
+              -> VkPipelineCache -- ^ pipelineCache
+                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              -> IO ()
+
+type PFN_vkDestroyPipelineCache = FunPtr HS_vkDestroyPipelineCache
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyPipelineCacheUnsafe ::
+               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyPipelineCacheSafe ::
+               PFN_vkDestroyPipelineCache -> HS_vkDestroyPipelineCache
+
+instance VulkanProc "vkDestroyPipelineCache" where
+    type VkProcType "vkDestroyPipelineCache" =
+         HS_vkDestroyPipelineCache
+    vkProcSymbol = _VkDestroyPipelineCache
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineCacheUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyPipelineCacheSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPipelineCacheData :: CString
+
+pattern VkGetPipelineCacheData <-
+        (is_VkGetPipelineCacheData -> True)
+  where
+    VkGetPipelineCacheData = _VkGetPipelineCacheData
+
+{-# INLINE _VkGetPipelineCacheData #-}
+
+_VkGetPipelineCacheData :: CString
+_VkGetPipelineCacheData = Ptr "vkGetPipelineCacheData\NUL"##
+
+{-# INLINE is_VkGetPipelineCacheData #-}
+
+is_VkGetPipelineCacheData :: CString -> Bool
+is_VkGetPipelineCacheData
+  = (EQ ==) . cmpCStrings _VkGetPipelineCacheData
+
+type VkGetPipelineCacheData = "vkGetPipelineCacheData"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPipelineCacheData
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , size_t* pDataSize
+-- >     , void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
+--
+-- or less efficient:
+--
+-- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
+--
+-- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
+--           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetPipelineCacheData"
+               vkGetPipelineCacheDataUnsafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr CSize -- ^ pDataSize
+                                                        -> Ptr Void -- ^ pData
+                                                                    -> IO VkResult
+
+##else
+vkGetPipelineCacheDataUnsafe ::
+                             VkDevice -- ^ device
+                                      -> VkPipelineCache -- ^ pipelineCache
+                                                         -> Ptr CSize -- ^ pDataSize
+                                                                      -> Ptr Void -- ^ pData
+                                                                                  -> IO VkResult
+vkGetPipelineCacheDataUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetPipelineCacheData)
+
+{-# NOINLINE vkGetPipelineCacheDataUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPipelineCacheData
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , size_t* pDataSize
+-- >     , void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
+--
+-- or less efficient:
+--
+-- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
+--
+-- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
+--           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetPipelineCacheData"
+               vkGetPipelineCacheDataSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineCache -- ^ pipelineCache
+                                           -> Ptr CSize -- ^ pDataSize
+                                                        -> Ptr Void -- ^ pData
+                                                                    -> IO VkResult
+
+##else
+vkGetPipelineCacheDataSafe ::
+                           VkDevice -- ^ device
+                                    -> VkPipelineCache -- ^ pipelineCache
+                                                       -> Ptr CSize -- ^ pDataSize
+                                                                    -> Ptr Void -- ^ pData
+                                                                                -> IO VkResult
+vkGetPipelineCacheDataSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetPipelineCacheData)
+
+{-# NOINLINE vkGetPipelineCacheDataSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkGetPipelineCacheData
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , size_t* pDataSize
+-- >     , void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPipelineCacheData <- vkGetDeviceProc @VkGetPipelineCacheData vkDevice
+--
+-- or less efficient:
+--
+-- > myGetPipelineCacheData <- vkGetProc @VkGetPipelineCacheData
+--
+-- __Note:__ @vkGetPipelineCacheDataUnsafe@ and @vkGetPipelineCacheDataSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPipelineCacheData@ is an alias
+--           of @vkGetPipelineCacheDataUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPipelineCacheDataSafe@.
+--
+vkGetPipelineCacheData ::
+                       VkDevice -- ^ device
+                                -> VkPipelineCache -- ^ pipelineCache
+                                                   -> Ptr CSize -- ^ pDataSize
+                                                                -> Ptr Void -- ^ pData
+                                                                            -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetPipelineCacheData = vkGetPipelineCacheDataUnsafe
+##else
+vkGetPipelineCacheData = vkGetPipelineCacheDataSafe
+
+##endif
+{-# INLINE vkGetPipelineCacheData #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkGetPipelineCacheData
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , size_t* pDataSize
+--   >     , void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPipelineCacheData vkGetPipelineCacheData registry at www.khronos.org>
+type HS_vkGetPipelineCacheData =
+     VkDevice -- ^ device
+              -> VkPipelineCache -- ^ pipelineCache
+                                 -> Ptr CSize -- ^ pDataSize
+                                              -> Ptr Void -- ^ pData
+                                                          -> IO VkResult
+
+type PFN_vkGetPipelineCacheData = FunPtr HS_vkGetPipelineCacheData
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPipelineCacheDataUnsafe ::
+               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPipelineCacheDataSafe ::
+               PFN_vkGetPipelineCacheData -> HS_vkGetPipelineCacheData
+
+instance VulkanProc "vkGetPipelineCacheData" where
+    type VkProcType "vkGetPipelineCacheData" =
+         HS_vkGetPipelineCacheData
+    vkProcSymbol = _VkGetPipelineCacheData
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetPipelineCacheDataUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPipelineCacheDataSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkMergePipelineCaches :: CString
+
+pattern VkMergePipelineCaches <- (is_VkMergePipelineCaches -> True)
+  where
+    VkMergePipelineCaches = _VkMergePipelineCaches
+
+{-# INLINE _VkMergePipelineCaches #-}
+
+_VkMergePipelineCaches :: CString
+_VkMergePipelineCaches = Ptr "vkMergePipelineCaches\NUL"##
+
+{-# INLINE is_VkMergePipelineCaches #-}
+
+is_VkMergePipelineCaches :: CString -> Bool
+is_VkMergePipelineCaches
+  = (EQ ==) . cmpCStrings _VkMergePipelineCaches
+
+type VkMergePipelineCaches = "vkMergePipelineCaches"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkMergePipelineCaches
+-- >     ( VkDevice device
+-- >     , VkPipelineCache dstCache
+-- >     , uint32_t srcCacheCount
+-- >     , const VkPipelineCache* pSrcCaches
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
+--
+-- or less efficient:
+--
+-- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
+--
+-- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
+--           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkMergePipelineCaches"
+               vkMergePipelineCachesUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ dstCache
+                                 -> Word32 -- ^ srcCacheCount
+                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                  -> IO VkResult
+
+##else
+vkMergePipelineCachesUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkPipelineCache -- ^ dstCache
+                                              -> Word32 -- ^ srcCacheCount
+                                                        -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                               -> IO VkResult
+vkMergePipelineCachesUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkMergePipelineCaches)
+
+{-# NOINLINE vkMergePipelineCachesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkMergePipelineCaches
+-- >     ( VkDevice device
+-- >     , VkPipelineCache dstCache
+-- >     , uint32_t srcCacheCount
+-- >     , const VkPipelineCache* pSrcCaches
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
+--
+-- or less efficient:
+--
+-- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
+--
+-- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
+--           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkMergePipelineCaches"
+               vkMergePipelineCachesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ dstCache
+                                 -> Word32 -- ^ srcCacheCount
+                                           -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                  -> IO VkResult
+
+##else
+vkMergePipelineCachesSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkPipelineCache -- ^ dstCache
+                                            -> Word32 -- ^ srcCacheCount
+                                                      -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                             -> IO VkResult
+vkMergePipelineCachesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkMergePipelineCaches)
+
+{-# NOINLINE vkMergePipelineCachesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkMergePipelineCaches
+-- >     ( VkDevice device
+-- >     , VkPipelineCache dstCache
+-- >     , uint32_t srcCacheCount
+-- >     , const VkPipelineCache* pSrcCaches
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myMergePipelineCaches <- vkGetDeviceProc @VkMergePipelineCaches vkDevice
+--
+-- or less efficient:
+--
+-- > myMergePipelineCaches <- vkGetProc @VkMergePipelineCaches
+--
+-- __Note:__ @vkMergePipelineCachesUnsafe@ and @vkMergePipelineCachesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkMergePipelineCaches@ is an alias
+--           of @vkMergePipelineCachesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkMergePipelineCachesSafe@.
+--
+vkMergePipelineCaches ::
+                      VkDevice -- ^ device
+                               ->
+                        VkPipelineCache -- ^ dstCache
+                                        -> Word32 -- ^ srcCacheCount
+                                                  -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                                         -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkMergePipelineCaches = vkMergePipelineCachesUnsafe
+##else
+vkMergePipelineCaches = vkMergePipelineCachesSafe
+
+##endif
+{-# INLINE vkMergePipelineCaches #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkMergePipelineCaches
+--   >     ( VkDevice device
+--   >     , VkPipelineCache dstCache
+--   >     , uint32_t srcCacheCount
+--   >     , const VkPipelineCache* pSrcCaches
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkMergePipelineCaches vkMergePipelineCaches registry at www.khronos.org>
+type HS_vkMergePipelineCaches =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ dstCache
+                       -> Word32 -- ^ srcCacheCount
+                                 -> Ptr VkPipelineCache -- ^ pSrcCaches
+                                                        -> IO VkResult
+
+type PFN_vkMergePipelineCaches = FunPtr HS_vkMergePipelineCaches
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkMergePipelineCachesUnsafe ::
+               PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
+
+foreign import ccall safe "dynamic" unwrapVkMergePipelineCachesSafe
+               :: PFN_vkMergePipelineCaches -> HS_vkMergePipelineCaches
+
+instance VulkanProc "vkMergePipelineCaches" where
+    type VkProcType "vkMergePipelineCaches" = HS_vkMergePipelineCaches
+    vkProcSymbol = _VkMergePipelineCaches
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkMergePipelineCachesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkMergePipelineCachesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateGraphicsPipelines :: CString
+
+pattern VkCreateGraphicsPipelines <-
+        (is_VkCreateGraphicsPipelines -> True)
+  where
+    VkCreateGraphicsPipelines = _VkCreateGraphicsPipelines
+
+{-# INLINE _VkCreateGraphicsPipelines #-}
+
+_VkCreateGraphicsPipelines :: CString
+_VkCreateGraphicsPipelines = Ptr "vkCreateGraphicsPipelines\NUL"##
+
+{-# INLINE is_VkCreateGraphicsPipelines #-}
+
+is_VkCreateGraphicsPipelines :: CString -> Bool
+is_VkCreateGraphicsPipelines
+  = (EQ ==) . cmpCStrings _VkCreateGraphicsPipelines
+
+type VkCreateGraphicsPipelines = "vkCreateGraphicsPipelines"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateGraphicsPipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
+--
+-- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
+--           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateGraphicsPipelines"
+               vkCreateGraphicsPipelinesUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                      ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateGraphicsPipelinesUnsafe ::
+                                VkDevice -- ^ device
+                                         ->
+                                  VkPipelineCache -- ^ pipelineCache
+                                                  ->
+                                    Word32 -- ^ createInfoCount
+                                           ->
+                                      Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                                       ->
+                                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> Ptr VkPipeline -- ^ pPipelines
+                                                                                    -> IO VkResult
+vkCreateGraphicsPipelinesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateGraphicsPipelines)
+
+{-# NOINLINE vkCreateGraphicsPipelinesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateGraphicsPipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
+--
+-- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
+--           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateGraphicsPipelines"
+               vkCreateGraphicsPipelinesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                      ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateGraphicsPipelinesSafe ::
+                              VkDevice -- ^ device
+                                       ->
+                                VkPipelineCache -- ^ pipelineCache
+                                                ->
+                                  Word32 -- ^ createInfoCount
+                                         ->
+                                    Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                                     ->
+                                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                -> Ptr VkPipeline -- ^ pPipelines
+                                                                                  -> IO VkResult
+vkCreateGraphicsPipelinesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateGraphicsPipelines)
+
+{-# NOINLINE vkCreateGraphicsPipelinesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateGraphicsPipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateGraphicsPipelines <- vkGetDeviceProc @VkCreateGraphicsPipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateGraphicsPipelines <- vkGetProc @VkCreateGraphicsPipelines
+--
+-- __Note:__ @vkCreateGraphicsPipelinesUnsafe@ and @vkCreateGraphicsPipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateGraphicsPipelines@ is an alias
+--           of @vkCreateGraphicsPipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateGraphicsPipelinesSafe@.
+--
+vkCreateGraphicsPipelines ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkPipelineCache -- ^ pipelineCache
+                                            ->
+                              Word32 -- ^ createInfoCount
+                                     ->
+                                Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                                                 ->
+                                  Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> Ptr VkPipeline -- ^ pPipelines
+                                                                              -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateGraphicsPipelines = vkCreateGraphicsPipelinesUnsafe
+##else
+vkCreateGraphicsPipelines = vkCreateGraphicsPipelinesSafe
+
+##endif
+{-# INLINE vkCreateGraphicsPipelines #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateGraphicsPipelines
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , uint32_t createInfoCount
+--   >     , const VkGraphicsPipelineCreateInfo* pCreateInfos
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipeline* pPipelines
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateGraphicsPipelines vkCreateGraphicsPipelines registry at www.khronos.org>
+type HS_vkCreateGraphicsPipelines =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ pipelineCache
+                       ->
+         Word32 -- ^ createInfoCount
+                ->
+           Ptr VkGraphicsPipelineCreateInfo -- ^ pCreateInfos
+                                            ->
+             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                       -> Ptr VkPipeline -- ^ pPipelines
+                                                         -> IO VkResult
+
+type PFN_vkCreateGraphicsPipelines =
+     FunPtr HS_vkCreateGraphicsPipelines
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateGraphicsPipelinesUnsafe ::
+               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateGraphicsPipelinesSafe ::
+               PFN_vkCreateGraphicsPipelines -> HS_vkCreateGraphicsPipelines
+
+instance VulkanProc "vkCreateGraphicsPipelines" where
+    type VkProcType "vkCreateGraphicsPipelines" =
+         HS_vkCreateGraphicsPipelines
+    vkProcSymbol = _VkCreateGraphicsPipelines
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateGraphicsPipelinesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateGraphicsPipelinesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateComputePipelines :: CString
+
+pattern VkCreateComputePipelines <-
+        (is_VkCreateComputePipelines -> True)
+  where
+    VkCreateComputePipelines = _VkCreateComputePipelines
+
+{-# INLINE _VkCreateComputePipelines #-}
+
+_VkCreateComputePipelines :: CString
+_VkCreateComputePipelines = Ptr "vkCreateComputePipelines\NUL"##
+
+{-# INLINE is_VkCreateComputePipelines #-}
+
+is_VkCreateComputePipelines :: CString -> Bool
+is_VkCreateComputePipelines
+  = (EQ ==) . cmpCStrings _VkCreateComputePipelines
+
+type VkCreateComputePipelines = "vkCreateComputePipelines"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateComputePipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkComputePipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
+--
+-- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
+--           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateComputePipelines"
+               vkCreateComputePipelinesUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                     ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateComputePipelinesUnsafe ::
+                               VkDevice -- ^ device
+                                        ->
+                                 VkPipelineCache -- ^ pipelineCache
+                                                 ->
+                                   Word32 -- ^ createInfoCount
+                                          ->
+                                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                                     ->
+                                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                                   -> IO VkResult
+vkCreateComputePipelinesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateComputePipelines)
+
+{-# NOINLINE vkCreateComputePipelinesUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateComputePipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkComputePipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
+--
+-- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
+--           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateComputePipelines"
+               vkCreateComputePipelinesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkPipelineCache -- ^ pipelineCache
+                                 ->
+                   Word32 -- ^ createInfoCount
+                          ->
+                     Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                     ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkPipeline -- ^ pPipelines
+                                                                   -> IO VkResult
+
+##else
+vkCreateComputePipelinesSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               VkPipelineCache -- ^ pipelineCache
+                                               ->
+                                 Word32 -- ^ createInfoCount
+                                        ->
+                                   Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                                   ->
+                                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> Ptr VkPipeline -- ^ pPipelines
+                                                                                 -> IO VkResult
+vkCreateComputePipelinesSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateComputePipelines)
+
+{-# NOINLINE vkCreateComputePipelinesSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+-- > VkResult vkCreateComputePipelines
+-- >     ( VkDevice device
+-- >     , VkPipelineCache pipelineCache
+-- >     , uint32_t createInfoCount
+-- >     , const VkComputePipelineCreateInfo* pCreateInfos
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipeline* pPipelines
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateComputePipelines <- vkGetDeviceProc @VkCreateComputePipelines vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateComputePipelines <- vkGetProc @VkCreateComputePipelines
+--
+-- __Note:__ @vkCreateComputePipelinesUnsafe@ and @vkCreateComputePipelinesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateComputePipelines@ is an alias
+--           of @vkCreateComputePipelinesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateComputePipelinesSafe@.
+--
+vkCreateComputePipelines ::
+                         VkDevice -- ^ device
+                                  ->
+                           VkPipelineCache -- ^ pipelineCache
+                                           ->
+                             Word32 -- ^ createInfoCount
+                                    ->
+                               Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                                               ->
+                                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> Ptr VkPipeline -- ^ pPipelines
+                                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateComputePipelines = vkCreateComputePipelinesUnsafe
+##else
+vkCreateComputePipelines = vkCreateComputePipelinesSafe
+
+##endif
+{-# INLINE vkCreateComputePipelines #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INVALID_SHADER_NV'.
+--
+--   > VkResult vkCreateComputePipelines
+--   >     ( VkDevice device
+--   >     , VkPipelineCache pipelineCache
+--   >     , uint32_t createInfoCount
+--   >     , const VkComputePipelineCreateInfo* pCreateInfos
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipeline* pPipelines
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateComputePipelines vkCreateComputePipelines registry at www.khronos.org>
+type HS_vkCreateComputePipelines =
+     VkDevice -- ^ device
+              ->
+       VkPipelineCache -- ^ pipelineCache
+                       ->
+         Word32 -- ^ createInfoCount
+                ->
+           Ptr VkComputePipelineCreateInfo -- ^ pCreateInfos
+                                           ->
+             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                       -> Ptr VkPipeline -- ^ pPipelines
+                                                         -> IO VkResult
+
+type PFN_vkCreateComputePipelines =
+     FunPtr HS_vkCreateComputePipelines
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateComputePipelinesUnsafe ::
+               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateComputePipelinesSafe ::
+               PFN_vkCreateComputePipelines -> HS_vkCreateComputePipelines
+
+instance VulkanProc "vkCreateComputePipelines" where
+    type VkProcType "vkCreateComputePipelines" =
+         HS_vkCreateComputePipelines
+    vkProcSymbol = _VkCreateComputePipelines
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateComputePipelinesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateComputePipelinesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipeline :: CString
+
+pattern VkDestroyPipeline <- (is_VkDestroyPipeline -> True)
+  where
+    VkDestroyPipeline = _VkDestroyPipeline
+
+{-# INLINE _VkDestroyPipeline #-}
+
+_VkDestroyPipeline :: CString
+_VkDestroyPipeline = Ptr "vkDestroyPipeline\NUL"##
+
+{-# INLINE is_VkDestroyPipeline #-}
+
+is_VkDestroyPipeline :: CString -> Bool
+is_VkDestroyPipeline = (EQ ==) . cmpCStrings _VkDestroyPipeline
+
+type VkDestroyPipeline = "vkDestroyPipeline"
+
+-- |
+-- > void vkDestroyPipeline
+-- >     ( VkDevice device
+-- >     , VkPipeline pipeline
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
+--
+-- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
+--           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipeline"
+               vkDestroyPipelineUnsafe ::
+               VkDevice -- ^ device
+                        -> VkPipeline -- ^ pipeline
+                                      -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   -> IO ()
+
+##else
+vkDestroyPipelineUnsafe ::
+                        VkDevice -- ^ device
+                                 -> VkPipeline -- ^ pipeline
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+vkDestroyPipelineUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipeline)
+
+{-# NOINLINE vkDestroyPipelineUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipeline
+-- >     ( VkDevice device
+-- >     , VkPipeline pipeline
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
+--
+-- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
+--           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipeline" vkDestroyPipelineSafe
+               :: VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyPipelineSafe ::
+                      VkDevice -- ^ device
+                               -> VkPipeline -- ^ pipeline
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+vkDestroyPipelineSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipeline)
+
+{-# NOINLINE vkDestroyPipelineSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipeline
+-- >     ( VkDevice device
+-- >     , VkPipeline pipeline
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipeline <- vkGetDeviceProc @VkDestroyPipeline vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipeline <- vkGetProc @VkDestroyPipeline
+--
+-- __Note:__ @vkDestroyPipelineUnsafe@ and @vkDestroyPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipeline@ is an alias
+--           of @vkDestroyPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineSafe@.
+--
+vkDestroyPipeline ::
+                  VkDevice -- ^ device
+                           -> VkPipeline -- ^ pipeline
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyPipeline = vkDestroyPipelineUnsafe
+##else
+vkDestroyPipeline = vkDestroyPipelineSafe
+
+##endif
+{-# INLINE vkDestroyPipeline #-}
+
+-- | > void vkDestroyPipeline
+--   >     ( VkDevice device
+--   >     , VkPipeline pipeline
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipeline vkDestroyPipeline registry at www.khronos.org>
+type HS_vkDestroyPipeline =
+     VkDevice -- ^ device
+              -> VkPipeline -- ^ pipeline
+                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> IO ()
+
+type PFN_vkDestroyPipeline = FunPtr HS_vkDestroyPipeline
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroyPipelineUnsafe
+               :: PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
+
+foreign import ccall safe "dynamic" unwrapVkDestroyPipelineSafe ::
+               PFN_vkDestroyPipeline -> HS_vkDestroyPipeline
+
+instance VulkanProc "vkDestroyPipeline" where
+    type VkProcType "vkDestroyPipeline" = HS_vkDestroyPipeline
+    vkProcSymbol = _VkDestroyPipeline
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyPipelineSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreatePipelineLayout :: CString
+
+pattern VkCreatePipelineLayout <-
+        (is_VkCreatePipelineLayout -> True)
+  where
+    VkCreatePipelineLayout = _VkCreatePipelineLayout
+
+{-# INLINE _VkCreatePipelineLayout #-}
+
+_VkCreatePipelineLayout :: CString
+_VkCreatePipelineLayout = Ptr "vkCreatePipelineLayout\NUL"##
+
+{-# INLINE is_VkCreatePipelineLayout #-}
+
+is_VkCreatePipelineLayout :: CString -> Bool
+is_VkCreatePipelineLayout
+  = (EQ ==) . cmpCStrings _VkCreatePipelineLayout
+
+type VkCreatePipelineLayout = "vkCreatePipelineLayout"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineLayout
+-- >     ( VkDevice device
+-- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineLayout* pPipelineLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
+--
+-- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
+--           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreatePipelineLayout"
+               vkCreatePipelineLayoutUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                     -> IO VkResult
+
+##else
+vkCreatePipelineLayoutUnsafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                              ->
+                                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                                   -> IO VkResult
+vkCreatePipelineLayoutUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreatePipelineLayout)
+
+{-# NOINLINE vkCreatePipelineLayoutUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineLayout
+-- >     ( VkDevice device
+-- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineLayout* pPipelineLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
+--
+-- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
+--           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreatePipelineLayout"
+               vkCreatePipelineLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                     -> IO VkResult
+
+##else
+vkCreatePipelineLayoutSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                            ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                                 -> IO VkResult
+vkCreatePipelineLayoutSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreatePipelineLayout)
+
+{-# NOINLINE vkCreatePipelineLayoutSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreatePipelineLayout
+-- >     ( VkDevice device
+-- >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkPipelineLayout* pPipelineLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreatePipelineLayout <- vkGetDeviceProc @VkCreatePipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreatePipelineLayout <- vkGetProc @VkCreatePipelineLayout
+--
+-- __Note:__ @vkCreatePipelineLayoutUnsafe@ and @vkCreatePipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreatePipelineLayout@ is an alias
+--           of @vkCreatePipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreatePipelineLayoutSafe@.
+--
+vkCreatePipelineLayout ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                                        ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreatePipelineLayout = vkCreatePipelineLayoutUnsafe
+##else
+vkCreatePipelineLayout = vkCreatePipelineLayoutSafe
+
+##endif
+{-# INLINE vkCreatePipelineLayout #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreatePipelineLayout
+--   >     ( VkDevice device
+--   >     , const VkPipelineLayoutCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkPipelineLayout* pPipelineLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreatePipelineLayout vkCreatePipelineLayout registry at www.khronos.org>
+type HS_vkCreatePipelineLayout =
+     VkDevice -- ^ device
+              ->
+       Ptr VkPipelineLayoutCreateInfo -- ^ pCreateInfo
+                                      ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkPipelineLayout -- ^ pPipelineLayout
+                                                           -> IO VkResult
+
+type PFN_vkCreatePipelineLayout = FunPtr HS_vkCreatePipelineLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreatePipelineLayoutUnsafe ::
+               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreatePipelineLayoutSafe ::
+               PFN_vkCreatePipelineLayout -> HS_vkCreatePipelineLayout
+
+instance VulkanProc "vkCreatePipelineLayout" where
+    type VkProcType "vkCreatePipelineLayout" =
+         HS_vkCreatePipelineLayout
+    vkProcSymbol = _VkCreatePipelineLayout
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreatePipelineLayoutUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreatePipelineLayoutSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyPipelineLayout :: CString
+
+pattern VkDestroyPipelineLayout <-
+        (is_VkDestroyPipelineLayout -> True)
+  where
+    VkDestroyPipelineLayout = _VkDestroyPipelineLayout
+
+{-# INLINE _VkDestroyPipelineLayout #-}
+
+_VkDestroyPipelineLayout :: CString
+_VkDestroyPipelineLayout = Ptr "vkDestroyPipelineLayout\NUL"##
+
+{-# INLINE is_VkDestroyPipelineLayout #-}
+
+is_VkDestroyPipelineLayout :: CString -> Bool
+is_VkDestroyPipelineLayout
+  = (EQ ==) . cmpCStrings _VkDestroyPipelineLayout
+
+type VkDestroyPipelineLayout = "vkDestroyPipelineLayout"
+
+-- |
+-- > void vkDestroyPipelineLayout
+-- >     ( VkDevice device
+-- >     , VkPipelineLayout pipelineLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
+--
+-- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
+--           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyPipelineLayout"
+               vkDestroyPipelineLayoutUnsafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineLayout -- ^ pipelineLayout
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyPipelineLayoutUnsafe ::
+                              VkDevice -- ^ device
+                                       -> VkPipelineLayout -- ^ pipelineLayout
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+vkDestroyPipelineLayoutUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyPipelineLayout)
+
+{-# NOINLINE vkDestroyPipelineLayoutUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineLayout
+-- >     ( VkDevice device
+-- >     , VkPipelineLayout pipelineLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
+--
+-- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
+--           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyPipelineLayout"
+               vkDestroyPipelineLayoutSafe ::
+               VkDevice -- ^ device
+                        -> VkPipelineLayout -- ^ pipelineLayout
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyPipelineLayoutSafe ::
+                            VkDevice -- ^ device
+                                     -> VkPipelineLayout -- ^ pipelineLayout
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyPipelineLayoutSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyPipelineLayout)
+
+{-# NOINLINE vkDestroyPipelineLayoutSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyPipelineLayout
+-- >     ( VkDevice device
+-- >     , VkPipelineLayout pipelineLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyPipelineLayout <- vkGetDeviceProc @VkDestroyPipelineLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyPipelineLayout <- vkGetProc @VkDestroyPipelineLayout
+--
+-- __Note:__ @vkDestroyPipelineLayoutUnsafe@ and @vkDestroyPipelineLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyPipelineLayout@ is an alias
+--           of @vkDestroyPipelineLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyPipelineLayoutSafe@.
+--
+vkDestroyPipelineLayout ::
+                        VkDevice -- ^ device
+                                 -> VkPipelineLayout -- ^ pipelineLayout
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyPipelineLayout = vkDestroyPipelineLayoutUnsafe
+##else
+vkDestroyPipelineLayout = vkDestroyPipelineLayoutSafe
+
+##endif
+{-# INLINE vkDestroyPipelineLayout #-}
+
+-- | > void vkDestroyPipelineLayout
+--   >     ( VkDevice device
+--   >     , VkPipelineLayout pipelineLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyPipelineLayout vkDestroyPipelineLayout registry at www.khronos.org>
+type HS_vkDestroyPipelineLayout =
+     VkDevice -- ^ device
+              -> VkPipelineLayout -- ^ pipelineLayout
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyPipelineLayout =
+     FunPtr HS_vkDestroyPipelineLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyPipelineLayoutUnsafe ::
+               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyPipelineLayoutSafe ::
+               PFN_vkDestroyPipelineLayout -> HS_vkDestroyPipelineLayout
+
+instance VulkanProc "vkDestroyPipelineLayout" where
+    type VkProcType "vkDestroyPipelineLayout" =
+         HS_vkDestroyPipelineLayout
+    vkProcSymbol = _VkDestroyPipelineLayout
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyPipelineLayoutUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyPipelineLayoutSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateSampler :: CString
+
+pattern VkCreateSampler <- (is_VkCreateSampler -> True)
+  where
+    VkCreateSampler = _VkCreateSampler
+
+{-# INLINE _VkCreateSampler #-}
+
+_VkCreateSampler :: CString
+_VkCreateSampler = Ptr "vkCreateSampler\NUL"##
+
+{-# INLINE is_VkCreateSampler #-}
+
+is_VkCreateSampler :: CString -> Bool
+is_VkCreateSampler = (EQ ==) . cmpCStrings _VkCreateSampler
+
+type VkCreateSampler = "vkCreateSampler"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+-- > VkResult vkCreateSampler
+-- >     ( VkDevice device
+-- >     , const VkSamplerCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSampler* pSampler
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSampler <- vkGetProc @VkCreateSampler
+--
+-- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
+--           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateSampler" vkCreateSamplerUnsafe
+               ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                         ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSampler -- ^ pSampler
+                                                              -> IO VkResult
+
+##else
+vkCreateSamplerUnsafe ::
+                      VkDevice -- ^ device
+                               ->
+                        Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                                ->
+                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                    -> Ptr VkSampler -- ^ pSampler
+                                                                     -> IO VkResult
+vkCreateSamplerUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateSampler)
+
+{-# NOINLINE vkCreateSamplerUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+-- > VkResult vkCreateSampler
+-- >     ( VkDevice device
+-- >     , const VkSamplerCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSampler* pSampler
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSampler <- vkGetProc @VkCreateSampler
+--
+-- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
+--           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateSampler" vkCreateSamplerSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                         ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkSampler -- ^ pSampler
+                                                              -> IO VkResult
+
+##else
+vkCreateSamplerSafe ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                              ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkSampler -- ^ pSampler
+                                                                   -> IO VkResult
+vkCreateSamplerSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateSampler)
+
+{-# NOINLINE vkCreateSamplerSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+-- > VkResult vkCreateSampler
+-- >     ( VkDevice device
+-- >     , const VkSamplerCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSampler* pSampler
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSampler <- vkGetDeviceProc @VkCreateSampler vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSampler <- vkGetProc @VkCreateSampler
+--
+-- __Note:__ @vkCreateSamplerUnsafe@ and @vkCreateSamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSampler@ is an alias
+--           of @vkCreateSamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerSafe@.
+--
+vkCreateSampler ::
+                VkDevice -- ^ device
+                         ->
+                  Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                                          ->
+                    Ptr VkAllocationCallbacks -- ^ pAllocator
+                                              -> Ptr VkSampler -- ^ pSampler
+                                                               -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateSampler = vkCreateSamplerUnsafe
+##else
+vkCreateSampler = vkCreateSamplerSafe
+
+##endif
+{-# INLINE vkCreateSampler #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_TOO_MANY_OBJECTS'.
+--
+--   > VkResult vkCreateSampler
+--   >     ( VkDevice device
+--   >     , const VkSamplerCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSampler* pSampler
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSampler vkCreateSampler registry at www.khronos.org>
+type HS_vkCreateSampler =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSamplerCreateInfo -- ^ pCreateInfo
+                               ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkSampler -- ^ pSampler
+                                                    -> IO VkResult
+
+type PFN_vkCreateSampler = FunPtr HS_vkCreateSampler
+
+foreign import ccall unsafe "dynamic" unwrapVkCreateSamplerUnsafe
+               :: PFN_vkCreateSampler -> HS_vkCreateSampler
+
+foreign import ccall safe "dynamic" unwrapVkCreateSamplerSafe ::
+               PFN_vkCreateSampler -> HS_vkCreateSampler
+
+instance VulkanProc "vkCreateSampler" where
+    type VkProcType "vkCreateSampler" = HS_vkCreateSampler
+    vkProcSymbol = _VkCreateSampler
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateSamplerUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateSamplerSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySampler :: CString
+
+pattern VkDestroySampler <- (is_VkDestroySampler -> True)
+  where
+    VkDestroySampler = _VkDestroySampler
+
+{-# INLINE _VkDestroySampler #-}
+
+_VkDestroySampler :: CString
+_VkDestroySampler = Ptr "vkDestroySampler\NUL"##
+
+{-# INLINE is_VkDestroySampler #-}
+
+is_VkDestroySampler :: CString -> Bool
+is_VkDestroySampler = (EQ ==) . cmpCStrings _VkDestroySampler
+
+type VkDestroySampler = "vkDestroySampler"
+
+-- |
+-- > void vkDestroySampler
+-- >     ( VkDevice device
+-- >     , VkSampler sampler
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySampler <- vkGetProc @VkDestroySampler
+--
+-- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
+--           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroySampler"
+               vkDestroySamplerUnsafe ::
+               VkDevice -- ^ device
+                        -> VkSampler -- ^ sampler
+                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                  -> IO ()
+
+##else
+vkDestroySamplerUnsafe ::
+                       VkDevice -- ^ device
+                                -> VkSampler -- ^ sampler
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+vkDestroySamplerUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroySampler)
+
+{-# NOINLINE vkDestroySamplerUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroySampler
+-- >     ( VkDevice device
+-- >     , VkSampler sampler
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySampler <- vkGetProc @VkDestroySampler
+--
+-- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
+--           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroySampler" vkDestroySamplerSafe
+               :: VkDevice -- ^ device
+                           -> VkSampler -- ^ sampler
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroySamplerSafe ::
+                     VkDevice -- ^ device
+                              -> VkSampler -- ^ sampler
+                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                        -> IO ()
+vkDestroySamplerSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroySampler)
+
+{-# NOINLINE vkDestroySamplerSafe #-}
+##endif
+
+-- |
+-- > void vkDestroySampler
+-- >     ( VkDevice device
+-- >     , VkSampler sampler
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySampler <- vkGetDeviceProc @VkDestroySampler vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySampler <- vkGetProc @VkDestroySampler
+--
+-- __Note:__ @vkDestroySamplerUnsafe@ and @vkDestroySamplerSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySampler@ is an alias
+--           of @vkDestroySamplerUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerSafe@.
+--
+vkDestroySampler ::
+                 VkDevice -- ^ device
+                          -> VkSampler -- ^ sampler
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroySampler = vkDestroySamplerUnsafe
+##else
+vkDestroySampler = vkDestroySamplerSafe
+
+##endif
+{-# INLINE vkDestroySampler #-}
+
+-- | > void vkDestroySampler
+--   >     ( VkDevice device
+--   >     , VkSampler sampler
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySampler vkDestroySampler registry at www.khronos.org>
+type HS_vkDestroySampler =
+     VkDevice -- ^ device
+              -> VkSampler -- ^ sampler
+                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> IO ()
+
+type PFN_vkDestroySampler = FunPtr HS_vkDestroySampler
+
+foreign import ccall unsafe "dynamic" unwrapVkDestroySamplerUnsafe
+               :: PFN_vkDestroySampler -> HS_vkDestroySampler
+
+foreign import ccall safe "dynamic" unwrapVkDestroySamplerSafe ::
+               PFN_vkDestroySampler -> HS_vkDestroySampler
+
+instance VulkanProc "vkDestroySampler" where
+    type VkProcType "vkDestroySampler" = HS_vkDestroySampler
+    vkProcSymbol = _VkDestroySampler
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroySamplerUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroySamplerSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDescriptorSetLayout :: CString
+
+pattern VkCreateDescriptorSetLayout <-
+        (is_VkCreateDescriptorSetLayout -> True)
+  where
+    VkCreateDescriptorSetLayout = _VkCreateDescriptorSetLayout
+
+{-# INLINE _VkCreateDescriptorSetLayout #-}
+
+_VkCreateDescriptorSetLayout :: CString
+_VkCreateDescriptorSetLayout
+  = Ptr "vkCreateDescriptorSetLayout\NUL"##
+
+{-# INLINE is_VkCreateDescriptorSetLayout #-}
+
+is_VkCreateDescriptorSetLayout :: CString -> Bool
+is_VkCreateDescriptorSetLayout
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorSetLayout
+
+type VkCreateDescriptorSetLayout = "vkCreateDescriptorSetLayout"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorSetLayout* pSetLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
+--
+-- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
+--           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDescriptorSetLayout"
+               vkCreateDescriptorSetLayoutUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                               -> IO VkResult
+
+##else
+vkCreateDescriptorSetLayoutUnsafe ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                        ->
+                                      Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                ->
+                                        Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                                                  -> IO VkResult
+vkCreateDescriptorSetLayoutUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateDescriptorSetLayout)
+
+{-# NOINLINE vkCreateDescriptorSetLayoutUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorSetLayout* pSetLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
+--
+-- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
+--           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDescriptorSetLayout"
+               vkCreateDescriptorSetLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                               -> IO VkResult
+
+##else
+vkCreateDescriptorSetLayoutSafe ::
+                                VkDevice -- ^ device
+                                         ->
+                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                      ->
+                                    Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                              ->
+                                      Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                                                -> IO VkResult
+vkCreateDescriptorSetLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateDescriptorSetLayout)
+
+{-# NOINLINE vkCreateDescriptorSetLayoutSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorSetLayout* pSetLayout
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorSetLayout <- vkGetDeviceProc @VkCreateDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorSetLayout <- vkGetProc @VkCreateDescriptorSetLayout
+--
+-- __Note:__ @vkCreateDescriptorSetLayoutUnsafe@ and @vkCreateDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorSetLayout@ is an alias
+--           of @vkCreateDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorSetLayoutSafe@.
+--
+vkCreateDescriptorSetLayout ::
+                            VkDevice -- ^ device
+                                     ->
+                              Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                  ->
+                                Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          ->
+                                  Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                                            -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateDescriptorSetLayout = vkCreateDescriptorSetLayoutUnsafe
+##else
+vkCreateDescriptorSetLayout = vkCreateDescriptorSetLayoutSafe
+
+##endif
+{-# INLINE vkCreateDescriptorSetLayout #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorSetLayout
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorSetLayout* pSetLayout
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout registry at www.khronos.org>
+type HS_vkCreateDescriptorSetLayout =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                           ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkDescriptorSetLayout -- ^ pSetLayout
+                                     -> IO VkResult
+
+type PFN_vkCreateDescriptorSetLayout =
+     FunPtr HS_vkCreateDescriptorSetLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDescriptorSetLayoutUnsafe ::
+               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorSetLayoutSafe ::
+               PFN_vkCreateDescriptorSetLayout -> HS_vkCreateDescriptorSetLayout
+
+instance VulkanProc "vkCreateDescriptorSetLayout" where
+    type VkProcType "vkCreateDescriptorSetLayout" =
+         HS_vkCreateDescriptorSetLayout
+    vkProcSymbol = _VkCreateDescriptorSetLayout
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateDescriptorSetLayoutUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDescriptorSetLayoutSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorSetLayout :: CString
+
+pattern VkDestroyDescriptorSetLayout <-
+        (is_VkDestroyDescriptorSetLayout -> True)
+  where
+    VkDestroyDescriptorSetLayout = _VkDestroyDescriptorSetLayout
+
+{-# INLINE _VkDestroyDescriptorSetLayout #-}
+
+_VkDestroyDescriptorSetLayout :: CString
+_VkDestroyDescriptorSetLayout
+  = Ptr "vkDestroyDescriptorSetLayout\NUL"##
+
+{-# INLINE is_VkDestroyDescriptorSetLayout #-}
+
+is_VkDestroyDescriptorSetLayout :: CString -> Bool
+is_VkDestroyDescriptorSetLayout
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorSetLayout
+
+type VkDestroyDescriptorSetLayout = "vkDestroyDescriptorSetLayout"
+
+-- |
+-- > void vkDestroyDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , VkDescriptorSetLayout descriptorSetLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
+--
+-- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
+--           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDescriptorSetLayout"
+               vkDestroyDescriptorSetLayoutUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyDescriptorSetLayoutUnsafe ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+vkDestroyDescriptorSetLayoutUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkDestroyDescriptorSetLayout)
+
+{-# NOINLINE vkDestroyDescriptorSetLayoutUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , VkDescriptorSetLayout descriptorSetLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
+--
+-- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
+--           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDescriptorSetLayout"
+               vkDestroyDescriptorSetLayoutSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                       -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+
+##else
+vkDestroyDescriptorSetLayoutSafe ::
+                                 VkDevice -- ^ device
+                                          ->
+                                   VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyDescriptorSetLayoutSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroyDescriptorSetLayout)
+
+{-# NOINLINE vkDestroyDescriptorSetLayoutSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorSetLayout
+-- >     ( VkDevice device
+-- >     , VkDescriptorSetLayout descriptorSetLayout
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetDeviceProc @VkDestroyDescriptorSetLayout vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorSetLayout <- vkGetProc @VkDestroyDescriptorSetLayout
+--
+-- __Note:__ @vkDestroyDescriptorSetLayoutUnsafe@ and @vkDestroyDescriptorSetLayoutSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorSetLayout@ is an alias
+--           of @vkDestroyDescriptorSetLayoutUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorSetLayoutSafe@.
+--
+vkDestroyDescriptorSetLayout ::
+                             VkDevice -- ^ device
+                                      ->
+                               VkDescriptorSetLayout -- ^ descriptorSetLayout
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyDescriptorSetLayout = vkDestroyDescriptorSetLayoutUnsafe
+##else
+vkDestroyDescriptorSetLayout = vkDestroyDescriptorSetLayoutSafe
+
+##endif
+{-# INLINE vkDestroyDescriptorSetLayout #-}
+
+-- | > void vkDestroyDescriptorSetLayout
+--   >     ( VkDevice device
+--   >     , VkDescriptorSetLayout descriptorSetLayout
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout registry at www.khronos.org>
+type HS_vkDestroyDescriptorSetLayout =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorSetLayout -- ^ descriptorSetLayout
+                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                          -> IO ()
+
+type PFN_vkDestroyDescriptorSetLayout =
+     FunPtr HS_vkDestroyDescriptorSetLayout
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyDescriptorSetLayoutUnsafe ::
+               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorSetLayoutSafe ::
+               PFN_vkDestroyDescriptorSetLayout -> HS_vkDestroyDescriptorSetLayout
+
+instance VulkanProc "vkDestroyDescriptorSetLayout" where
+    type VkProcType "vkDestroyDescriptorSetLayout" =
+         HS_vkDestroyDescriptorSetLayout
+    vkProcSymbol = _VkDestroyDescriptorSetLayout
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyDescriptorSetLayoutUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorSetLayoutSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateDescriptorPool :: CString
+
+pattern VkCreateDescriptorPool <-
+        (is_VkCreateDescriptorPool -> True)
+  where
+    VkCreateDescriptorPool = _VkCreateDescriptorPool
+
+{-# INLINE _VkCreateDescriptorPool #-}
+
+_VkCreateDescriptorPool :: CString
+_VkCreateDescriptorPool = Ptr "vkCreateDescriptorPool\NUL"##
+
+{-# INLINE is_VkCreateDescriptorPool #-}
+
+is_VkCreateDescriptorPool :: CString -> Bool
+is_VkCreateDescriptorPool
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorPool
+
+type VkCreateDescriptorPool = "vkCreateDescriptorPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+-- > VkResult vkCreateDescriptorPool
+-- >     ( VkDevice device
+-- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorPool* pDescriptorPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
+--
+-- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
+--           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateDescriptorPool"
+               vkCreateDescriptorPoolUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                     -> IO VkResult
+
+##else
+vkCreateDescriptorPoolUnsafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                              ->
+                                 Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                                   -> IO VkResult
+vkCreateDescriptorPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateDescriptorPool)
+
+{-# NOINLINE vkCreateDescriptorPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+-- > VkResult vkCreateDescriptorPool
+-- >     ( VkDevice device
+-- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorPool* pDescriptorPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
+--
+-- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
+--           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateDescriptorPool"
+               vkCreateDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                     -> IO VkResult
+
+##else
+vkCreateDescriptorPoolSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                            ->
+                               Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                         -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                                 -> IO VkResult
+vkCreateDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateDescriptorPool)
+
+{-# NOINLINE vkCreateDescriptorPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+-- > VkResult vkCreateDescriptorPool
+-- >     ( VkDevice device
+-- >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorPool* pDescriptorPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorPool <- vkGetDeviceProc @VkCreateDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorPool <- vkGetProc @VkCreateDescriptorPool
+--
+-- __Note:__ @vkCreateDescriptorPoolUnsafe@ and @vkCreateDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorPool@ is an alias
+--           of @vkCreateDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorPoolSafe@.
+--
+vkCreateDescriptorPool ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                                        ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                                             -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateDescriptorPool = vkCreateDescriptorPoolUnsafe
+##else
+vkCreateDescriptorPool = vkCreateDescriptorPoolSafe
+
+##endif
+{-# INLINE vkCreateDescriptorPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTATION_EXT'.
+--
+--   > VkResult vkCreateDescriptorPool
+--   >     ( VkDevice device
+--   >     , const VkDescriptorPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorPool* pDescriptorPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorPool vkCreateDescriptorPool registry at www.khronos.org>
+type HS_vkCreateDescriptorPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorPoolCreateInfo -- ^ pCreateInfo
+                                      ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkDescriptorPool -- ^ pDescriptorPool
+                                                           -> IO VkResult
+
+type PFN_vkCreateDescriptorPool = FunPtr HS_vkCreateDescriptorPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDescriptorPoolUnsafe ::
+               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorPoolSafe ::
+               PFN_vkCreateDescriptorPool -> HS_vkCreateDescriptorPool
+
+instance VulkanProc "vkCreateDescriptorPool" where
+    type VkProcType "vkCreateDescriptorPool" =
+         HS_vkCreateDescriptorPool
+    vkProcSymbol = _VkCreateDescriptorPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateDescriptorPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDescriptorPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorPool :: CString
+
+pattern VkDestroyDescriptorPool <-
+        (is_VkDestroyDescriptorPool -> True)
+  where
+    VkDestroyDescriptorPool = _VkDestroyDescriptorPool
+
+{-# INLINE _VkDestroyDescriptorPool #-}
+
+_VkDestroyDescriptorPool :: CString
+_VkDestroyDescriptorPool = Ptr "vkDestroyDescriptorPool\NUL"##
+
+{-# INLINE is_VkDestroyDescriptorPool #-}
+
+is_VkDestroyDescriptorPool :: CString -> Bool
+is_VkDestroyDescriptorPool
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorPool
+
+type VkDestroyDescriptorPool = "vkDestroyDescriptorPool"
+
+-- |
+-- > void vkDestroyDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
+--
+-- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
+--           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyDescriptorPool"
+               vkDestroyDescriptorPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkDescriptorPool -- ^ descriptorPool
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyDescriptorPoolUnsafe ::
+                              VkDevice -- ^ device
+                                       -> VkDescriptorPool -- ^ descriptorPool
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+vkDestroyDescriptorPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyDescriptorPool)
+
+{-# NOINLINE vkDestroyDescriptorPoolUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
+--
+-- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
+--           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyDescriptorPool"
+               vkDestroyDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkDescriptorPool -- ^ descriptorPool
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+##else
+vkDestroyDescriptorPoolSafe ::
+                            VkDevice -- ^ device
+                                     -> VkDescriptorPool -- ^ descriptorPool
+                                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                      -> IO ()
+vkDestroyDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyDescriptorPool)
+
+{-# NOINLINE vkDestroyDescriptorPoolSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorPool <- vkGetDeviceProc @VkDestroyDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorPool <- vkGetProc @VkDestroyDescriptorPool
+--
+-- __Note:__ @vkDestroyDescriptorPoolUnsafe@ and @vkDestroyDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorPool@ is an alias
+--           of @vkDestroyDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorPoolSafe@.
+--
+vkDestroyDescriptorPool ::
+                        VkDevice -- ^ device
+                                 -> VkDescriptorPool -- ^ descriptorPool
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyDescriptorPool = vkDestroyDescriptorPoolUnsafe
+##else
+vkDestroyDescriptorPool = vkDestroyDescriptorPoolSafe
+
+##endif
+{-# INLINE vkDestroyDescriptorPool #-}
+
+-- | > void vkDestroyDescriptorPool
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorPool vkDestroyDescriptorPool registry at www.khronos.org>
+type HS_vkDestroyDescriptorPool =
+     VkDevice -- ^ device
+              -> VkDescriptorPool -- ^ descriptorPool
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyDescriptorPool =
+     FunPtr HS_vkDestroyDescriptorPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyDescriptorPoolUnsafe ::
+               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorPoolSafe ::
+               PFN_vkDestroyDescriptorPool -> HS_vkDestroyDescriptorPool
+
+instance VulkanProc "vkDestroyDescriptorPool" where
+    type VkProcType "vkDestroyDescriptorPool" =
+         HS_vkDestroyDescriptorPool
+    vkProcSymbol = _VkDestroyDescriptorPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyDescriptorPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetDescriptorPool :: CString
+
+pattern VkResetDescriptorPool <- (is_VkResetDescriptorPool -> True)
+  where
+    VkResetDescriptorPool = _VkResetDescriptorPool
+
+{-# INLINE _VkResetDescriptorPool #-}
+
+_VkResetDescriptorPool :: CString
+_VkResetDescriptorPool = Ptr "vkResetDescriptorPool\NUL"##
+
+{-# INLINE is_VkResetDescriptorPool #-}
+
+is_VkResetDescriptorPool :: CString -> Bool
+is_VkResetDescriptorPool
+  = (EQ ==) . cmpCStrings _VkResetDescriptorPool
+
+type VkResetDescriptorPool = "vkResetDescriptorPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , VkDescriptorPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
+--
+-- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
+--           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetDescriptorPool"
+               vkResetDescriptorPoolUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                -> IO VkResult
+
+##else
+vkResetDescriptorPoolUnsafe ::
+                            VkDevice -- ^ device
+                                     ->
+                              VkDescriptorPool -- ^ descriptorPool
+                                               -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                             -> IO VkResult
+vkResetDescriptorPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetDescriptorPool)
+
+{-# NOINLINE vkResetDescriptorPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , VkDescriptorPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
+--
+-- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
+--           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetDescriptorPool"
+               vkResetDescriptorPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                -> IO VkResult
+
+##else
+vkResetDescriptorPoolSafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            VkDescriptorPool -- ^ descriptorPool
+                                             -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                           -> IO VkResult
+vkResetDescriptorPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetDescriptorPool)
+
+{-# NOINLINE vkResetDescriptorPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetDescriptorPool
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , VkDescriptorPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetDescriptorPool <- vkGetDeviceProc @VkResetDescriptorPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetDescriptorPool <- vkGetProc @VkResetDescriptorPool
+--
+-- __Note:__ @vkResetDescriptorPoolUnsafe@ and @vkResetDescriptorPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetDescriptorPool@ is an alias
+--           of @vkResetDescriptorPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetDescriptorPoolSafe@.
+--
+vkResetDescriptorPool ::
+                      VkDevice -- ^ device
+                               ->
+                        VkDescriptorPool -- ^ descriptorPool
+                                         -> VkDescriptorPoolResetFlags -- ^ flags
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetDescriptorPool = vkResetDescriptorPoolUnsafe
+##else
+vkResetDescriptorPool = vkResetDescriptorPoolSafe
+
+##endif
+{-# INLINE vkResetDescriptorPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetDescriptorPool
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , VkDescriptorPoolResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetDescriptorPool vkResetDescriptorPool registry at www.khronos.org>
+type HS_vkResetDescriptorPool =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorPool -- ^ descriptorPool
+                        -> VkDescriptorPoolResetFlags -- ^ flags
+                                                      -> IO VkResult
+
+type PFN_vkResetDescriptorPool = FunPtr HS_vkResetDescriptorPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkResetDescriptorPoolUnsafe ::
+               PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
+
+foreign import ccall safe "dynamic" unwrapVkResetDescriptorPoolSafe
+               :: PFN_vkResetDescriptorPool -> HS_vkResetDescriptorPool
+
+instance VulkanProc "vkResetDescriptorPool" where
+    type VkProcType "vkResetDescriptorPool" = HS_vkResetDescriptorPool
+    vkProcSymbol = _VkResetDescriptorPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkResetDescriptorPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkResetDescriptorPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateDescriptorSets :: CString
+
+pattern VkAllocateDescriptorSets <-
+        (is_VkAllocateDescriptorSets -> True)
+  where
+    VkAllocateDescriptorSets = _VkAllocateDescriptorSets
+
+{-# INLINE _VkAllocateDescriptorSets #-}
+
+_VkAllocateDescriptorSets :: CString
+_VkAllocateDescriptorSets = Ptr "vkAllocateDescriptorSets\NUL"##
+
+{-# INLINE is_VkAllocateDescriptorSets #-}
+
+is_VkAllocateDescriptorSets :: CString -> Bool
+is_VkAllocateDescriptorSets
+  = (EQ ==) . cmpCStrings _VkAllocateDescriptorSets
+
+type VkAllocateDescriptorSets = "vkAllocateDescriptorSets"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+-- > VkResult vkAllocateDescriptorSets
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+-- >     , VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
+--
+-- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
+--           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateDescriptorSets"
+               vkAllocateDescriptorSetsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                       -> IO VkResult
+
+##else
+vkAllocateDescriptorSetsUnsafe ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                                 ->
+                                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                       -> IO VkResult
+vkAllocateDescriptorSetsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkAllocateDescriptorSets)
+
+{-# NOINLINE vkAllocateDescriptorSetsUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+-- > VkResult vkAllocateDescriptorSets
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+-- >     , VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
+--
+-- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
+--           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateDescriptorSets"
+               vkAllocateDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                       -> IO VkResult
+
+##else
+vkAllocateDescriptorSetsSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                               ->
+                                 Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> IO VkResult
+vkAllocateDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateDescriptorSets)
+
+{-# NOINLINE vkAllocateDescriptorSetsSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+-- > VkResult vkAllocateDescriptorSets
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+-- >     , VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateDescriptorSets <- vkGetDeviceProc @VkAllocateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateDescriptorSets <- vkGetProc @VkAllocateDescriptorSets
+--
+-- __Note:__ @vkAllocateDescriptorSetsUnsafe@ and @vkAllocateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateDescriptorSets@ is an alias
+--           of @vkAllocateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateDescriptorSetsSafe@.
+--
+vkAllocateDescriptorSets ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                                           ->
+                             Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkAllocateDescriptorSets = vkAllocateDescriptorSetsUnsafe
+##else
+vkAllocateDescriptorSets = vkAllocateDescriptorSetsSafe
+
+##endif
+{-# INLINE vkAllocateDescriptorSets #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FRAGMENTED_POOL', 'VK_ERROR_OUT_OF_POOL_MEMORY'.
+--
+--   > VkResult vkAllocateDescriptorSets
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetAllocateInfo* pAllocateInfo
+--   >     , VkDescriptorSet* pDescriptorSets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateDescriptorSets vkAllocateDescriptorSets registry at www.khronos.org>
+type HS_vkAllocateDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetAllocateInfo -- ^ pAllocateInfo
+                                       ->
+         Ptr VkDescriptorSet -- ^ pDescriptorSets
+                             -> IO VkResult
+
+type PFN_vkAllocateDescriptorSets =
+     FunPtr HS_vkAllocateDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkAllocateDescriptorSetsUnsafe ::
+               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkAllocateDescriptorSetsSafe ::
+               PFN_vkAllocateDescriptorSets -> HS_vkAllocateDescriptorSets
+
+instance VulkanProc "vkAllocateDescriptorSets" where
+    type VkProcType "vkAllocateDescriptorSets" =
+         HS_vkAllocateDescriptorSets
+    vkProcSymbol = _VkAllocateDescriptorSets
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkAllocateDescriptorSetsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkAllocateDescriptorSetsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeDescriptorSets :: CString
+
+pattern VkFreeDescriptorSets <- (is_VkFreeDescriptorSets -> True)
+  where
+    VkFreeDescriptorSets = _VkFreeDescriptorSets
+
+{-# INLINE _VkFreeDescriptorSets #-}
+
+_VkFreeDescriptorSets :: CString
+_VkFreeDescriptorSets = Ptr "vkFreeDescriptorSets\NUL"##
+
+{-# INLINE is_VkFreeDescriptorSets #-}
+
+is_VkFreeDescriptorSets :: CString -> Bool
+is_VkFreeDescriptorSets
+  = (EQ ==) . cmpCStrings _VkFreeDescriptorSets
+
+type VkFreeDescriptorSets = "vkFreeDescriptorSets"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFreeDescriptorSets
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
+--
+-- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
+--           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeDescriptorSets"
+               vkFreeDescriptorSetsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> Word32 -- ^ descriptorSetCount
+                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                   -> IO VkResult
+
+##else
+vkFreeDescriptorSetsUnsafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             VkDescriptorPool -- ^ descriptorPool
+                                              -> Word32 -- ^ descriptorSetCount
+                                                        -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                               -> IO VkResult
+vkFreeDescriptorSetsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeDescriptorSets)
+
+{-# NOINLINE vkFreeDescriptorSetsUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFreeDescriptorSets
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
+--
+-- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
+--           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeDescriptorSets"
+               vkFreeDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorPool -- ^ descriptorPool
+                                  -> Word32 -- ^ descriptorSetCount
+                                            -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                   -> IO VkResult
+
+##else
+vkFreeDescriptorSetsSafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           VkDescriptorPool -- ^ descriptorPool
+                                            -> Word32 -- ^ descriptorSetCount
+                                                      -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                             -> IO VkResult
+vkFreeDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeDescriptorSets)
+
+{-# NOINLINE vkFreeDescriptorSetsSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkFreeDescriptorSets
+-- >     ( VkDevice device
+-- >     , VkDescriptorPool descriptorPool
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeDescriptorSets <- vkGetDeviceProc @VkFreeDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeDescriptorSets <- vkGetProc @VkFreeDescriptorSets
+--
+-- __Note:__ @vkFreeDescriptorSetsUnsafe@ and @vkFreeDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeDescriptorSets@ is an alias
+--           of @vkFreeDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeDescriptorSetsSafe@.
+--
+vkFreeDescriptorSets ::
+                     VkDevice -- ^ device
+                              ->
+                       VkDescriptorPool -- ^ descriptorPool
+                                        -> Word32 -- ^ descriptorSetCount
+                                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                         -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkFreeDescriptorSets = vkFreeDescriptorSetsUnsafe
+##else
+vkFreeDescriptorSets = vkFreeDescriptorSetsSafe
+
+##endif
+{-# INLINE vkFreeDescriptorSets #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkFreeDescriptorSets
+--   >     ( VkDevice device
+--   >     , VkDescriptorPool descriptorPool
+--   >     , uint32_t descriptorSetCount
+--   >     , const VkDescriptorSet* pDescriptorSets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeDescriptorSets vkFreeDescriptorSets registry at www.khronos.org>
+type HS_vkFreeDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorPool -- ^ descriptorPool
+                        -> Word32 -- ^ descriptorSetCount
+                                  -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                         -> IO VkResult
+
+type PFN_vkFreeDescriptorSets = FunPtr HS_vkFreeDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkFreeDescriptorSetsUnsafe ::
+               PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
+
+foreign import ccall safe "dynamic" unwrapVkFreeDescriptorSetsSafe
+               :: PFN_vkFreeDescriptorSets -> HS_vkFreeDescriptorSets
+
+instance VulkanProc "vkFreeDescriptorSets" where
+    type VkProcType "vkFreeDescriptorSets" = HS_vkFreeDescriptorSets
+    vkProcSymbol = _VkFreeDescriptorSets
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkFreeDescriptorSetsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkFreeDescriptorSetsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUpdateDescriptorSets :: CString
+
+pattern VkUpdateDescriptorSets <-
+        (is_VkUpdateDescriptorSets -> True)
+  where
+    VkUpdateDescriptorSets = _VkUpdateDescriptorSets
+
+{-# INLINE _VkUpdateDescriptorSets #-}
+
+_VkUpdateDescriptorSets :: CString
+_VkUpdateDescriptorSets = Ptr "vkUpdateDescriptorSets\NUL"##
+
+{-# INLINE is_VkUpdateDescriptorSets #-}
+
+is_VkUpdateDescriptorSets :: CString -> Bool
+is_VkUpdateDescriptorSets
+  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSets
+
+type VkUpdateDescriptorSets = "vkUpdateDescriptorSets"
+
+-- |
+-- > void vkUpdateDescriptorSets
+-- >     ( VkDevice device
+-- >     , uint32_t descriptorWriteCount
+-- >     , const VkWriteDescriptorSet* pDescriptorWrites
+-- >     , uint32_t descriptorCopyCount
+-- >     , const VkCopyDescriptorSet* pDescriptorCopies
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
+--
+-- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
+--           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkUpdateDescriptorSets"
+               vkUpdateDescriptorSetsUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ descriptorWriteCount
+                        ->
+                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                            ->
+                     Word32 -- ^ descriptorCopyCount
+                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                       -> IO ()
+
+##else
+vkUpdateDescriptorSetsUnsafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Word32 -- ^ descriptorWriteCount
+                                      ->
+                                 Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                          ->
+                                   Word32 -- ^ descriptorCopyCount
+                                          -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                                     -> IO ()
+vkUpdateDescriptorSetsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkUpdateDescriptorSets)
+
+{-# NOINLINE vkUpdateDescriptorSetsUnsafe #-}
+##endif
+
+-- |
+-- > void vkUpdateDescriptorSets
+-- >     ( VkDevice device
+-- >     , uint32_t descriptorWriteCount
+-- >     , const VkWriteDescriptorSet* pDescriptorWrites
+-- >     , uint32_t descriptorCopyCount
+-- >     , const VkCopyDescriptorSet* pDescriptorCopies
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
+--
+-- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
+--           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkUpdateDescriptorSets"
+               vkUpdateDescriptorSetsSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ descriptorWriteCount
+                        ->
+                   Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                            ->
+                     Word32 -- ^ descriptorCopyCount
+                            -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                       -> IO ()
+
+##else
+vkUpdateDescriptorSetsSafe ::
+                           VkDevice -- ^ device
+                                    ->
+                             Word32 -- ^ descriptorWriteCount
+                                    ->
+                               Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                        ->
+                                 Word32 -- ^ descriptorCopyCount
+                                        -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                                   -> IO ()
+vkUpdateDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkUpdateDescriptorSets)
+
+{-# NOINLINE vkUpdateDescriptorSetsSafe #-}
+##endif
+
+-- |
+-- > void vkUpdateDescriptorSets
+-- >     ( VkDevice device
+-- >     , uint32_t descriptorWriteCount
+-- >     , const VkWriteDescriptorSet* pDescriptorWrites
+-- >     , uint32_t descriptorCopyCount
+-- >     , const VkCopyDescriptorSet* pDescriptorCopies
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSets <- vkGetDeviceProc @VkUpdateDescriptorSets vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSets <- vkGetProc @VkUpdateDescriptorSets
+--
+-- __Note:__ @vkUpdateDescriptorSetsUnsafe@ and @vkUpdateDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSets@ is an alias
+--           of @vkUpdateDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetsSafe@.
+--
+vkUpdateDescriptorSets ::
+                       VkDevice -- ^ device
+                                ->
+                         Word32 -- ^ descriptorWriteCount
+                                ->
+                           Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                                    ->
+                             Word32 -- ^ descriptorCopyCount
+                                    -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                                               -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkUpdateDescriptorSets = vkUpdateDescriptorSetsUnsafe
+##else
+vkUpdateDescriptorSets = vkUpdateDescriptorSetsSafe
+
+##endif
+{-# INLINE vkUpdateDescriptorSets #-}
+
+-- | > void vkUpdateDescriptorSets
+--   >     ( VkDevice device
+--   >     , uint32_t descriptorWriteCount
+--   >     , const VkWriteDescriptorSet* pDescriptorWrites
+--   >     , uint32_t descriptorCopyCount
+--   >     , const VkCopyDescriptorSet* pDescriptorCopies
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSets vkUpdateDescriptorSets registry at www.khronos.org>
+type HS_vkUpdateDescriptorSets =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ descriptorWriteCount
+              ->
+         Ptr VkWriteDescriptorSet -- ^ pDescriptorWrites
+                                  ->
+           Word32 -- ^ descriptorCopyCount
+                  -> Ptr VkCopyDescriptorSet -- ^ pDescriptorCopies
+                                             -> IO ()
+
+type PFN_vkUpdateDescriptorSets = FunPtr HS_vkUpdateDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkUpdateDescriptorSetsUnsafe ::
+               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkUpdateDescriptorSetsSafe ::
+               PFN_vkUpdateDescriptorSets -> HS_vkUpdateDescriptorSets
+
+instance VulkanProc "vkUpdateDescriptorSets" where
+    type VkProcType "vkUpdateDescriptorSets" =
+         HS_vkUpdateDescriptorSets
+    vkProcSymbol = _VkUpdateDescriptorSets
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkUpdateDescriptorSetsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateFramebuffer :: CString
+
+pattern VkCreateFramebuffer <- (is_VkCreateFramebuffer -> True)
+  where
+    VkCreateFramebuffer = _VkCreateFramebuffer
+
+{-# INLINE _VkCreateFramebuffer #-}
+
+_VkCreateFramebuffer :: CString
+_VkCreateFramebuffer = Ptr "vkCreateFramebuffer\NUL"##
+
+{-# INLINE is_VkCreateFramebuffer #-}
+
+is_VkCreateFramebuffer :: CString -> Bool
+is_VkCreateFramebuffer = (EQ ==) . cmpCStrings _VkCreateFramebuffer
+
+type VkCreateFramebuffer = "vkCreateFramebuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFramebuffer
+-- >     ( VkDevice device
+-- >     , const VkFramebufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFramebuffer* pFramebuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
+--
+-- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
+--           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateFramebuffer"
+               vkCreateFramebufferUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                  -> IO VkResult
+
+##else
+vkCreateFramebufferUnsafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                                        ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                             -> IO VkResult
+vkCreateFramebufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateFramebuffer)
+
+{-# NOINLINE vkCreateFramebufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFramebuffer
+-- >     ( VkDevice device
+-- >     , const VkFramebufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFramebuffer* pFramebuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
+--
+-- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
+--           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateFramebuffer"
+               vkCreateFramebufferSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                  -> IO VkResult
+
+##else
+vkCreateFramebufferSafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                                      ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                           -> IO VkResult
+vkCreateFramebufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateFramebuffer)
+
+{-# NOINLINE vkCreateFramebufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateFramebuffer
+-- >     ( VkDevice device
+-- >     , const VkFramebufferCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkFramebuffer* pFramebuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateFramebuffer <- vkGetDeviceProc @VkCreateFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateFramebuffer <- vkGetProc @VkCreateFramebuffer
+--
+-- __Note:__ @vkCreateFramebufferUnsafe@ and @vkCreateFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateFramebuffer@ is an alias
+--           of @vkCreateFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateFramebufferSafe@.
+--
+vkCreateFramebuffer ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                                  ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateFramebuffer = vkCreateFramebufferUnsafe
+##else
+vkCreateFramebuffer = vkCreateFramebufferSafe
+
+##endif
+{-# INLINE vkCreateFramebuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateFramebuffer
+--   >     ( VkDevice device
+--   >     , const VkFramebufferCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkFramebuffer* pFramebuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateFramebuffer vkCreateFramebuffer registry at www.khronos.org>
+type HS_vkCreateFramebuffer =
+     VkDevice -- ^ device
+              ->
+       Ptr VkFramebufferCreateInfo -- ^ pCreateInfo
+                                   ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkFramebuffer -- ^ pFramebuffer
+                                                        -> IO VkResult
+
+type PFN_vkCreateFramebuffer = FunPtr HS_vkCreateFramebuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateFramebufferUnsafe ::
+               PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
+
+foreign import ccall safe "dynamic" unwrapVkCreateFramebufferSafe
+               :: PFN_vkCreateFramebuffer -> HS_vkCreateFramebuffer
+
+instance VulkanProc "vkCreateFramebuffer" where
+    type VkProcType "vkCreateFramebuffer" = HS_vkCreateFramebuffer
+    vkProcSymbol = _VkCreateFramebuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateFramebufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateFramebufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyFramebuffer :: CString
+
+pattern VkDestroyFramebuffer <- (is_VkDestroyFramebuffer -> True)
+  where
+    VkDestroyFramebuffer = _VkDestroyFramebuffer
+
+{-# INLINE _VkDestroyFramebuffer #-}
+
+_VkDestroyFramebuffer :: CString
+_VkDestroyFramebuffer = Ptr "vkDestroyFramebuffer\NUL"##
+
+{-# INLINE is_VkDestroyFramebuffer #-}
+
+is_VkDestroyFramebuffer :: CString -> Bool
+is_VkDestroyFramebuffer
+  = (EQ ==) . cmpCStrings _VkDestroyFramebuffer
+
+type VkDestroyFramebuffer = "vkDestroyFramebuffer"
+
+-- |
+-- > void vkDestroyFramebuffer
+-- >     ( VkDevice device
+-- >     , VkFramebuffer framebuffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
+--
+-- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
+--           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyFramebuffer"
+               vkDestroyFramebufferUnsafe ::
+               VkDevice -- ^ device
+                        -> VkFramebuffer -- ^ framebuffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyFramebufferUnsafe ::
+                           VkDevice -- ^ device
+                                    -> VkFramebuffer -- ^ framebuffer
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyFramebufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyFramebuffer)
+
+{-# NOINLINE vkDestroyFramebufferUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyFramebuffer
+-- >     ( VkDevice device
+-- >     , VkFramebuffer framebuffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
+--
+-- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
+--           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyFramebuffer"
+               vkDestroyFramebufferSafe ::
+               VkDevice -- ^ device
+                        -> VkFramebuffer -- ^ framebuffer
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyFramebufferSafe ::
+                         VkDevice -- ^ device
+                                  -> VkFramebuffer -- ^ framebuffer
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyFramebufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyFramebuffer)
+
+{-# NOINLINE vkDestroyFramebufferSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyFramebuffer
+-- >     ( VkDevice device
+-- >     , VkFramebuffer framebuffer
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyFramebuffer <- vkGetDeviceProc @VkDestroyFramebuffer vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyFramebuffer <- vkGetProc @VkDestroyFramebuffer
+--
+-- __Note:__ @vkDestroyFramebufferUnsafe@ and @vkDestroyFramebufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyFramebuffer@ is an alias
+--           of @vkDestroyFramebufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyFramebufferSafe@.
+--
+vkDestroyFramebuffer ::
+                     VkDevice -- ^ device
+                              -> VkFramebuffer -- ^ framebuffer
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyFramebuffer = vkDestroyFramebufferUnsafe
+##else
+vkDestroyFramebuffer = vkDestroyFramebufferSafe
+
+##endif
+{-# INLINE vkDestroyFramebuffer #-}
+
+-- | > void vkDestroyFramebuffer
+--   >     ( VkDevice device
+--   >     , VkFramebuffer framebuffer
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyFramebuffer vkDestroyFramebuffer registry at www.khronos.org>
+type HS_vkDestroyFramebuffer =
+     VkDevice -- ^ device
+              -> VkFramebuffer -- ^ framebuffer
+                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> IO ()
+
+type PFN_vkDestroyFramebuffer = FunPtr HS_vkDestroyFramebuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyFramebufferUnsafe ::
+               PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
+
+foreign import ccall safe "dynamic" unwrapVkDestroyFramebufferSafe
+               :: PFN_vkDestroyFramebuffer -> HS_vkDestroyFramebuffer
+
+instance VulkanProc "vkDestroyFramebuffer" where
+    type VkProcType "vkDestroyFramebuffer" = HS_vkDestroyFramebuffer
+    vkProcSymbol = _VkDestroyFramebuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyFramebufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyFramebufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateRenderPass :: CString
+
+pattern VkCreateRenderPass <- (is_VkCreateRenderPass -> True)
+  where
+    VkCreateRenderPass = _VkCreateRenderPass
+
+{-# INLINE _VkCreateRenderPass #-}
+
+_VkCreateRenderPass :: CString
+_VkCreateRenderPass = Ptr "vkCreateRenderPass\NUL"##
+
+{-# INLINE is_VkCreateRenderPass #-}
+
+is_VkCreateRenderPass :: CString -> Bool
+is_VkCreateRenderPass = (EQ ==) . cmpCStrings _VkCreateRenderPass
+
+type VkCreateRenderPass = "vkCreateRenderPass"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateRenderPass
+-- >     ( VkDevice device
+-- >     , const VkRenderPassCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkRenderPass* pRenderPass
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
+--
+-- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
+--           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateRenderPass"
+               vkCreateRenderPassUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                 -> IO VkResult
+
+##else
+vkCreateRenderPassUnsafe ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                                      ->
+                             Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                       -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                           -> IO VkResult
+vkCreateRenderPassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateRenderPass)
+
+{-# NOINLINE vkCreateRenderPassUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateRenderPass
+-- >     ( VkDevice device
+-- >     , const VkRenderPassCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkRenderPass* pRenderPass
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
+--
+-- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
+--           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateRenderPass"
+               vkCreateRenderPassSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                            ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                 -> IO VkResult
+
+##else
+vkCreateRenderPassSafe ::
+                       VkDevice -- ^ device
+                                ->
+                         Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                                    ->
+                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                     -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                         -> IO VkResult
+vkCreateRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateRenderPass)
+
+{-# NOINLINE vkCreateRenderPassSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateRenderPass
+-- >     ( VkDevice device
+-- >     , const VkRenderPassCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkRenderPass* pRenderPass
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateRenderPass <- vkGetDeviceProc @VkCreateRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateRenderPass <- vkGetProc @VkCreateRenderPass
+--
+-- __Note:__ @vkCreateRenderPassUnsafe@ and @vkCreateRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateRenderPass@ is an alias
+--           of @vkCreateRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateRenderPassSafe@.
+--
+vkCreateRenderPass ::
+                   VkDevice -- ^ device
+                            ->
+                     Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                                ->
+                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                 -> Ptr VkRenderPass -- ^ pRenderPass
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateRenderPass = vkCreateRenderPassUnsafe
+##else
+vkCreateRenderPass = vkCreateRenderPassSafe
+
+##endif
+{-# INLINE vkCreateRenderPass #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateRenderPass
+--   >     ( VkDevice device
+--   >     , const VkRenderPassCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkRenderPass* pRenderPass
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateRenderPass vkCreateRenderPass registry at www.khronos.org>
+type HS_vkCreateRenderPass =
+     VkDevice -- ^ device
+              ->
+       Ptr VkRenderPassCreateInfo -- ^ pCreateInfo
+                                  ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkRenderPass -- ^ pRenderPass
+                                                       -> IO VkResult
+
+type PFN_vkCreateRenderPass = FunPtr HS_vkCreateRenderPass
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateRenderPassUnsafe ::
+               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCreateRenderPassSafe ::
+               PFN_vkCreateRenderPass -> HS_vkCreateRenderPass
+
+instance VulkanProc "vkCreateRenderPass" where
+    type VkProcType "vkCreateRenderPass" = HS_vkCreateRenderPass
+    vkProcSymbol = _VkCreateRenderPass
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateRenderPassUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateRenderPassSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyRenderPass :: CString
+
+pattern VkDestroyRenderPass <- (is_VkDestroyRenderPass -> True)
+  where
+    VkDestroyRenderPass = _VkDestroyRenderPass
+
+{-# INLINE _VkDestroyRenderPass #-}
+
+_VkDestroyRenderPass :: CString
+_VkDestroyRenderPass = Ptr "vkDestroyRenderPass\NUL"##
+
+{-# INLINE is_VkDestroyRenderPass #-}
+
+is_VkDestroyRenderPass :: CString -> Bool
+is_VkDestroyRenderPass = (EQ ==) . cmpCStrings _VkDestroyRenderPass
+
+type VkDestroyRenderPass = "vkDestroyRenderPass"
+
+-- |
+-- > void vkDestroyRenderPass
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
+--
+-- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
+--           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyRenderPass"
+               vkDestroyRenderPassUnsafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyRenderPassUnsafe ::
+                          VkDevice -- ^ device
+                                   -> VkRenderPass -- ^ renderPass
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyRenderPassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyRenderPass)
+
+{-# NOINLINE vkDestroyRenderPassUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyRenderPass
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
+--
+-- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
+--           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyRenderPass"
+               vkDestroyRenderPassSafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     -> IO ()
+
+##else
+vkDestroyRenderPassSafe ::
+                        VkDevice -- ^ device
+                                 -> VkRenderPass -- ^ renderPass
+                                                 -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                              -> IO ()
+vkDestroyRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyRenderPass)
+
+{-# NOINLINE vkDestroyRenderPassSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyRenderPass
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyRenderPass <- vkGetDeviceProc @VkDestroyRenderPass vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyRenderPass <- vkGetProc @VkDestroyRenderPass
+--
+-- __Note:__ @vkDestroyRenderPassUnsafe@ and @vkDestroyRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyRenderPass@ is an alias
+--           of @vkDestroyRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyRenderPassSafe@.
+--
+vkDestroyRenderPass ::
+                    VkDevice -- ^ device
+                             -> VkRenderPass -- ^ renderPass
+                                             -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyRenderPass = vkDestroyRenderPassUnsafe
+##else
+vkDestroyRenderPass = vkDestroyRenderPassSafe
+
+##endif
+{-# INLINE vkDestroyRenderPass #-}
+
+-- | > void vkDestroyRenderPass
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyRenderPass vkDestroyRenderPass registry at www.khronos.org>
+type HS_vkDestroyRenderPass =
+     VkDevice -- ^ device
+              -> VkRenderPass -- ^ renderPass
+                              -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                           -> IO ()
+
+type PFN_vkDestroyRenderPass = FunPtr HS_vkDestroyRenderPass
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyRenderPassUnsafe ::
+               PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkDestroyRenderPassSafe
+               :: PFN_vkDestroyRenderPass -> HS_vkDestroyRenderPass
+
+instance VulkanProc "vkDestroyRenderPass" where
+    type VkProcType "vkDestroyRenderPass" = HS_vkDestroyRenderPass
+    vkProcSymbol = _VkDestroyRenderPass
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyRenderPassUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyRenderPassSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetRenderAreaGranularity :: CString
+
+pattern VkGetRenderAreaGranularity <-
+        (is_VkGetRenderAreaGranularity -> True)
+  where
+    VkGetRenderAreaGranularity = _VkGetRenderAreaGranularity
+
+{-# INLINE _VkGetRenderAreaGranularity #-}
+
+_VkGetRenderAreaGranularity :: CString
+_VkGetRenderAreaGranularity = Ptr "vkGetRenderAreaGranularity\NUL"##
+
+{-# INLINE is_VkGetRenderAreaGranularity #-}
+
+is_VkGetRenderAreaGranularity :: CString -> Bool
+is_VkGetRenderAreaGranularity
+  = (EQ ==) . cmpCStrings _VkGetRenderAreaGranularity
+
+type VkGetRenderAreaGranularity = "vkGetRenderAreaGranularity"
+
+-- |
+-- > void vkGetRenderAreaGranularity
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , VkExtent2D* pGranularity
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
+--
+-- or less efficient:
+--
+-- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
+--
+-- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
+--           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkGetRenderAreaGranularity"
+               vkGetRenderAreaGranularityUnsafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                          -> IO ()
+
+##else
+vkGetRenderAreaGranularityUnsafe ::
+                                 VkDevice -- ^ device
+                                          -> VkRenderPass -- ^ renderPass
+                                                          -> Ptr VkExtent2D -- ^ pGranularity
+                                                                            -> IO ()
+vkGetRenderAreaGranularityUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetRenderAreaGranularity)
+
+{-# NOINLINE vkGetRenderAreaGranularityUnsafe #-}
+##endif
+
+-- |
+-- > void vkGetRenderAreaGranularity
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , VkExtent2D* pGranularity
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
+--
+-- or less efficient:
+--
+-- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
+--
+-- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
+--           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkGetRenderAreaGranularity"
+               vkGetRenderAreaGranularitySafe ::
+               VkDevice -- ^ device
+                        -> VkRenderPass -- ^ renderPass
+                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                          -> IO ()
+
+##else
+vkGetRenderAreaGranularitySafe ::
+                               VkDevice -- ^ device
+                                        -> VkRenderPass -- ^ renderPass
+                                                        -> Ptr VkExtent2D -- ^ pGranularity
+                                                                          -> IO ()
+vkGetRenderAreaGranularitySafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetRenderAreaGranularity)
+
+{-# NOINLINE vkGetRenderAreaGranularitySafe #-}
+##endif
+
+-- |
+-- > void vkGetRenderAreaGranularity
+-- >     ( VkDevice device
+-- >     , VkRenderPass renderPass
+-- >     , VkExtent2D* pGranularity
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetRenderAreaGranularity <- vkGetDeviceProc @VkGetRenderAreaGranularity vkDevice
+--
+-- or less efficient:
+--
+-- > myGetRenderAreaGranularity <- vkGetProc @VkGetRenderAreaGranularity
+--
+-- __Note:__ @vkGetRenderAreaGranularityUnsafe@ and @vkGetRenderAreaGranularitySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetRenderAreaGranularity@ is an alias
+--           of @vkGetRenderAreaGranularityUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetRenderAreaGranularitySafe@.
+--
+vkGetRenderAreaGranularity ::
+                           VkDevice -- ^ device
+                                    -> VkRenderPass -- ^ renderPass
+                                                    -> Ptr VkExtent2D -- ^ pGranularity
+                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkGetRenderAreaGranularity = vkGetRenderAreaGranularityUnsafe
+##else
+vkGetRenderAreaGranularity = vkGetRenderAreaGranularitySafe
+
+##endif
+{-# INLINE vkGetRenderAreaGranularity #-}
+
+-- | > void vkGetRenderAreaGranularity
+--   >     ( VkDevice device
+--   >     , VkRenderPass renderPass
+--   >     , VkExtent2D* pGranularity
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetRenderAreaGranularity vkGetRenderAreaGranularity registry at www.khronos.org>
+type HS_vkGetRenderAreaGranularity =
+     VkDevice -- ^ device
+              -> VkRenderPass -- ^ renderPass
+                              -> Ptr VkExtent2D -- ^ pGranularity
+                                                -> IO ()
+
+type PFN_vkGetRenderAreaGranularity =
+     FunPtr HS_vkGetRenderAreaGranularity
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetRenderAreaGranularityUnsafe ::
+               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetRenderAreaGranularitySafe ::
+               PFN_vkGetRenderAreaGranularity -> HS_vkGetRenderAreaGranularity
+
+instance VulkanProc "vkGetRenderAreaGranularity" where
+    type VkProcType "vkGetRenderAreaGranularity" =
+         HS_vkGetRenderAreaGranularity
+    vkProcSymbol = _VkGetRenderAreaGranularity
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetRenderAreaGranularityUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetRenderAreaGranularitySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCreateCommandPool :: CString
+
+pattern VkCreateCommandPool <- (is_VkCreateCommandPool -> True)
+  where
+    VkCreateCommandPool = _VkCreateCommandPool
+
+{-# INLINE _VkCreateCommandPool #-}
+
+_VkCreateCommandPool :: CString
+_VkCreateCommandPool = Ptr "vkCreateCommandPool\NUL"##
+
+{-# INLINE is_VkCreateCommandPool #-}
+
+is_VkCreateCommandPool :: CString -> Bool
+is_VkCreateCommandPool = (EQ ==) . cmpCStrings _VkCreateCommandPool
+
+type VkCreateCommandPool = "vkCreateCommandPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateCommandPool
+-- >     ( VkDevice device
+-- >     , const VkCommandPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkCommandPool* pCommandPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
+--
+-- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
+--           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCreateCommandPool"
+               vkCreateCommandPoolUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                  -> IO VkResult
+
+##else
+vkCreateCommandPoolUnsafe ::
+                          VkDevice -- ^ device
+                                   ->
+                            Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                                        ->
+                              Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                        -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                             -> IO VkResult
+vkCreateCommandPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCreateCommandPool)
+
+{-# NOINLINE vkCreateCommandPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateCommandPool
+-- >     ( VkDevice device
+-- >     , const VkCommandPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkCommandPool* pCommandPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
+--
+-- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
+--           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCreateCommandPool"
+               vkCreateCommandPoolSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                             ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                  -> IO VkResult
+
+##else
+vkCreateCommandPoolSafe ::
+                        VkDevice -- ^ device
+                                 ->
+                          Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                                      ->
+                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                      -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                           -> IO VkResult
+vkCreateCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCreateCommandPool)
+
+{-# NOINLINE vkCreateCommandPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateCommandPool
+-- >     ( VkDevice device
+-- >     , const VkCommandPoolCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkCommandPool* pCommandPool
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateCommandPool <- vkGetDeviceProc @VkCreateCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateCommandPool <- vkGetProc @VkCreateCommandPool
+--
+-- __Note:__ @vkCreateCommandPoolUnsafe@ and @vkCreateCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateCommandPool@ is an alias
+--           of @vkCreateCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateCommandPoolSafe@.
+--
+vkCreateCommandPool ::
+                    VkDevice -- ^ device
+                             ->
+                      Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                                  ->
+                        Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                  -> Ptr VkCommandPool -- ^ pCommandPool
+                                                                       -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkCreateCommandPool = vkCreateCommandPoolUnsafe
+##else
+vkCreateCommandPool = vkCreateCommandPoolSafe
+
+##endif
+{-# INLINE vkCreateCommandPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateCommandPool
+--   >     ( VkDevice device
+--   >     , const VkCommandPoolCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkCommandPool* pCommandPool
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateCommandPool vkCreateCommandPool registry at www.khronos.org>
+type HS_vkCreateCommandPool =
+     VkDevice -- ^ device
+              ->
+       Ptr VkCommandPoolCreateInfo -- ^ pCreateInfo
+                                   ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   -> Ptr VkCommandPool -- ^ pCommandPool
+                                                        -> IO VkResult
+
+type PFN_vkCreateCommandPool = FunPtr HS_vkCreateCommandPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateCommandPoolUnsafe ::
+               PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkCreateCommandPoolSafe
+               :: PFN_vkCreateCommandPool -> HS_vkCreateCommandPool
+
+instance VulkanProc "vkCreateCommandPool" where
+    type VkProcType "vkCreateCommandPool" = HS_vkCreateCommandPool
+    vkProcSymbol = _VkCreateCommandPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateCommandPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateCommandPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyCommandPool :: CString
+
+pattern VkDestroyCommandPool <- (is_VkDestroyCommandPool -> True)
+  where
+    VkDestroyCommandPool = _VkDestroyCommandPool
+
+{-# INLINE _VkDestroyCommandPool #-}
+
+_VkDestroyCommandPool :: CString
+_VkDestroyCommandPool = Ptr "vkDestroyCommandPool\NUL"##
+
+{-# INLINE is_VkDestroyCommandPool #-}
+
+is_VkDestroyCommandPool :: CString -> Bool
+is_VkDestroyCommandPool
+  = (EQ ==) . cmpCStrings _VkDestroyCommandPool
+
+type VkDestroyCommandPool = "vkDestroyCommandPool"
+
+-- |
+-- > void vkDestroyCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
+--
+-- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
+--           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkDestroyCommandPool"
+               vkDestroyCommandPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyCommandPoolUnsafe ::
+                           VkDevice -- ^ device
+                                    -> VkCommandPool -- ^ commandPool
+                                                     -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                  -> IO ()
+vkDestroyCommandPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkDestroyCommandPool)
+
+{-# NOINLINE vkDestroyCommandPoolUnsafe #-}
+##endif
+
+-- |
+-- > void vkDestroyCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
+--
+-- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
+--           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkDestroyCommandPool"
+               vkDestroyCommandPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+
+##else
+vkDestroyCommandPoolSafe ::
+                         VkDevice -- ^ device
+                                  -> VkCommandPool -- ^ commandPool
+                                                   -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                -> IO ()
+vkDestroyCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkDestroyCommandPool)
+
+{-# NOINLINE vkDestroyCommandPoolSafe #-}
+##endif
+
+-- |
+-- > void vkDestroyCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyCommandPool <- vkGetDeviceProc @VkDestroyCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyCommandPool <- vkGetProc @VkDestroyCommandPool
+--
+-- __Note:__ @vkDestroyCommandPoolUnsafe@ and @vkDestroyCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyCommandPool@ is an alias
+--           of @vkDestroyCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyCommandPoolSafe@.
+--
+vkDestroyCommandPool ::
+                     VkDevice -- ^ device
+                              -> VkCommandPool -- ^ commandPool
+                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                            -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkDestroyCommandPool = vkDestroyCommandPoolUnsafe
+##else
+vkDestroyCommandPool = vkDestroyCommandPoolSafe
+
+##endif
+{-# INLINE vkDestroyCommandPool #-}
+
+-- | > void vkDestroyCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyCommandPool vkDestroyCommandPool registry at www.khronos.org>
+type HS_vkDestroyCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                            -> IO ()
+
+type PFN_vkDestroyCommandPool = FunPtr HS_vkDestroyCommandPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyCommandPoolUnsafe ::
+               PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkDestroyCommandPoolSafe
+               :: PFN_vkDestroyCommandPool -> HS_vkDestroyCommandPool
+
+instance VulkanProc "vkDestroyCommandPool" where
+    type VkProcType "vkDestroyCommandPool" = HS_vkDestroyCommandPool
+    vkProcSymbol = _VkDestroyCommandPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyCommandPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyCommandPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetCommandPool :: CString
+
+pattern VkResetCommandPool <- (is_VkResetCommandPool -> True)
+  where
+    VkResetCommandPool = _VkResetCommandPool
+
+{-# INLINE _VkResetCommandPool #-}
+
+_VkResetCommandPool :: CString
+_VkResetCommandPool = Ptr "vkResetCommandPool\NUL"##
+
+{-# INLINE is_VkResetCommandPool #-}
+
+is_VkResetCommandPool :: CString -> Bool
+is_VkResetCommandPool = (EQ ==) . cmpCStrings _VkResetCommandPool
+
+type VkResetCommandPool = "vkResetCommandPool"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetCommandPool <- vkGetProc @VkResetCommandPool
+--
+-- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
+--           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetCommandPool"
+               vkResetCommandPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolResetFlags -- ^ flags
+                                                                    -> IO VkResult
+
+##else
+vkResetCommandPoolUnsafe ::
+                         VkDevice -- ^ device
+                                  -> VkCommandPool -- ^ commandPool
+                                                   -> VkCommandPoolResetFlags -- ^ flags
+                                                                              -> IO VkResult
+vkResetCommandPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetCommandPool)
+
+{-# NOINLINE vkResetCommandPoolUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetCommandPool <- vkGetProc @VkResetCommandPool
+--
+-- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
+--           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetCommandPool"
+               vkResetCommandPoolSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolResetFlags -- ^ flags
+                                                                    -> IO VkResult
+
+##else
+vkResetCommandPoolSafe ::
+                       VkDevice -- ^ device
+                                -> VkCommandPool -- ^ commandPool
+                                                 -> VkCommandPoolResetFlags -- ^ flags
+                                                                            -> IO VkResult
+vkResetCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandPool)
+
+{-# NOINLINE vkResetCommandPoolSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandPool <- vkGetDeviceProc @VkResetCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myResetCommandPool <- vkGetProc @VkResetCommandPool
+--
+-- __Note:__ @vkResetCommandPoolUnsafe@ and @vkResetCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandPool@ is an alias
+--           of @vkResetCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandPoolSafe@.
+--
+vkResetCommandPool ::
+                   VkDevice -- ^ device
+                            -> VkCommandPool -- ^ commandPool
+                                             -> VkCommandPoolResetFlags -- ^ flags
+                                                                        -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetCommandPool = vkResetCommandPoolUnsafe
+##else
+vkResetCommandPool = vkResetCommandPoolSafe
+
+##endif
+{-# INLINE vkResetCommandPool #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandPool vkResetCommandPool registry at www.khronos.org>
+type HS_vkResetCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> VkCommandPoolResetFlags -- ^ flags
+                                                          -> IO VkResult
+
+type PFN_vkResetCommandPool = FunPtr HS_vkResetCommandPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkResetCommandPoolUnsafe ::
+               PFN_vkResetCommandPool -> HS_vkResetCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkResetCommandPoolSafe ::
+               PFN_vkResetCommandPool -> HS_vkResetCommandPool
+
+instance VulkanProc "vkResetCommandPool" where
+    type VkProcType "vkResetCommandPool" = HS_vkResetCommandPool
+    vkProcSymbol = _VkResetCommandPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkResetCommandPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkResetCommandPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkAllocateCommandBuffers :: CString
+
+pattern VkAllocateCommandBuffers <-
+        (is_VkAllocateCommandBuffers -> True)
+  where
+    VkAllocateCommandBuffers = _VkAllocateCommandBuffers
+
+{-# INLINE _VkAllocateCommandBuffers #-}
+
+_VkAllocateCommandBuffers :: CString
+_VkAllocateCommandBuffers = Ptr "vkAllocateCommandBuffers\NUL"##
+
+{-# INLINE is_VkAllocateCommandBuffers #-}
+
+is_VkAllocateCommandBuffers :: CString -> Bool
+is_VkAllocateCommandBuffers
+  = (EQ ==) . cmpCStrings _VkAllocateCommandBuffers
+
+type VkAllocateCommandBuffers = "vkAllocateCommandBuffers"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkAllocateCommandBuffers
+-- >     ( VkDevice device
+-- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+-- >     , VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
+--
+-- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
+--           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkAllocateCommandBuffers"
+               vkAllocateCommandBuffersUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                       -> IO VkResult
+
+##else
+vkAllocateCommandBuffersUnsafe ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                                 ->
+                                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                       -> IO VkResult
+vkAllocateCommandBuffersUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkAllocateCommandBuffers)
+
+{-# NOINLINE vkAllocateCommandBuffersUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkAllocateCommandBuffers
+-- >     ( VkDevice device
+-- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+-- >     , VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
+--
+-- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
+--           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkAllocateCommandBuffers"
+               vkAllocateCommandBuffersSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                 ->
+                   Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                       -> IO VkResult
+
+##else
+vkAllocateCommandBuffersSafe ::
+                             VkDevice -- ^ device
+                                      ->
+                               Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                               ->
+                                 Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                     -> IO VkResult
+vkAllocateCommandBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkAllocateCommandBuffers)
+
+{-# NOINLINE vkAllocateCommandBuffersSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkAllocateCommandBuffers
+-- >     ( VkDevice device
+-- >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+-- >     , VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myAllocateCommandBuffers <- vkGetDeviceProc @VkAllocateCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myAllocateCommandBuffers <- vkGetProc @VkAllocateCommandBuffers
+--
+-- __Note:__ @vkAllocateCommandBuffersUnsafe@ and @vkAllocateCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkAllocateCommandBuffers@ is an alias
+--           of @vkAllocateCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkAllocateCommandBuffersSafe@.
+--
+vkAllocateCommandBuffers ::
+                         VkDevice -- ^ device
+                                  ->
+                           Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                                           ->
+                             Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                 -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkAllocateCommandBuffers = vkAllocateCommandBuffersUnsafe
+##else
+vkAllocateCommandBuffers = vkAllocateCommandBuffersSafe
+
+##endif
+{-# INLINE vkAllocateCommandBuffers #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkAllocateCommandBuffers
+--   >     ( VkDevice device
+--   >     , const VkCommandBufferAllocateInfo* pAllocateInfo
+--   >     , VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkAllocateCommandBuffers vkAllocateCommandBuffers registry at www.khronos.org>
+type HS_vkAllocateCommandBuffers =
+     VkDevice -- ^ device
+              ->
+       Ptr VkCommandBufferAllocateInfo -- ^ pAllocateInfo
+                                       ->
+         Ptr VkCommandBuffer -- ^ pCommandBuffers
+                             -> IO VkResult
+
+type PFN_vkAllocateCommandBuffers =
+     FunPtr HS_vkAllocateCommandBuffers
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkAllocateCommandBuffersUnsafe ::
+               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
+
+foreign import ccall safe "dynamic"
+               unwrapVkAllocateCommandBuffersSafe ::
+               PFN_vkAllocateCommandBuffers -> HS_vkAllocateCommandBuffers
+
+instance VulkanProc "vkAllocateCommandBuffers" where
+    type VkProcType "vkAllocateCommandBuffers" =
+         HS_vkAllocateCommandBuffers
+    vkProcSymbol = _VkAllocateCommandBuffers
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkAllocateCommandBuffersUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkAllocateCommandBuffersSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkFreeCommandBuffers :: CString
+
+pattern VkFreeCommandBuffers <- (is_VkFreeCommandBuffers -> True)
+  where
+    VkFreeCommandBuffers = _VkFreeCommandBuffers
+
+{-# INLINE _VkFreeCommandBuffers #-}
+
+_VkFreeCommandBuffers :: CString
+_VkFreeCommandBuffers = Ptr "vkFreeCommandBuffers\NUL"##
+
+{-# INLINE is_VkFreeCommandBuffers #-}
+
+is_VkFreeCommandBuffers :: CString -> Bool
+is_VkFreeCommandBuffers
+  = (EQ ==) . cmpCStrings _VkFreeCommandBuffers
+
+type VkFreeCommandBuffers = "vkFreeCommandBuffers"
+
+-- |
+-- > void vkFreeCommandBuffers
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
+--
+-- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
+--           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkFreeCommandBuffers"
+               vkFreeCommandBuffersUnsafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+
+##else
+vkFreeCommandBuffersUnsafe ::
+                           VkDevice -- ^ device
+                                    -> VkCommandPool -- ^ commandPool
+                                                     -> Word32 -- ^ commandBufferCount
+                                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                                      -> IO ()
+vkFreeCommandBuffersUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkFreeCommandBuffers)
+
+{-# NOINLINE vkFreeCommandBuffersUnsafe #-}
+##endif
+
+-- |
+-- > void vkFreeCommandBuffers
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
+--
+-- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
+--           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkFreeCommandBuffers"
+               vkFreeCommandBuffersSafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+
+##else
+vkFreeCommandBuffersSafe ::
+                         VkDevice -- ^ device
+                                  -> VkCommandPool -- ^ commandPool
+                                                   -> Word32 -- ^ commandBufferCount
+                                                             -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                                    -> IO ()
+vkFreeCommandBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkFreeCommandBuffers)
+
+{-# NOINLINE vkFreeCommandBuffersSafe #-}
+##endif
+
+-- |
+-- > void vkFreeCommandBuffers
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myFreeCommandBuffers <- vkGetDeviceProc @VkFreeCommandBuffers vkDevice
+--
+-- or less efficient:
+--
+-- > myFreeCommandBuffers <- vkGetProc @VkFreeCommandBuffers
+--
+-- __Note:__ @vkFreeCommandBuffersUnsafe@ and @vkFreeCommandBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkFreeCommandBuffers@ is an alias
+--           of @vkFreeCommandBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkFreeCommandBuffersSafe@.
+--
+vkFreeCommandBuffers ::
+                     VkDevice -- ^ device
+                              -> VkCommandPool -- ^ commandPool
+                                               -> Word32 -- ^ commandBufferCount
+                                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkFreeCommandBuffers = vkFreeCommandBuffersUnsafe
+##else
+vkFreeCommandBuffers = vkFreeCommandBuffersSafe
+
+##endif
+{-# INLINE vkFreeCommandBuffers #-}
+
+-- | > void vkFreeCommandBuffers
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkFreeCommandBuffers vkFreeCommandBuffers registry at www.khronos.org>
+type HS_vkFreeCommandBuffers =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+type PFN_vkFreeCommandBuffers = FunPtr HS_vkFreeCommandBuffers
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkFreeCommandBuffersUnsafe ::
+               PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
+
+foreign import ccall safe "dynamic" unwrapVkFreeCommandBuffersSafe
+               :: PFN_vkFreeCommandBuffers -> HS_vkFreeCommandBuffers
+
+instance VulkanProc "vkFreeCommandBuffers" where
+    type VkProcType "vkFreeCommandBuffers" = HS_vkFreeCommandBuffers
+    vkProcSymbol = _VkFreeCommandBuffers
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkFreeCommandBuffersUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkFreeCommandBuffersSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBeginCommandBuffer :: CString
+
+pattern VkBeginCommandBuffer <- (is_VkBeginCommandBuffer -> True)
+  where
+    VkBeginCommandBuffer = _VkBeginCommandBuffer
+
+{-# INLINE _VkBeginCommandBuffer #-}
+
+_VkBeginCommandBuffer :: CString
+_VkBeginCommandBuffer = Ptr "vkBeginCommandBuffer\NUL"##
+
+{-# INLINE is_VkBeginCommandBuffer #-}
+
+is_VkBeginCommandBuffer :: CString -> Bool
+is_VkBeginCommandBuffer
+  = (EQ ==) . cmpCStrings _VkBeginCommandBuffer
+
+type VkBeginCommandBuffer = "vkBeginCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBeginCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkCommandBufferBeginInfo* pBeginInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
+--
+-- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
+--           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkBeginCommandBuffer"
+               vkBeginCommandBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                               -> IO VkResult
+
+##else
+vkBeginCommandBufferUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                                           -> IO VkResult
+vkBeginCommandBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBeginCommandBuffer)
+
+{-# NOINLINE vkBeginCommandBufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBeginCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkCommandBufferBeginInfo* pBeginInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
+--
+-- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
+--           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkBeginCommandBuffer"
+               vkBeginCommandBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                               -> IO VkResult
+
+##else
+vkBeginCommandBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                                         -> IO VkResult
+vkBeginCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBeginCommandBuffer)
+
+{-# NOINLINE vkBeginCommandBufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBeginCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkCommandBufferBeginInfo* pBeginInfo
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBeginCommandBuffer <- vkGetInstanceProc @VkBeginCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myBeginCommandBuffer <- vkGetProc @VkBeginCommandBuffer
+--
+-- __Note:__ @vkBeginCommandBufferUnsafe@ and @vkBeginCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBeginCommandBuffer@ is an alias
+--           of @vkBeginCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBeginCommandBufferSafe@.
+--
+vkBeginCommandBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                                     -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkBeginCommandBuffer = vkBeginCommandBufferUnsafe
+##else
+vkBeginCommandBuffer = vkBeginCommandBufferSafe
+
+##endif
+{-# INLINE vkBeginCommandBuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBeginCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkCommandBufferBeginInfo* pBeginInfo
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBeginCommandBuffer vkBeginCommandBuffer registry at www.khronos.org>
+type HS_vkBeginCommandBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Ptr VkCommandBufferBeginInfo -- ^ pBeginInfo
+                                                     -> IO VkResult
+
+type PFN_vkBeginCommandBuffer = FunPtr HS_vkBeginCommandBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkBeginCommandBufferUnsafe ::
+               PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkBeginCommandBufferSafe
+               :: PFN_vkBeginCommandBuffer -> HS_vkBeginCommandBuffer
+
+instance VulkanProc "vkBeginCommandBuffer" where
+    type VkProcType "vkBeginCommandBuffer" = HS_vkBeginCommandBuffer
+    vkProcSymbol = _VkBeginCommandBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkBeginCommandBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkBeginCommandBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkEndCommandBuffer :: CString
+
+pattern VkEndCommandBuffer <- (is_VkEndCommandBuffer -> True)
+  where
+    VkEndCommandBuffer = _VkEndCommandBuffer
+
+{-# INLINE _VkEndCommandBuffer #-}
+
+_VkEndCommandBuffer :: CString
+_VkEndCommandBuffer = Ptr "vkEndCommandBuffer\NUL"##
+
+{-# INLINE is_VkEndCommandBuffer #-}
+
+is_VkEndCommandBuffer :: CString -> Bool
+is_VkEndCommandBuffer = (EQ ==) . cmpCStrings _VkEndCommandBuffer
+
+type VkEndCommandBuffer = "vkEndCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEndCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
+--
+-- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
+--           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkEndCommandBuffer"
+               vkEndCommandBufferUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                                           -> IO VkResult
+
+##else
+vkEndCommandBufferUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                            -> IO VkResult
+vkEndCommandBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkEndCommandBuffer)
+
+{-# NOINLINE vkEndCommandBufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEndCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
+--
+-- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
+--           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkEndCommandBuffer"
+               vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> IO VkResult
+
+##else
+vkEndCommandBufferSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> IO VkResult
+vkEndCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkEndCommandBuffer)
+
+{-# NOINLINE vkEndCommandBufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkEndCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEndCommandBuffer <- vkGetInstanceProc @VkEndCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myEndCommandBuffer <- vkGetProc @VkEndCommandBuffer
+--
+-- __Note:__ @vkEndCommandBufferUnsafe@ and @vkEndCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEndCommandBuffer@ is an alias
+--           of @vkEndCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEndCommandBufferSafe@.
+--
+vkEndCommandBuffer :: VkCommandBuffer -- ^ commandBuffer
+                                      -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkEndCommandBuffer = vkEndCommandBufferUnsafe
+##else
+vkEndCommandBuffer = vkEndCommandBufferSafe
+
+##endif
+{-# INLINE vkEndCommandBuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkEndCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEndCommandBuffer vkEndCommandBuffer registry at www.khronos.org>
+type HS_vkEndCommandBuffer = VkCommandBuffer -- ^ commandBuffer
+                                             -> IO VkResult
+
+type PFN_vkEndCommandBuffer = FunPtr HS_vkEndCommandBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEndCommandBufferUnsafe ::
+               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkEndCommandBufferSafe ::
+               PFN_vkEndCommandBuffer -> HS_vkEndCommandBuffer
+
+instance VulkanProc "vkEndCommandBuffer" where
+    type VkProcType "vkEndCommandBuffer" = HS_vkEndCommandBuffer
+    vkProcSymbol = _VkEndCommandBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkEndCommandBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkEndCommandBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkResetCommandBuffer :: CString
+
+pattern VkResetCommandBuffer <- (is_VkResetCommandBuffer -> True)
+  where
+    VkResetCommandBuffer = _VkResetCommandBuffer
+
+{-# INLINE _VkResetCommandBuffer #-}
+
+_VkResetCommandBuffer :: CString
+_VkResetCommandBuffer = Ptr "vkResetCommandBuffer\NUL"##
+
+{-# INLINE is_VkResetCommandBuffer #-}
+
+is_VkResetCommandBuffer :: CString -> Bool
+is_VkResetCommandBuffer
+  = (EQ ==) . cmpCStrings _VkResetCommandBuffer
+
+type VkResetCommandBuffer = "vkResetCommandBuffer"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkCommandBufferResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
+--
+-- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
+--           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkResetCommandBuffer"
+               vkResetCommandBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkCommandBufferResetFlags -- ^ flags
+                                                            -> IO VkResult
+
+##else
+vkResetCommandBufferUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> VkCommandBufferResetFlags -- ^ flags
+                                                                        -> IO VkResult
+vkResetCommandBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkResetCommandBuffer)
+
+{-# NOINLINE vkResetCommandBufferUnsafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkCommandBufferResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
+--
+-- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
+--           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkResetCommandBuffer"
+               vkResetCommandBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkCommandBufferResetFlags -- ^ flags
+                                                            -> IO VkResult
+
+##else
+vkResetCommandBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkCommandBufferResetFlags -- ^ flags
+                                                                      -> IO VkResult
+vkResetCommandBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkResetCommandBuffer)
+
+{-# NOINLINE vkResetCommandBufferSafe #-}
+##endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkResetCommandBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkCommandBufferResetFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myResetCommandBuffer <- vkGetInstanceProc @VkResetCommandBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myResetCommandBuffer <- vkGetProc @VkResetCommandBuffer
+--
+-- __Note:__ @vkResetCommandBufferUnsafe@ and @vkResetCommandBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkResetCommandBuffer@ is an alias
+--           of @vkResetCommandBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkResetCommandBufferSafe@.
+--
+vkResetCommandBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkCommandBufferResetFlags -- ^ flags
+                                                                  -> IO VkResult
+##ifdef UNSAFE_FFI_DEFAULT
+vkResetCommandBuffer = vkResetCommandBufferUnsafe
+##else
+vkResetCommandBuffer = vkResetCommandBufferSafe
+
+##endif
+{-# INLINE vkResetCommandBuffer #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkResetCommandBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkCommandBufferResetFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkResetCommandBuffer vkResetCommandBuffer registry at www.khronos.org>
+type HS_vkResetCommandBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkCommandBufferResetFlags -- ^ flags
+                                                  -> IO VkResult
+
+type PFN_vkResetCommandBuffer = FunPtr HS_vkResetCommandBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkResetCommandBufferUnsafe ::
+               PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
+
+foreign import ccall safe "dynamic" unwrapVkResetCommandBufferSafe
+               :: PFN_vkResetCommandBuffer -> HS_vkResetCommandBuffer
+
+instance VulkanProc "vkResetCommandBuffer" where
+    type VkProcType "vkResetCommandBuffer" = HS_vkResetCommandBuffer
+    vkProcSymbol = _VkResetCommandBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkResetCommandBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkResetCommandBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindPipeline :: CString
+
+pattern VkCmdBindPipeline <- (is_VkCmdBindPipeline -> True)
+  where
+    VkCmdBindPipeline = _VkCmdBindPipeline
+
+{-# INLINE _VkCmdBindPipeline #-}
+
+_VkCmdBindPipeline :: CString
+_VkCmdBindPipeline = Ptr "vkCmdBindPipeline\NUL"##
+
+{-# INLINE is_VkCmdBindPipeline #-}
+
+is_VkCmdBindPipeline :: CString -> Bool
+is_VkCmdBindPipeline = (EQ ==) . cmpCStrings _VkCmdBindPipeline
+
+type VkCmdBindPipeline = "vkCmdBindPipeline"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindPipeline
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipeline pipeline
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
+--
+-- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
+--           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindPipeline"
+               vkCmdBindPipelineUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                      -> VkPipeline -- ^ pipeline
+                                                                    -> IO ()
+
+##else
+vkCmdBindPipelineUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                               -> VkPipeline -- ^ pipeline
+                                                                             -> IO ()
+vkCmdBindPipelineUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindPipeline)
+
+{-# NOINLINE vkCmdBindPipelineUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindPipeline
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipeline pipeline
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
+--
+-- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
+--           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindPipeline" vkCmdBindPipelineSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+
+##else
+vkCmdBindPipelineSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                             -> VkPipeline -- ^ pipeline
+                                                                           -> IO ()
+vkCmdBindPipelineSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindPipeline)
+
+{-# NOINLINE vkCmdBindPipelineSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindPipeline
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipeline pipeline
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindPipeline <- vkGetInstanceProc @VkCmdBindPipeline vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindPipeline <- vkGetProc @VkCmdBindPipeline
+--
+-- __Note:__ @vkCmdBindPipelineUnsafe@ and @vkCmdBindPipelineSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindPipeline@ is an alias
+--           of @vkCmdBindPipelineUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindPipelineSafe@.
+--
+vkCmdBindPipeline ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                         -> VkPipeline -- ^ pipeline
+                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBindPipeline = vkCmdBindPipelineUnsafe
+##else
+vkCmdBindPipeline = vkCmdBindPipelineSafe
+
+##endif
+{-# INLINE vkCmdBindPipeline #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindPipeline
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipeline pipeline
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindPipeline vkCmdBindPipeline registry at www.khronos.org>
+type HS_vkCmdBindPipeline =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkPipelineBindPoint -- ^ pipelineBindPoint
+                                            -> VkPipeline -- ^ pipeline
+                                                          -> IO ()
+
+type PFN_vkCmdBindPipeline = FunPtr HS_vkCmdBindPipeline
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBindPipelineUnsafe
+               :: PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
+
+foreign import ccall safe "dynamic" unwrapVkCmdBindPipelineSafe ::
+               PFN_vkCmdBindPipeline -> HS_vkCmdBindPipeline
+
+instance VulkanProc "vkCmdBindPipeline" where
+    type VkProcType "vkCmdBindPipeline" = HS_vkCmdBindPipeline
+    vkProcSymbol = _VkCmdBindPipeline
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdBindPipelineUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdBindPipelineSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetViewport :: CString
+
+pattern VkCmdSetViewport <- (is_VkCmdSetViewport -> True)
+  where
+    VkCmdSetViewport = _VkCmdSetViewport
+
+{-# INLINE _VkCmdSetViewport #-}
+
+_VkCmdSetViewport :: CString
+_VkCmdSetViewport = Ptr "vkCmdSetViewport\NUL"##
+
+{-# INLINE is_VkCmdSetViewport #-}
+
+is_VkCmdSetViewport :: CString -> Bool
+is_VkCmdSetViewport = (EQ ==) . cmpCStrings _VkCmdSetViewport
+
+type VkCmdSetViewport = "vkCmdSetViewport"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetViewport
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstViewport
+-- >     , uint32_t viewportCount
+-- >     , const VkViewport* pViewports
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
+--
+-- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
+--           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetViewport"
+               vkCmdSetViewportUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstViewport
+                                         -> Word32 -- ^ viewportCount
+                                                   -> Ptr VkViewport -- ^ pViewports
+                                                                     -> IO ()
+
+##else
+vkCmdSetViewportUnsafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       -> Word32 -- ^ firstViewport
+                                                 -> Word32 -- ^ viewportCount
+                                                           -> Ptr VkViewport -- ^ pViewports
+                                                                             -> IO ()
+vkCmdSetViewportUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetViewport)
+
+{-# NOINLINE vkCmdSetViewportUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetViewport
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstViewport
+-- >     , uint32_t viewportCount
+-- >     , const VkViewport* pViewports
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
+--
+-- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
+--           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetViewport" vkCmdSetViewportSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ firstViewport
+                                            -> Word32 -- ^ viewportCount
+                                                      -> Ptr VkViewport -- ^ pViewports
+                                                                        -> IO ()
+
+##else
+vkCmdSetViewportSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Word32 -- ^ firstViewport
+                                               -> Word32 -- ^ viewportCount
+                                                         -> Ptr VkViewport -- ^ pViewports
+                                                                           -> IO ()
+vkCmdSetViewportSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetViewport)
+
+{-# NOINLINE vkCmdSetViewportSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetViewport
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstViewport
+-- >     , uint32_t viewportCount
+-- >     , const VkViewport* pViewports
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetViewport <- vkGetInstanceProc @VkCmdSetViewport vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetViewport <- vkGetProc @VkCmdSetViewport
+--
+-- __Note:__ @vkCmdSetViewportUnsafe@ and @vkCmdSetViewportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetViewport@ is an alias
+--           of @vkCmdSetViewportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetViewportSafe@.
+--
+vkCmdSetViewport ::
+                 VkCommandBuffer -- ^ commandBuffer
+                                 -> Word32 -- ^ firstViewport
+                                           -> Word32 -- ^ viewportCount
+                                                     -> Ptr VkViewport -- ^ pViewports
+                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetViewport = vkCmdSetViewportUnsafe
+##else
+vkCmdSetViewport = vkCmdSetViewportSafe
+
+##endif
+{-# INLINE vkCmdSetViewport #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetViewport
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstViewport
+--   >     , uint32_t viewportCount
+--   >     , const VkViewport* pViewports
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetViewport vkCmdSetViewport registry at www.khronos.org>
+type HS_vkCmdSetViewport =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ firstViewport
+                               -> Word32 -- ^ viewportCount
+                                         -> Ptr VkViewport -- ^ pViewports
+                                                           -> IO ()
+
+type PFN_vkCmdSetViewport = FunPtr HS_vkCmdSetViewport
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetViewportUnsafe
+               :: PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetViewportSafe ::
+               PFN_vkCmdSetViewport -> HS_vkCmdSetViewport
+
+instance VulkanProc "vkCmdSetViewport" where
+    type VkProcType "vkCmdSetViewport" = HS_vkCmdSetViewport
+    vkProcSymbol = _VkCmdSetViewport
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetViewportUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetViewportSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetScissor :: CString
+
+pattern VkCmdSetScissor <- (is_VkCmdSetScissor -> True)
+  where
+    VkCmdSetScissor = _VkCmdSetScissor
+
+{-# INLINE _VkCmdSetScissor #-}
+
+_VkCmdSetScissor :: CString
+_VkCmdSetScissor = Ptr "vkCmdSetScissor\NUL"##
+
+{-# INLINE is_VkCmdSetScissor #-}
+
+is_VkCmdSetScissor :: CString -> Bool
+is_VkCmdSetScissor = (EQ ==) . cmpCStrings _VkCmdSetScissor
+
+type VkCmdSetScissor = "vkCmdSetScissor"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetScissor
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstScissor
+-- >     , uint32_t scissorCount
+-- >     , const VkRect2D* pScissors
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
+--
+-- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
+--           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetScissor" vkCmdSetScissorUnsafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ firstScissor
+                                            -> Word32 -- ^ scissorCount
+                                                      -> Ptr VkRect2D -- ^ pScissors
+                                                                      -> IO ()
+
+##else
+vkCmdSetScissorUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> Word32 -- ^ firstScissor
+                                                -> Word32 -- ^ scissorCount
+                                                          -> Ptr VkRect2D -- ^ pScissors
+                                                                          -> IO ()
+vkCmdSetScissorUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetScissor)
+
+{-# NOINLINE vkCmdSetScissorUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetScissor
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstScissor
+-- >     , uint32_t scissorCount
+-- >     , const VkRect2D* pScissors
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
+--
+-- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
+--           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetScissor" vkCmdSetScissorSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ firstScissor
+                                         -> Word32 -- ^ scissorCount
+                                                   -> Ptr VkRect2D -- ^ pScissors
+                                                                   -> IO ()
+
+##else
+vkCmdSetScissorSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> Word32 -- ^ firstScissor
+                                              -> Word32 -- ^ scissorCount
+                                                        -> Ptr VkRect2D -- ^ pScissors
+                                                                        -> IO ()
+vkCmdSetScissorSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetScissor)
+
+{-# NOINLINE vkCmdSetScissorSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetScissor
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstScissor
+-- >     , uint32_t scissorCount
+-- >     , const VkRect2D* pScissors
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetScissor <- vkGetInstanceProc @VkCmdSetScissor vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetScissor <- vkGetProc @VkCmdSetScissor
+--
+-- __Note:__ @vkCmdSetScissorUnsafe@ and @vkCmdSetScissorSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetScissor@ is an alias
+--           of @vkCmdSetScissorUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetScissorSafe@.
+--
+vkCmdSetScissor ::
+                VkCommandBuffer -- ^ commandBuffer
+                                -> Word32 -- ^ firstScissor
+                                          -> Word32 -- ^ scissorCount
+                                                    -> Ptr VkRect2D -- ^ pScissors
+                                                                    -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetScissor = vkCmdSetScissorUnsafe
+##else
+vkCmdSetScissor = vkCmdSetScissorSafe
+
+##endif
+{-# INLINE vkCmdSetScissor #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetScissor
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstScissor
+--   >     , uint32_t scissorCount
+--   >     , const VkRect2D* pScissors
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetScissor vkCmdSetScissor registry at www.khronos.org>
+type HS_vkCmdSetScissor =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ firstScissor
+                               -> Word32 -- ^ scissorCount
+                                         -> Ptr VkRect2D -- ^ pScissors
+                                                         -> IO ()
+
+type PFN_vkCmdSetScissor = FunPtr HS_vkCmdSetScissor
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetScissorUnsafe
+               :: PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetScissorSafe ::
+               PFN_vkCmdSetScissor -> HS_vkCmdSetScissor
+
+instance VulkanProc "vkCmdSetScissor" where
+    type VkProcType "vkCmdSetScissor" = HS_vkCmdSetScissor
+    vkProcSymbol = _VkCmdSetScissor
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetScissorUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetScissorSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetLineWidth :: CString
+
+pattern VkCmdSetLineWidth <- (is_VkCmdSetLineWidth -> True)
+  where
+    VkCmdSetLineWidth = _VkCmdSetLineWidth
+
+{-# INLINE _VkCmdSetLineWidth #-}
+
+_VkCmdSetLineWidth :: CString
+_VkCmdSetLineWidth = Ptr "vkCmdSetLineWidth\NUL"##
+
+{-# INLINE is_VkCmdSetLineWidth #-}
+
+is_VkCmdSetLineWidth :: CString -> Bool
+is_VkCmdSetLineWidth = (EQ ==) . cmpCStrings _VkCmdSetLineWidth
+
+type VkCmdSetLineWidth = "vkCmdSetLineWidth"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetLineWidth
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float lineWidth
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
+--
+-- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
+--           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetLineWidth"
+               vkCmdSetLineWidthUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> #{type float} -> IO ()
+
+##else
+vkCmdSetLineWidthUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        -> #{type float} -> IO ()
+vkCmdSetLineWidthUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetLineWidth)
+
+{-# NOINLINE vkCmdSetLineWidthUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetLineWidth
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float lineWidth
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
+--
+-- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
+--           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetLineWidth" vkCmdSetLineWidthSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+
+##else
+vkCmdSetLineWidthSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> #{type float} -> IO ()
+vkCmdSetLineWidthSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetLineWidth)
+
+{-# NOINLINE vkCmdSetLineWidthSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetLineWidth
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float lineWidth
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetLineWidth <- vkGetInstanceProc @VkCmdSetLineWidth vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetLineWidth <- vkGetProc @VkCmdSetLineWidth
+--
+-- __Note:__ @vkCmdSetLineWidthUnsafe@ and @vkCmdSetLineWidthSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetLineWidth@ is an alias
+--           of @vkCmdSetLineWidthUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetLineWidthSafe@.
+--
+vkCmdSetLineWidth ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> #{type float} -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetLineWidth = vkCmdSetLineWidthUnsafe
+##else
+vkCmdSetLineWidth = vkCmdSetLineWidthSafe
+
+##endif
+{-# INLINE vkCmdSetLineWidth #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetLineWidth
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float lineWidth
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetLineWidth vkCmdSetLineWidth registry at www.khronos.org>
+type HS_vkCmdSetLineWidth =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> #{type float} -> IO ()
+
+type PFN_vkCmdSetLineWidth = FunPtr HS_vkCmdSetLineWidth
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetLineWidthUnsafe
+               :: PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetLineWidthSafe ::
+               PFN_vkCmdSetLineWidth -> HS_vkCmdSetLineWidth
+
+instance VulkanProc "vkCmdSetLineWidth" where
+    type VkProcType "vkCmdSetLineWidth" = HS_vkCmdSetLineWidth
+    vkProcSymbol = _VkCmdSetLineWidth
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetLineWidthUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetLineWidthSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDepthBias :: CString
+
+pattern VkCmdSetDepthBias <- (is_VkCmdSetDepthBias -> True)
+  where
+    VkCmdSetDepthBias = _VkCmdSetDepthBias
+
+{-# INLINE _VkCmdSetDepthBias #-}
+
+_VkCmdSetDepthBias :: CString
+_VkCmdSetDepthBias = Ptr "vkCmdSetDepthBias\NUL"##
+
+{-# INLINE is_VkCmdSetDepthBias #-}
+
+is_VkCmdSetDepthBias :: CString -> Bool
+is_VkCmdSetDepthBias = (EQ ==) . cmpCStrings _VkCmdSetDepthBias
+
+type VkCmdSetDepthBias = "vkCmdSetDepthBias"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBias
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float depthBiasConstantFactor
+-- >     , float depthBiasClamp
+-- >     , float depthBiasSlopeFactor
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
+--
+-- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
+--           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetDepthBias"
+               vkCmdSetDepthBiasUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} ->
+                   #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBiasUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          #{type float} ->
+                            #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBiasUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDepthBias)
+
+{-# NOINLINE vkCmdSetDepthBiasUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBias
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float depthBiasConstantFactor
+-- >     , float depthBiasClamp
+-- >     , float depthBiasSlopeFactor
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
+--
+-- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
+--           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetDepthBias" vkCmdSetDepthBiasSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} ->
+                   #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBiasSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        #{type float} ->
+                          #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBiasSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBias)
+
+{-# NOINLINE vkCmdSetDepthBiasSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBias
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float depthBiasConstantFactor
+-- >     , float depthBiasClamp
+-- >     , float depthBiasSlopeFactor
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBias <- vkGetInstanceProc @VkCmdSetDepthBias vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBias <- vkGetProc @VkCmdSetDepthBias
+--
+-- __Note:__ @vkCmdSetDepthBiasUnsafe@ and @vkCmdSetDepthBiasSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBias@ is an alias
+--           of @vkCmdSetDepthBiasUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBiasSafe@.
+--
+vkCmdSetDepthBias ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    #{type float} ->
+                      #{type float} -> #{type float} -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetDepthBias = vkCmdSetDepthBiasUnsafe
+##else
+vkCmdSetDepthBias = vkCmdSetDepthBiasSafe
+
+##endif
+{-# INLINE vkCmdSetDepthBias #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDepthBias
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float depthBiasConstantFactor
+--   >     , float depthBiasClamp
+--   >     , float depthBiasSlopeFactor
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBias vkCmdSetDepthBias registry at www.khronos.org>
+type HS_vkCmdSetDepthBias =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       #{type float} ->
+         #{type float} -> #{type float} -> IO ()
+
+type PFN_vkCmdSetDepthBias = FunPtr HS_vkCmdSetDepthBias
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetDepthBiasUnsafe
+               :: PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBiasSafe ::
+               PFN_vkCmdSetDepthBias -> HS_vkCmdSetDepthBias
+
+instance VulkanProc "vkCmdSetDepthBias" where
+    type VkProcType "vkCmdSetDepthBias" = HS_vkCmdSetDepthBias
+    vkProcSymbol = _VkCmdSetDepthBias
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetDepthBiasUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBiasSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetBlendConstants :: CString
+
+pattern VkCmdSetBlendConstants <-
+        (is_VkCmdSetBlendConstants -> True)
+  where
+    VkCmdSetBlendConstants = _VkCmdSetBlendConstants
+
+{-# INLINE _VkCmdSetBlendConstants #-}
+
+_VkCmdSetBlendConstants :: CString
+_VkCmdSetBlendConstants = Ptr "vkCmdSetBlendConstants\NUL"##
+
+{-# INLINE is_VkCmdSetBlendConstants #-}
+
+is_VkCmdSetBlendConstants :: CString -> Bool
+is_VkCmdSetBlendConstants
+  = (EQ ==) . cmpCStrings _VkCmdSetBlendConstants
+
+type VkCmdSetBlendConstants = "vkCmdSetBlendConstants"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetBlendConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const float blendConstants[4]
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
+--
+-- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
+--           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetBlendConstants"
+               vkCmdSetBlendConstantsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr #{type float} -- ^ blendConstants
+                                                                -> IO ()
+
+##else
+vkCmdSetBlendConstantsUnsafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             -> Ptr #{type float} -- ^ blendConstants
+                                                                              -> IO ()
+vkCmdSetBlendConstantsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetBlendConstants)
+
+{-# NOINLINE vkCmdSetBlendConstantsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetBlendConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const float blendConstants[4]
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
+--
+-- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
+--           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetBlendConstants"
+               vkCmdSetBlendConstantsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Ptr #{type float} -- ^ blendConstants
+                                                                -> IO ()
+
+##else
+vkCmdSetBlendConstantsSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> Ptr #{type float} -- ^ blendConstants
+                                                                            -> IO ()
+vkCmdSetBlendConstantsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetBlendConstants)
+
+{-# NOINLINE vkCmdSetBlendConstantsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetBlendConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const float blendConstants[4]
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetBlendConstants <- vkGetInstanceProc @VkCmdSetBlendConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetBlendConstants <- vkGetProc @VkCmdSetBlendConstants
+--
+-- __Note:__ @vkCmdSetBlendConstantsUnsafe@ and @vkCmdSetBlendConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetBlendConstants@ is an alias
+--           of @vkCmdSetBlendConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetBlendConstantsSafe@.
+--
+vkCmdSetBlendConstants ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       -> Ptr #{type float} -- ^ blendConstants
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetBlendConstants = vkCmdSetBlendConstantsUnsafe
+##else
+vkCmdSetBlendConstants = vkCmdSetBlendConstantsSafe
+
+##endif
+{-# INLINE vkCmdSetBlendConstants #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetBlendConstants
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const float blendConstants[4]
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetBlendConstants vkCmdSetBlendConstants registry at www.khronos.org>
+type HS_vkCmdSetBlendConstants =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Ptr #{type float} -- ^ blendConstants
+                                                      -> IO ()
+
+type PFN_vkCmdSetBlendConstants = FunPtr HS_vkCmdSetBlendConstants
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetBlendConstantsUnsafe ::
+               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetBlendConstantsSafe ::
+               PFN_vkCmdSetBlendConstants -> HS_vkCmdSetBlendConstants
+
+instance VulkanProc "vkCmdSetBlendConstants" where
+    type VkProcType "vkCmdSetBlendConstants" =
+         HS_vkCmdSetBlendConstants
+    vkProcSymbol = _VkCmdSetBlendConstants
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetBlendConstantsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetBlendConstantsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDepthBounds :: CString
+
+pattern VkCmdSetDepthBounds <- (is_VkCmdSetDepthBounds -> True)
+  where
+    VkCmdSetDepthBounds = _VkCmdSetDepthBounds
+
+{-# INLINE _VkCmdSetDepthBounds #-}
+
+_VkCmdSetDepthBounds :: CString
+_VkCmdSetDepthBounds = Ptr "vkCmdSetDepthBounds\NUL"##
+
+{-# INLINE is_VkCmdSetDepthBounds #-}
+
+is_VkCmdSetDepthBounds :: CString -> Bool
+is_VkCmdSetDepthBounds = (EQ ==) . cmpCStrings _VkCmdSetDepthBounds
+
+type VkCmdSetDepthBounds = "vkCmdSetDepthBounds"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBounds
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float minDepthBounds
+-- >     , float maxDepthBounds
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
+--
+-- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
+--           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetDepthBounds"
+               vkCmdSetDepthBoundsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBoundsUnsafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBoundsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDepthBounds)
+
+{-# NOINLINE vkCmdSetDepthBoundsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBounds
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float minDepthBounds
+-- >     , float maxDepthBounds
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
+--
+-- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
+--           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetDepthBounds"
+               vkCmdSetDepthBoundsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 #{type float} -> #{type float} -> IO ()
+
+##else
+vkCmdSetDepthBoundsSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          #{type float} -> #{type float} -> IO ()
+vkCmdSetDepthBoundsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDepthBounds)
+
+{-# NOINLINE vkCmdSetDepthBoundsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDepthBounds
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , float minDepthBounds
+-- >     , float maxDepthBounds
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDepthBounds <- vkGetInstanceProc @VkCmdSetDepthBounds vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDepthBounds <- vkGetProc @VkCmdSetDepthBounds
+--
+-- __Note:__ @vkCmdSetDepthBoundsUnsafe@ and @vkCmdSetDepthBoundsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDepthBounds@ is an alias
+--           of @vkCmdSetDepthBoundsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDepthBoundsSafe@.
+--
+vkCmdSetDepthBounds ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      #{type float} -> #{type float} -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetDepthBounds = vkCmdSetDepthBoundsUnsafe
+##else
+vkCmdSetDepthBounds = vkCmdSetDepthBoundsSafe
+
+##endif
+{-# INLINE vkCmdSetDepthBounds #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDepthBounds
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , float minDepthBounds
+--   >     , float maxDepthBounds
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDepthBounds vkCmdSetDepthBounds registry at www.khronos.org>
+type HS_vkCmdSetDepthBounds =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       #{type float} -> #{type float} -> IO ()
+
+type PFN_vkCmdSetDepthBounds = FunPtr HS_vkCmdSetDepthBounds
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetDepthBoundsUnsafe ::
+               PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDepthBoundsSafe
+               :: PFN_vkCmdSetDepthBounds -> HS_vkCmdSetDepthBounds
+
+instance VulkanProc "vkCmdSetDepthBounds" where
+    type VkProcType "vkCmdSetDepthBounds" = HS_vkCmdSetDepthBounds
+    vkProcSymbol = _VkCmdSetDepthBounds
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetDepthBoundsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetDepthBoundsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilCompareMask :: CString
+
+pattern VkCmdSetStencilCompareMask <-
+        (is_VkCmdSetStencilCompareMask -> True)
+  where
+    VkCmdSetStencilCompareMask = _VkCmdSetStencilCompareMask
+
+{-# INLINE _VkCmdSetStencilCompareMask #-}
+
+_VkCmdSetStencilCompareMask :: CString
+_VkCmdSetStencilCompareMask = Ptr "vkCmdSetStencilCompareMask\NUL"##
+
+{-# INLINE is_VkCmdSetStencilCompareMask #-}
+
+is_VkCmdSetStencilCompareMask :: CString -> Bool
+is_VkCmdSetStencilCompareMask
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilCompareMask
+
+type VkCmdSetStencilCompareMask = "vkCmdSetStencilCompareMask"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilCompareMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t compareMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
+--
+-- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
+--           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilCompareMask"
+               vkCmdSetStencilCompareMaskUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ compareMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilCompareMaskUnsafe ::
+                                 VkCommandBuffer -- ^ commandBuffer
+                                                 -> VkStencilFaceFlags -- ^ faceMask
+                                                                       -> Word32 -- ^ compareMask
+                                                                                 -> IO ()
+vkCmdSetStencilCompareMaskUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdSetStencilCompareMask)
+
+{-# NOINLINE vkCmdSetStencilCompareMaskUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilCompareMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t compareMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
+--
+-- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
+--           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilCompareMask"
+               vkCmdSetStencilCompareMaskSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ compareMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilCompareMaskSafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               -> VkStencilFaceFlags -- ^ faceMask
+                                                                     -> Word32 -- ^ compareMask
+                                                                               -> IO ()
+vkCmdSetStencilCompareMaskSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCmdSetStencilCompareMask)
+
+{-# NOINLINE vkCmdSetStencilCompareMaskSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilCompareMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t compareMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilCompareMask <- vkGetInstanceProc @VkCmdSetStencilCompareMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilCompareMask <- vkGetProc @VkCmdSetStencilCompareMask
+--
+-- __Note:__ @vkCmdSetStencilCompareMaskUnsafe@ and @vkCmdSetStencilCompareMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilCompareMask@ is an alias
+--           of @vkCmdSetStencilCompareMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilCompareMaskSafe@.
+--
+vkCmdSetStencilCompareMask ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> VkStencilFaceFlags -- ^ faceMask
+                                                                 -> Word32 -- ^ compareMask
+                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetStencilCompareMask = vkCmdSetStencilCompareMaskUnsafe
+##else
+vkCmdSetStencilCompareMask = vkCmdSetStencilCompareMaskSafe
+
+##endif
+{-# INLINE vkCmdSetStencilCompareMask #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilCompareMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t compareMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask registry at www.khronos.org>
+type HS_vkCmdSetStencilCompareMask =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ compareMask
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilCompareMask =
+     FunPtr HS_vkCmdSetStencilCompareMask
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilCompareMaskUnsafe ::
+               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilCompareMaskSafe ::
+               PFN_vkCmdSetStencilCompareMask -> HS_vkCmdSetStencilCompareMask
+
+instance VulkanProc "vkCmdSetStencilCompareMask" where
+    type VkProcType "vkCmdSetStencilCompareMask" =
+         HS_vkCmdSetStencilCompareMask
+    vkProcSymbol = _VkCmdSetStencilCompareMask
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilCompareMaskUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetStencilCompareMaskSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilWriteMask :: CString
+
+pattern VkCmdSetStencilWriteMask <-
+        (is_VkCmdSetStencilWriteMask -> True)
+  where
+    VkCmdSetStencilWriteMask = _VkCmdSetStencilWriteMask
+
+{-# INLINE _VkCmdSetStencilWriteMask #-}
+
+_VkCmdSetStencilWriteMask :: CString
+_VkCmdSetStencilWriteMask = Ptr "vkCmdSetStencilWriteMask\NUL"##
+
+{-# INLINE is_VkCmdSetStencilWriteMask #-}
+
+is_VkCmdSetStencilWriteMask :: CString -> Bool
+is_VkCmdSetStencilWriteMask
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilWriteMask
+
+type VkCmdSetStencilWriteMask = "vkCmdSetStencilWriteMask"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilWriteMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t writeMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
+--
+-- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
+--           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilWriteMask"
+               vkCmdSetStencilWriteMaskUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ writeMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilWriteMaskUnsafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               -> VkStencilFaceFlags -- ^ faceMask
+                                                                     -> Word32 -- ^ writeMask
+                                                                               -> IO ()
+vkCmdSetStencilWriteMaskUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdSetStencilWriteMask)
+
+{-# NOINLINE vkCmdSetStencilWriteMaskUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilWriteMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t writeMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
+--
+-- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
+--           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilWriteMask"
+               vkCmdSetStencilWriteMaskSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ writeMask
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilWriteMaskSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             -> VkStencilFaceFlags -- ^ faceMask
+                                                                   -> Word32 -- ^ writeMask
+                                                                             -> IO ()
+vkCmdSetStencilWriteMaskSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilWriteMask)
+
+{-# NOINLINE vkCmdSetStencilWriteMaskSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilWriteMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t writeMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilWriteMask <- vkGetInstanceProc @VkCmdSetStencilWriteMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilWriteMask <- vkGetProc @VkCmdSetStencilWriteMask
+--
+-- __Note:__ @vkCmdSetStencilWriteMaskUnsafe@ and @vkCmdSetStencilWriteMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilWriteMask@ is an alias
+--           of @vkCmdSetStencilWriteMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilWriteMaskSafe@.
+--
+vkCmdSetStencilWriteMask ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkStencilFaceFlags -- ^ faceMask
+                                                               -> Word32 -- ^ writeMask
+                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetStencilWriteMask = vkCmdSetStencilWriteMaskUnsafe
+##else
+vkCmdSetStencilWriteMask = vkCmdSetStencilWriteMaskSafe
+
+##endif
+{-# INLINE vkCmdSetStencilWriteMask #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilWriteMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t writeMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask registry at www.khronos.org>
+type HS_vkCmdSetStencilWriteMask =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ writeMask
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilWriteMask =
+     FunPtr HS_vkCmdSetStencilWriteMask
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilWriteMaskUnsafe ::
+               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilWriteMaskSafe ::
+               PFN_vkCmdSetStencilWriteMask -> HS_vkCmdSetStencilWriteMask
+
+instance VulkanProc "vkCmdSetStencilWriteMask" where
+    type VkProcType "vkCmdSetStencilWriteMask" =
+         HS_vkCmdSetStencilWriteMask
+    vkProcSymbol = _VkCmdSetStencilWriteMask
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilWriteMaskUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetStencilWriteMaskSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetStencilReference :: CString
+
+pattern VkCmdSetStencilReference <-
+        (is_VkCmdSetStencilReference -> True)
+  where
+    VkCmdSetStencilReference = _VkCmdSetStencilReference
+
+{-# INLINE _VkCmdSetStencilReference #-}
+
+_VkCmdSetStencilReference :: CString
+_VkCmdSetStencilReference = Ptr "vkCmdSetStencilReference\NUL"##
+
+{-# INLINE is_VkCmdSetStencilReference #-}
+
+is_VkCmdSetStencilReference :: CString -> Bool
+is_VkCmdSetStencilReference
+  = (EQ ==) . cmpCStrings _VkCmdSetStencilReference
+
+type VkCmdSetStencilReference = "vkCmdSetStencilReference"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilReference
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t reference
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
+--
+-- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
+--           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetStencilReference"
+               vkCmdSetStencilReferenceUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ reference
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilReferenceUnsafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               -> VkStencilFaceFlags -- ^ faceMask
+                                                                     -> Word32 -- ^ reference
+                                                                               -> IO ()
+vkCmdSetStencilReferenceUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdSetStencilReference)
+
+{-# NOINLINE vkCmdSetStencilReferenceUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilReference
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t reference
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
+--
+-- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
+--           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetStencilReference"
+               vkCmdSetStencilReferenceSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkStencilFaceFlags -- ^ faceMask
+                                                     -> Word32 -- ^ reference
+                                                               -> IO ()
+
+##else
+vkCmdSetStencilReferenceSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             -> VkStencilFaceFlags -- ^ faceMask
+                                                                   -> Word32 -- ^ reference
+                                                                             -> IO ()
+vkCmdSetStencilReferenceSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetStencilReference)
+
+{-# NOINLINE vkCmdSetStencilReferenceSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetStencilReference
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkStencilFaceFlags faceMask
+-- >     , uint32_t reference
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetStencilReference <- vkGetInstanceProc @VkCmdSetStencilReference vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetStencilReference <- vkGetProc @VkCmdSetStencilReference
+--
+-- __Note:__ @vkCmdSetStencilReferenceUnsafe@ and @vkCmdSetStencilReferenceSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetStencilReference@ is an alias
+--           of @vkCmdSetStencilReferenceUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetStencilReferenceSafe@.
+--
+vkCmdSetStencilReference ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkStencilFaceFlags -- ^ faceMask
+                                                               -> Word32 -- ^ reference
+                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetStencilReference = vkCmdSetStencilReferenceUnsafe
+##else
+vkCmdSetStencilReference = vkCmdSetStencilReferenceSafe
+
+##endif
+{-# INLINE vkCmdSetStencilReference #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetStencilReference
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkStencilFaceFlags faceMask
+--   >     , uint32_t reference
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetStencilReference vkCmdSetStencilReference registry at www.khronos.org>
+type HS_vkCmdSetStencilReference =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkStencilFaceFlags -- ^ faceMask
+                                           -> Word32 -- ^ reference
+                                                     -> IO ()
+
+type PFN_vkCmdSetStencilReference =
+     FunPtr HS_vkCmdSetStencilReference
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetStencilReferenceUnsafe ::
+               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdSetStencilReferenceSafe ::
+               PFN_vkCmdSetStencilReference -> HS_vkCmdSetStencilReference
+
+instance VulkanProc "vkCmdSetStencilReference" where
+    type VkProcType "vkCmdSetStencilReference" =
+         HS_vkCmdSetStencilReference
+    vkProcSymbol = _VkCmdSetStencilReference
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetStencilReferenceUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetStencilReferenceSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindDescriptorSets :: CString
+
+pattern VkCmdBindDescriptorSets <-
+        (is_VkCmdBindDescriptorSets -> True)
+  where
+    VkCmdBindDescriptorSets = _VkCmdBindDescriptorSets
+
+{-# INLINE _VkCmdBindDescriptorSets #-}
+
+_VkCmdBindDescriptorSets :: CString
+_VkCmdBindDescriptorSets = Ptr "vkCmdBindDescriptorSets\NUL"##
+
+{-# INLINE is_VkCmdBindDescriptorSets #-}
+
+is_VkCmdBindDescriptorSets :: CString -> Bool
+is_VkCmdBindDescriptorSets
+  = (EQ ==) . cmpCStrings _VkCmdBindDescriptorSets
+
+type VkCmdBindDescriptorSets = "vkCmdBindDescriptorSets"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindDescriptorSets
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipelineLayout layout
+-- >     , uint32_t firstSet
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     , uint32_t dynamicOffsetCount
+-- >     , const uint32_t* pDynamicOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
+--
+-- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
+--           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindDescriptorSets"
+               vkCmdBindDescriptorSetsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineBindPoint -- ^ pipelineBindPoint
+                                     ->
+                   VkPipelineLayout -- ^ layout
+                                    ->
+                     Word32 -- ^ firstSet
+                            ->
+                       Word32 -- ^ descriptorSetCount
+                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> Word32 -- ^ dynamicOffsetCount
+                                                               -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                             -> IO ()
+
+##else
+vkCmdBindDescriptorSetsUnsafe ::
+                              VkCommandBuffer -- ^ commandBuffer
+                                              ->
+                                VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                    ->
+                                  VkPipelineLayout -- ^ layout
+                                                   ->
+                                    Word32 -- ^ firstSet
+                                           ->
+                                      Word32 -- ^ descriptorSetCount
+                                             -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                    -> Word32 -- ^ dynamicOffsetCount
+                                                                              -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                                            -> IO ()
+vkCmdBindDescriptorSetsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindDescriptorSets)
+
+{-# NOINLINE vkCmdBindDescriptorSetsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindDescriptorSets
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipelineLayout layout
+-- >     , uint32_t firstSet
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     , uint32_t dynamicOffsetCount
+-- >     , const uint32_t* pDynamicOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
+--
+-- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
+--           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindDescriptorSets"
+               vkCmdBindDescriptorSetsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineBindPoint -- ^ pipelineBindPoint
+                                     ->
+                   VkPipelineLayout -- ^ layout
+                                    ->
+                     Word32 -- ^ firstSet
+                            ->
+                       Word32 -- ^ descriptorSetCount
+                              -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                     -> Word32 -- ^ dynamicOffsetCount
+                                                               -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                             -> IO ()
+
+##else
+vkCmdBindDescriptorSetsSafe ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            ->
+                              VkPipelineBindPoint -- ^ pipelineBindPoint
+                                                  ->
+                                VkPipelineLayout -- ^ layout
+                                                 ->
+                                  Word32 -- ^ firstSet
+                                         ->
+                                    Word32 -- ^ descriptorSetCount
+                                           -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                                  -> Word32 -- ^ dynamicOffsetCount
+                                                                            -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                                          -> IO ()
+vkCmdBindDescriptorSetsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindDescriptorSets)
+
+{-# NOINLINE vkCmdBindDescriptorSetsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindDescriptorSets
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineBindPoint pipelineBindPoint
+-- >     , VkPipelineLayout layout
+-- >     , uint32_t firstSet
+-- >     , uint32_t descriptorSetCount
+-- >     , const VkDescriptorSet* pDescriptorSets
+-- >     , uint32_t dynamicOffsetCount
+-- >     , const uint32_t* pDynamicOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindDescriptorSets <- vkGetInstanceProc @VkCmdBindDescriptorSets vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindDescriptorSets <- vkGetProc @VkCmdBindDescriptorSets
+--
+-- __Note:__ @vkCmdBindDescriptorSetsUnsafe@ and @vkCmdBindDescriptorSetsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindDescriptorSets@ is an alias
+--           of @vkCmdBindDescriptorSetsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindDescriptorSetsSafe@.
+--
+vkCmdBindDescriptorSets ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkPipelineBindPoint -- ^ pipelineBindPoint
+                                              ->
+                            VkPipelineLayout -- ^ layout
+                                             ->
+                              Word32 -- ^ firstSet
+                                     ->
+                                Word32 -- ^ descriptorSetCount
+                                       -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                                              -> Word32 -- ^ dynamicOffsetCount
+                                                                        -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBindDescriptorSets = vkCmdBindDescriptorSetsUnsafe
+##else
+vkCmdBindDescriptorSets = vkCmdBindDescriptorSetsSafe
+
+##endif
+{-# INLINE vkCmdBindDescriptorSets #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindDescriptorSets
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineBindPoint pipelineBindPoint
+--   >     , VkPipelineLayout layout
+--   >     , uint32_t firstSet
+--   >     , uint32_t descriptorSetCount
+--   >     , const VkDescriptorSet* pDescriptorSets
+--   >     , uint32_t dynamicOffsetCount
+--   >     , const uint32_t* pDynamicOffsets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindDescriptorSets vkCmdBindDescriptorSets registry at www.khronos.org>
+type HS_vkCmdBindDescriptorSets =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineBindPoint -- ^ pipelineBindPoint
+                           ->
+         VkPipelineLayout -- ^ layout
+                          ->
+           Word32 -- ^ firstSet
+                  ->
+             Word32 -- ^ descriptorSetCount
+                    -> Ptr VkDescriptorSet -- ^ pDescriptorSets
+                                           -> Word32 -- ^ dynamicOffsetCount
+                                                     -> Ptr Word32 -- ^ pDynamicOffsets
+                                                                   -> IO ()
+
+type PFN_vkCmdBindDescriptorSets =
+     FunPtr HS_vkCmdBindDescriptorSets
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBindDescriptorSetsUnsafe ::
+               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdBindDescriptorSetsSafe ::
+               PFN_vkCmdBindDescriptorSets -> HS_vkCmdBindDescriptorSets
+
+instance VulkanProc "vkCmdBindDescriptorSets" where
+    type VkProcType "vkCmdBindDescriptorSets" =
+         HS_vkCmdBindDescriptorSets
+    vkProcSymbol = _VkCmdBindDescriptorSets
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdBindDescriptorSetsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdBindDescriptorSetsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindIndexBuffer :: CString
+
+pattern VkCmdBindIndexBuffer <- (is_VkCmdBindIndexBuffer -> True)
+  where
+    VkCmdBindIndexBuffer = _VkCmdBindIndexBuffer
+
+{-# INLINE _VkCmdBindIndexBuffer #-}
+
+_VkCmdBindIndexBuffer :: CString
+_VkCmdBindIndexBuffer = Ptr "vkCmdBindIndexBuffer\NUL"##
+
+{-# INLINE is_VkCmdBindIndexBuffer #-}
+
+is_VkCmdBindIndexBuffer :: CString -> Bool
+is_VkCmdBindIndexBuffer
+  = (EQ ==) . cmpCStrings _VkCmdBindIndexBuffer
+
+type VkCmdBindIndexBuffer = "vkCmdBindIndexBuffer"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindIndexBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , VkIndexType indexType
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
+--
+-- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
+--           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindIndexBuffer"
+               vkCmdBindIndexBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> VkIndexType -- ^ indexType
+                                                                          -> IO ()
+
+##else
+vkCmdBindIndexBufferUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> VkBuffer -- ^ buffer
+                                                       -> VkDeviceSize -- ^ offset
+                                                                       -> VkIndexType -- ^ indexType
+                                                                                      -> IO ()
+vkCmdBindIndexBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindIndexBuffer)
+
+{-# NOINLINE vkCmdBindIndexBufferUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindIndexBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , VkIndexType indexType
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
+--
+-- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
+--           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindIndexBuffer"
+               vkCmdBindIndexBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> VkIndexType -- ^ indexType
+                                                                          -> IO ()
+
+##else
+vkCmdBindIndexBufferSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> VkBuffer -- ^ buffer
+                                                     -> VkDeviceSize -- ^ offset
+                                                                     -> VkIndexType -- ^ indexType
+                                                                                    -> IO ()
+vkCmdBindIndexBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindIndexBuffer)
+
+{-# NOINLINE vkCmdBindIndexBufferSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindIndexBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , VkIndexType indexType
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindIndexBuffer <- vkGetInstanceProc @VkCmdBindIndexBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindIndexBuffer <- vkGetProc @VkCmdBindIndexBuffer
+--
+-- __Note:__ @vkCmdBindIndexBufferUnsafe@ and @vkCmdBindIndexBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindIndexBuffer@ is an alias
+--           of @vkCmdBindIndexBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindIndexBufferSafe@.
+--
+vkCmdBindIndexBuffer ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkBuffer -- ^ buffer
+                                                 -> VkDeviceSize -- ^ offset
+                                                                 -> VkIndexType -- ^ indexType
+                                                                                -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBindIndexBuffer = vkCmdBindIndexBufferUnsafe
+##else
+vkCmdBindIndexBuffer = vkCmdBindIndexBufferSafe
+
+##endif
+{-# INLINE vkCmdBindIndexBuffer #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindIndexBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , VkIndexType indexType
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindIndexBuffer vkCmdBindIndexBuffer registry at www.khronos.org>
+type HS_vkCmdBindIndexBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> VkIndexType -- ^ indexType
+                                                                -> IO ()
+
+type PFN_vkCmdBindIndexBuffer = FunPtr HS_vkCmdBindIndexBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBindIndexBufferUnsafe ::
+               PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdBindIndexBufferSafe
+               :: PFN_vkCmdBindIndexBuffer -> HS_vkCmdBindIndexBuffer
+
+instance VulkanProc "vkCmdBindIndexBuffer" where
+    type VkProcType "vkCmdBindIndexBuffer" = HS_vkCmdBindIndexBuffer
+    vkProcSymbol = _VkCmdBindIndexBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdBindIndexBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdBindIndexBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBindVertexBuffers :: CString
+
+pattern VkCmdBindVertexBuffers <-
+        (is_VkCmdBindVertexBuffers -> True)
+  where
+    VkCmdBindVertexBuffers = _VkCmdBindVertexBuffers
+
+{-# INLINE _VkCmdBindVertexBuffers #-}
+
+_VkCmdBindVertexBuffers :: CString
+_VkCmdBindVertexBuffers = Ptr "vkCmdBindVertexBuffers\NUL"##
+
+{-# INLINE is_VkCmdBindVertexBuffers #-}
+
+is_VkCmdBindVertexBuffers :: CString -> Bool
+is_VkCmdBindVertexBuffers
+  = (EQ ==) . cmpCStrings _VkCmdBindVertexBuffers
+
+type VkCmdBindVertexBuffers = "vkCmdBindVertexBuffers"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindVertexBuffers
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstBinding
+-- >     , uint32_t bindingCount
+-- >     , const VkBuffer* pBuffers
+-- >     , const VkDeviceSize* pOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
+--
+-- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
+--           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBindVertexBuffers"
+               vkCmdBindVertexBuffersUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstBinding
+                        -> Word32 -- ^ bindingCount
+                                  -> Ptr VkBuffer -- ^ pBuffers
+                                                  -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                      -> IO ()
+
+##else
+vkCmdBindVertexBuffersUnsafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               Word32 -- ^ firstBinding
+                                      -> Word32 -- ^ bindingCount
+                                                -> Ptr VkBuffer -- ^ pBuffers
+                                                                -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                                    -> IO ()
+vkCmdBindVertexBuffersUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBindVertexBuffers)
+
+{-# NOINLINE vkCmdBindVertexBuffersUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindVertexBuffers
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstBinding
+-- >     , uint32_t bindingCount
+-- >     , const VkBuffer* pBuffers
+-- >     , const VkDeviceSize* pOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
+--
+-- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
+--           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBindVertexBuffers"
+               vkCmdBindVertexBuffersSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ firstBinding
+                        -> Word32 -- ^ bindingCount
+                                  -> Ptr VkBuffer -- ^ pBuffers
+                                                  -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                      -> IO ()
+
+##else
+vkCmdBindVertexBuffersSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             Word32 -- ^ firstBinding
+                                    -> Word32 -- ^ bindingCount
+                                              -> Ptr VkBuffer -- ^ pBuffers
+                                                              -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                                  -> IO ()
+vkCmdBindVertexBuffersSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBindVertexBuffers)
+
+{-# NOINLINE vkCmdBindVertexBuffersSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBindVertexBuffers
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t firstBinding
+-- >     , uint32_t bindingCount
+-- >     , const VkBuffer* pBuffers
+-- >     , const VkDeviceSize* pOffsets
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBindVertexBuffers <- vkGetInstanceProc @VkCmdBindVertexBuffers vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBindVertexBuffers <- vkGetProc @VkCmdBindVertexBuffers
+--
+-- __Note:__ @vkCmdBindVertexBuffersUnsafe@ and @vkCmdBindVertexBuffersSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBindVertexBuffers@ is an alias
+--           of @vkCmdBindVertexBuffersUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBindVertexBuffersSafe@.
+--
+vkCmdBindVertexBuffers ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         Word32 -- ^ firstBinding
+                                -> Word32 -- ^ bindingCount
+                                          -> Ptr VkBuffer -- ^ pBuffers
+                                                          -> Ptr VkDeviceSize -- ^ pOffsets
+                                                                              -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBindVertexBuffers = vkCmdBindVertexBuffersUnsafe
+##else
+vkCmdBindVertexBuffers = vkCmdBindVertexBuffersSafe
+
+##endif
+{-# INLINE vkCmdBindVertexBuffers #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBindVertexBuffers
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t firstBinding
+--   >     , uint32_t bindingCount
+--   >     , const VkBuffer* pBuffers
+--   >     , const VkDeviceSize* pOffsets
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBindVertexBuffers vkCmdBindVertexBuffers registry at www.khronos.org>
+type HS_vkCmdBindVertexBuffers =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ firstBinding
+              -> Word32 -- ^ bindingCount
+                        -> Ptr VkBuffer -- ^ pBuffers
+                                        -> Ptr VkDeviceSize -- ^ pOffsets
+                                                            -> IO ()
+
+type PFN_vkCmdBindVertexBuffers = FunPtr HS_vkCmdBindVertexBuffers
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBindVertexBuffersUnsafe ::
+               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdBindVertexBuffersSafe ::
+               PFN_vkCmdBindVertexBuffers -> HS_vkCmdBindVertexBuffers
+
+instance VulkanProc "vkCmdBindVertexBuffers" where
+    type VkProcType "vkCmdBindVertexBuffers" =
+         HS_vkCmdBindVertexBuffers
+    vkProcSymbol = _VkCmdBindVertexBuffers
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdBindVertexBuffersUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdBindVertexBuffersSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDraw :: CString
+
+pattern VkCmdDraw <- (is_VkCmdDraw -> True)
+  where
+    VkCmdDraw = _VkCmdDraw
+
+{-# INLINE _VkCmdDraw #-}
+
+_VkCmdDraw :: CString
+_VkCmdDraw = Ptr "vkCmdDraw\NUL"##
+
+{-# INLINE is_VkCmdDraw #-}
+
+is_VkCmdDraw :: CString -> Bool
+is_VkCmdDraw = (EQ ==) . cmpCStrings _VkCmdDraw
+
+type VkCmdDraw = "vkCmdDraw"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDraw
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t vertexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstVertex
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDraw <- vkGetProc @VkCmdDraw
+--
+-- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
+--           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDraw" vkCmdDrawUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ vertexCount
+                                         -> Word32 -- ^ instanceCount
+                                                   -> Word32 -- ^ firstVertex
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+
+##else
+vkCmdDrawUnsafe ::
+                VkCommandBuffer -- ^ commandBuffer
+                                -> Word32 -- ^ vertexCount
+                                          -> Word32 -- ^ instanceCount
+                                                    -> Word32 -- ^ firstVertex
+                                                              -> Word32 -- ^ firstInstance
+                                                                        -> IO ()
+vkCmdDrawUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDraw)
+
+{-# NOINLINE vkCmdDrawUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDraw
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t vertexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstVertex
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDraw <- vkGetProc @VkCmdDraw
+--
+-- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
+--           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDraw" vkCmdDrawSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ vertexCount
+                                         -> Word32 -- ^ instanceCount
+                                                   -> Word32 -- ^ firstVertex
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+
+##else
+vkCmdDrawSafe ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> Word32 -- ^ vertexCount
+                                        -> Word32 -- ^ instanceCount
+                                                  -> Word32 -- ^ firstVertex
+                                                            -> Word32 -- ^ firstInstance
+                                                                      -> IO ()
+vkCmdDrawSafe = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDraw)
+
+{-# NOINLINE vkCmdDrawSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDraw
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t vertexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstVertex
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDraw <- vkGetInstanceProc @VkCmdDraw vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDraw <- vkGetProc @VkCmdDraw
+--
+-- __Note:__ @vkCmdDrawUnsafe@ and @vkCmdDrawSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDraw@ is an alias
+--           of @vkCmdDrawUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawSafe@.
+--
+vkCmdDraw ::
+          VkCommandBuffer -- ^ commandBuffer
+                          -> Word32 -- ^ vertexCount
+                                    -> Word32 -- ^ instanceCount
+                                              -> Word32 -- ^ firstVertex
+                                                        -> Word32 -- ^ firstInstance
+                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDraw = vkCmdDrawUnsafe
+##else
+vkCmdDraw = vkCmdDrawSafe
+
+##endif
+{-# INLINE vkCmdDraw #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDraw
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t vertexCount
+--   >     , uint32_t instanceCount
+--   >     , uint32_t firstVertex
+--   >     , uint32_t firstInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDraw vkCmdDraw registry at www.khronos.org>
+type HS_vkCmdDraw =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ vertexCount
+                               -> Word32 -- ^ instanceCount
+                                         -> Word32 -- ^ firstVertex
+                                                   -> Word32 -- ^ firstInstance
+                                                             -> IO ()
+
+type PFN_vkCmdDraw = FunPtr HS_vkCmdDraw
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDrawUnsafe ::
+               PFN_vkCmdDraw -> HS_vkCmdDraw
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawSafe ::
+               PFN_vkCmdDraw -> HS_vkCmdDraw
+
+instance VulkanProc "vkCmdDraw" where
+    type VkProcType "vkCmdDraw" = HS_vkCmdDraw
+    vkProcSymbol = _VkCmdDraw
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDrawUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDrawSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndexed :: CString
+
+pattern VkCmdDrawIndexed <- (is_VkCmdDrawIndexed -> True)
+  where
+    VkCmdDrawIndexed = _VkCmdDrawIndexed
+
+{-# INLINE _VkCmdDrawIndexed #-}
+
+_VkCmdDrawIndexed :: CString
+_VkCmdDrawIndexed = Ptr "vkCmdDrawIndexed\NUL"##
+
+{-# INLINE is_VkCmdDrawIndexed #-}
+
+is_VkCmdDrawIndexed :: CString -> Bool
+is_VkCmdDrawIndexed = (EQ ==) . cmpCStrings _VkCmdDrawIndexed
+
+type VkCmdDrawIndexed = "vkCmdDrawIndexed"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexed
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t indexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstIndex
+-- >     , int32_t vertexOffset
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
+--
+-- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
+--           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndexed"
+               vkCmdDrawIndexedUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ indexCount
+                        -> Word32 -- ^ instanceCount
+                                  -> Word32 -- ^ firstIndex
+                                            -> Int32 -- ^ vertexOffset
+                                                     -> Word32 -- ^ firstInstance
+                                                               -> IO ()
+
+##else
+vkCmdDrawIndexedUnsafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         Word32 -- ^ indexCount
+                                -> Word32 -- ^ instanceCount
+                                          -> Word32 -- ^ firstIndex
+                                                    -> Int32 -- ^ vertexOffset
+                                                             -> Word32 -- ^ firstInstance
+                                                                       -> IO ()
+vkCmdDrawIndexedUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDrawIndexed)
+
+{-# NOINLINE vkCmdDrawIndexedUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexed
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t indexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstIndex
+-- >     , int32_t vertexOffset
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
+--
+-- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
+--           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndexed" vkCmdDrawIndexedSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ indexCount
+                        -> Word32 -- ^ instanceCount
+                                  -> Word32 -- ^ firstIndex
+                                            -> Int32 -- ^ vertexOffset
+                                                     -> Word32 -- ^ firstInstance
+                                                               -> IO ()
+
+##else
+vkCmdDrawIndexedSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       Word32 -- ^ indexCount
+                              -> Word32 -- ^ instanceCount
+                                        -> Word32 -- ^ firstIndex
+                                                  -> Int32 -- ^ vertexOffset
+                                                           -> Word32 -- ^ firstInstance
+                                                                     -> IO ()
+vkCmdDrawIndexedSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexed)
+
+{-# NOINLINE vkCmdDrawIndexedSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexed
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t indexCount
+-- >     , uint32_t instanceCount
+-- >     , uint32_t firstIndex
+-- >     , int32_t vertexOffset
+-- >     , uint32_t firstInstance
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexed <- vkGetInstanceProc @VkCmdDrawIndexed vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexed <- vkGetProc @VkCmdDrawIndexed
+--
+-- __Note:__ @vkCmdDrawIndexedUnsafe@ and @vkCmdDrawIndexedSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexed@ is an alias
+--           of @vkCmdDrawIndexedUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedSafe@.
+--
+vkCmdDrawIndexed ::
+                 VkCommandBuffer -- ^ commandBuffer
+                                 ->
+                   Word32 -- ^ indexCount
+                          -> Word32 -- ^ instanceCount
+                                    -> Word32 -- ^ firstIndex
+                                              -> Int32 -- ^ vertexOffset
+                                                       -> Word32 -- ^ firstInstance
+                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDrawIndexed = vkCmdDrawIndexedUnsafe
+##else
+vkCmdDrawIndexed = vkCmdDrawIndexedSafe
+
+##endif
+{-# INLINE vkCmdDrawIndexed #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndexed
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t indexCount
+--   >     , uint32_t instanceCount
+--   >     , uint32_t firstIndex
+--   >     , int32_t vertexOffset
+--   >     , uint32_t firstInstance
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexed vkCmdDrawIndexed registry at www.khronos.org>
+type HS_vkCmdDrawIndexed =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ indexCount
+              -> Word32 -- ^ instanceCount
+                        -> Word32 -- ^ firstIndex
+                                  -> Int32 -- ^ vertexOffset
+                                           -> Word32 -- ^ firstInstance
+                                                     -> IO ()
+
+type PFN_vkCmdDrawIndexed = FunPtr HS_vkCmdDrawIndexed
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndexedUnsafe
+               :: PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawIndexedSafe ::
+               PFN_vkCmdDrawIndexed -> HS_vkCmdDrawIndexed
+
+instance VulkanProc "vkCmdDrawIndexed" where
+    type VkProcType "vkCmdDrawIndexed" = HS_vkCmdDrawIndexed
+    vkProcSymbol = _VkCmdDrawIndexed
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndexedUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndirect :: CString
+
+pattern VkCmdDrawIndirect <- (is_VkCmdDrawIndirect -> True)
+  where
+    VkCmdDrawIndirect = _VkCmdDrawIndirect
+
+{-# INLINE _VkCmdDrawIndirect #-}
+
+_VkCmdDrawIndirect :: CString
+_VkCmdDrawIndirect = Ptr "vkCmdDrawIndirect\NUL"##
+
+{-# INLINE is_VkCmdDrawIndirect #-}
+
+is_VkCmdDrawIndirect :: CString -> Bool
+is_VkCmdDrawIndirect = (EQ ==) . cmpCStrings _VkCmdDrawIndirect
+
+type VkCmdDrawIndirect = "vkCmdDrawIndirect"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
+--
+-- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
+--           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndirect"
+               vkCmdDrawIndirectUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndirectUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkBuffer -- ^ buffer
+                                   -> VkDeviceSize -- ^ offset
+                                                   -> Word32 -- ^ drawCount
+                                                             -> Word32 -- ^ stride
+                                                                       -> IO ()
+vkCmdDrawIndirectUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDrawIndirect)
+
+{-# NOINLINE vkCmdDrawIndirectUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
+--
+-- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
+--           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndirect" vkCmdDrawIndirectSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndirectSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> Word32 -- ^ drawCount
+                                                           -> Word32 -- ^ stride
+                                                                     -> IO ()
+vkCmdDrawIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndirect)
+
+{-# NOINLINE vkCmdDrawIndirectSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndirect <- vkGetInstanceProc @VkCmdDrawIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndirect <- vkGetProc @VkCmdDrawIndirect
+--
+-- __Note:__ @vkCmdDrawIndirectUnsafe@ and @vkCmdDrawIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndirect@ is an alias
+--           of @vkCmdDrawIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndirectSafe@.
+--
+vkCmdDrawIndirect ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkBuffer -- ^ buffer
+                             -> VkDeviceSize -- ^ offset
+                                             -> Word32 -- ^ drawCount
+                                                       -> Word32 -- ^ stride
+                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDrawIndirect = vkCmdDrawIndirectUnsafe
+##else
+vkCmdDrawIndirect = vkCmdDrawIndirectSafe
+
+##endif
+{-# INLINE vkCmdDrawIndirect #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndirect vkCmdDrawIndirect registry at www.khronos.org>
+type HS_vkCmdDrawIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceSize -- ^ offset
+                                -> Word32 -- ^ drawCount
+                                          -> Word32 -- ^ stride
+                                                    -> IO ()
+
+type PFN_vkCmdDrawIndirect = FunPtr HS_vkCmdDrawIndirect
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDrawIndirectUnsafe
+               :: PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
+
+foreign import ccall safe "dynamic" unwrapVkCmdDrawIndirectSafe ::
+               PFN_vkCmdDrawIndirect -> HS_vkCmdDrawIndirect
+
+instance VulkanProc "vkCmdDrawIndirect" where
+    type VkProcType "vkCmdDrawIndirect" = HS_vkCmdDrawIndirect
+    vkProcSymbol = _VkCmdDrawIndirect
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDrawIndexedIndirect :: CString
+
+pattern VkCmdDrawIndexedIndirect <-
+        (is_VkCmdDrawIndexedIndirect -> True)
+  where
+    VkCmdDrawIndexedIndirect = _VkCmdDrawIndexedIndirect
+
+{-# INLINE _VkCmdDrawIndexedIndirect #-}
+
+_VkCmdDrawIndexedIndirect :: CString
+_VkCmdDrawIndexedIndirect = Ptr "vkCmdDrawIndexedIndirect\NUL"##
+
+{-# INLINE is_VkCmdDrawIndexedIndirect #-}
+
+is_VkCmdDrawIndexedIndirect :: CString -> Bool
+is_VkCmdDrawIndexedIndirect
+  = (EQ ==) . cmpCStrings _VkCmdDrawIndexedIndirect
+
+type VkCmdDrawIndexedIndirect = "vkCmdDrawIndexedIndirect"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexedIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
+--
+-- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
+--           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDrawIndexedIndirect"
+               vkCmdDrawIndexedIndirectUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndexedIndirectUnsafe ::
+                               VkCommandBuffer -- ^ commandBuffer
+                                               ->
+                                 VkBuffer -- ^ buffer
+                                          -> VkDeviceSize -- ^ offset
+                                                          -> Word32 -- ^ drawCount
+                                                                    -> Word32 -- ^ stride
+                                                                              -> IO ()
+vkCmdDrawIndexedIndirectUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdDrawIndexedIndirect)
+
+{-# NOINLINE vkCmdDrawIndexedIndirectUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexedIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
+--
+-- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
+--           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDrawIndexedIndirect"
+               vkCmdDrawIndexedIndirectSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ buffer
+                          -> VkDeviceSize -- ^ offset
+                                          -> Word32 -- ^ drawCount
+                                                    -> Word32 -- ^ stride
+                                                              -> IO ()
+
+##else
+vkCmdDrawIndexedIndirectSafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               VkBuffer -- ^ buffer
+                                        -> VkDeviceSize -- ^ offset
+                                                        -> Word32 -- ^ drawCount
+                                                                  -> Word32 -- ^ stride
+                                                                            -> IO ()
+vkCmdDrawIndexedIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDrawIndexedIndirect)
+
+{-# NOINLINE vkCmdDrawIndexedIndirectSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdDrawIndexedIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     , uint32_t drawCount
+-- >     , uint32_t stride
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetInstanceProc @VkCmdDrawIndexedIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDrawIndexedIndirect <- vkGetProc @VkCmdDrawIndexedIndirect
+--
+-- __Note:__ @vkCmdDrawIndexedIndirectUnsafe@ and @vkCmdDrawIndexedIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDrawIndexedIndirect@ is an alias
+--           of @vkCmdDrawIndexedIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDrawIndexedIndirectSafe@.
+--
+vkCmdDrawIndexedIndirect ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkBuffer -- ^ buffer
+                                    -> VkDeviceSize -- ^ offset
+                                                    -> Word32 -- ^ drawCount
+                                                              -> Word32 -- ^ stride
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDrawIndexedIndirect = vkCmdDrawIndexedIndirectUnsafe
+##else
+vkCmdDrawIndexedIndirect = vkCmdDrawIndexedIndirectSafe
+
+##endif
+{-# INLINE vkCmdDrawIndexedIndirect #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdDrawIndexedIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     , uint32_t drawCount
+--   >     , uint32_t stride
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect registry at www.khronos.org>
+type HS_vkCmdDrawIndexedIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ buffer
+                -> VkDeviceSize -- ^ offset
+                                -> Word32 -- ^ drawCount
+                                          -> Word32 -- ^ stride
+                                                    -> IO ()
+
+type PFN_vkCmdDrawIndexedIndirect =
+     FunPtr HS_vkCmdDrawIndexedIndirect
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDrawIndexedIndirectUnsafe ::
+               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdDrawIndexedIndirectSafe ::
+               PFN_vkCmdDrawIndexedIndirect -> HS_vkCmdDrawIndexedIndirect
+
+instance VulkanProc "vkCmdDrawIndexedIndirect" where
+    type VkProcType "vkCmdDrawIndexedIndirect" =
+         HS_vkCmdDrawIndexedIndirect
+    vkProcSymbol = _VkCmdDrawIndexedIndirect
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndexedIndirectUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatch :: CString
+
+pattern VkCmdDispatch <- (is_VkCmdDispatch -> True)
+  where
+    VkCmdDispatch = _VkCmdDispatch
+
+{-# INLINE _VkCmdDispatch #-}
+
+_VkCmdDispatch :: CString
+_VkCmdDispatch = Ptr "vkCmdDispatch\NUL"##
+
+{-# INLINE is_VkCmdDispatch #-}
+
+is_VkCmdDispatch :: CString -> Bool
+is_VkCmdDispatch = (EQ ==) . cmpCStrings _VkCmdDispatch
+
+type VkCmdDispatch = "vkCmdDispatch"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatch
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatch <- vkGetProc @VkCmdDispatch
+--
+-- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
+--           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDispatch" vkCmdDispatchUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ groupCountX
+                                         -> Word32 -- ^ groupCountY
+                                                   -> Word32 -- ^ groupCountZ
+                                                             -> IO ()
+
+##else
+vkCmdDispatchUnsafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> Word32 -- ^ groupCountX
+                                              -> Word32 -- ^ groupCountY
+                                                        -> Word32 -- ^ groupCountZ
+                                                                  -> IO ()
+vkCmdDispatchUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatch)
+
+{-# NOINLINE vkCmdDispatchUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatch
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatch <- vkGetProc @VkCmdDispatch
+--
+-- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
+--           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDispatch" vkCmdDispatchSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ groupCountX
+                                         -> Word32 -- ^ groupCountY
+                                                   -> Word32 -- ^ groupCountZ
+                                                             -> IO ()
+
+##else
+vkCmdDispatchSafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> Word32 -- ^ groupCountX
+                                            -> Word32 -- ^ groupCountY
+                                                      -> Word32 -- ^ groupCountZ
+                                                                -> IO ()
+vkCmdDispatchSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatch)
+
+{-# NOINLINE vkCmdDispatchSafe #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatch
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatch <- vkGetInstanceProc @VkCmdDispatch vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatch <- vkGetProc @VkCmdDispatch
+--
+-- __Note:__ @vkCmdDispatchUnsafe@ and @vkCmdDispatchSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatch@ is an alias
+--           of @vkCmdDispatchUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchSafe@.
+--
+vkCmdDispatch ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> Word32 -- ^ groupCountX
+                                        -> Word32 -- ^ groupCountY
+                                                  -> Word32 -- ^ groupCountZ
+                                                            -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDispatch = vkCmdDispatchUnsafe
+##else
+vkCmdDispatch = vkCmdDispatchSafe
+
+##endif
+{-# INLINE vkCmdDispatch #-}
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @compute@
+--
+--   > void vkCmdDispatch
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t groupCountX
+--   >     , uint32_t groupCountY
+--   >     , uint32_t groupCountZ
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatch vkCmdDispatch registry at www.khronos.org>
+type HS_vkCmdDispatch =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ groupCountX
+                               -> Word32 -- ^ groupCountY
+                                         -> Word32 -- ^ groupCountZ
+                                                   -> IO ()
+
+type PFN_vkCmdDispatch = FunPtr HS_vkCmdDispatch
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchUnsafe ::
+               PFN_vkCmdDispatch -> HS_vkCmdDispatch
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchSafe ::
+               PFN_vkCmdDispatch -> HS_vkCmdDispatch
+
+instance VulkanProc "vkCmdDispatch" where
+    type VkProcType "vkCmdDispatch" = HS_vkCmdDispatch
+    vkProcSymbol = _VkCmdDispatch
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDispatchSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatchIndirect :: CString
+
+pattern VkCmdDispatchIndirect <- (is_VkCmdDispatchIndirect -> True)
+  where
+    VkCmdDispatchIndirect = _VkCmdDispatchIndirect
+
+{-# INLINE _VkCmdDispatchIndirect #-}
+
+_VkCmdDispatchIndirect :: CString
+_VkCmdDispatchIndirect = Ptr "vkCmdDispatchIndirect\NUL"##
+
+{-# INLINE is_VkCmdDispatchIndirect #-}
+
+is_VkCmdDispatchIndirect :: CString -> Bool
+is_VkCmdDispatchIndirect
+  = (EQ ==) . cmpCStrings _VkCmdDispatchIndirect
+
+type VkCmdDispatchIndirect = "vkCmdDispatchIndirect"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatchIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
+--
+-- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
+--           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdDispatchIndirect"
+               vkCmdDispatchIndirectUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> IO ()
+
+##else
+vkCmdDispatchIndirectUnsafe ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            -> VkBuffer -- ^ buffer
+                                                        -> VkDeviceSize -- ^ offset
+                                                                        -> IO ()
+vkCmdDispatchIndirectUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatchIndirect)
+
+{-# NOINLINE vkCmdDispatchIndirectUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatchIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
+--
+-- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
+--           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdDispatchIndirect"
+               vkCmdDispatchIndirectSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkBuffer -- ^ buffer
+                                           -> VkDeviceSize -- ^ offset
+                                                           -> IO ()
+
+##else
+vkCmdDispatchIndirectSafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          -> VkBuffer -- ^ buffer
+                                                      -> VkDeviceSize -- ^ offset
+                                                                      -> IO ()
+vkCmdDispatchIndirectSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchIndirect)
+
+{-# NOINLINE vkCmdDispatchIndirectSafe #-}
+##endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @compute@
+--
+-- > void vkCmdDispatchIndirect
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer buffer
+-- >     , VkDeviceSize offset
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchIndirect <- vkGetInstanceProc @VkCmdDispatchIndirect vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchIndirect <- vkGetProc @VkCmdDispatchIndirect
+--
+-- __Note:__ @vkCmdDispatchIndirectUnsafe@ and @vkCmdDispatchIndirectSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchIndirect@ is an alias
+--           of @vkCmdDispatchIndirectUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchIndirectSafe@.
+--
+vkCmdDispatchIndirect ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> VkBuffer -- ^ buffer
+                                                  -> VkDeviceSize -- ^ offset
+                                                                  -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdDispatchIndirect = vkCmdDispatchIndirectUnsafe
+##else
+vkCmdDispatchIndirect = vkCmdDispatchIndirectSafe
+
+##endif
+{-# INLINE vkCmdDispatchIndirect #-}
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @compute@
+--
+--   > void vkCmdDispatchIndirect
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer buffer
+--   >     , VkDeviceSize offset
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchIndirect vkCmdDispatchIndirect registry at www.khronos.org>
+type HS_vkCmdDispatchIndirect =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkBuffer -- ^ buffer
+                                 -> VkDeviceSize -- ^ offset
+                                                 -> IO ()
+
+type PFN_vkCmdDispatchIndirect = FunPtr HS_vkCmdDispatchIndirect
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdDispatchIndirectUnsafe ::
+               PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchIndirectSafe
+               :: PFN_vkCmdDispatchIndirect -> HS_vkCmdDispatchIndirect
+
+instance VulkanProc "vkCmdDispatchIndirect" where
+    type VkProcType "vkCmdDispatchIndirect" = HS_vkCmdDispatchIndirect
+    vkProcSymbol = _VkCmdDispatchIndirect
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchIndirectUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDispatchIndirectSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyBuffer :: CString
+
+pattern VkCmdCopyBuffer <- (is_VkCmdCopyBuffer -> True)
+  where
+    VkCmdCopyBuffer = _VkCmdCopyBuffer
+
+{-# INLINE _VkCmdCopyBuffer #-}
+
+_VkCmdCopyBuffer :: CString
+_VkCmdCopyBuffer = Ptr "vkCmdCopyBuffer\NUL"##
+
+{-# INLINE is_VkCmdCopyBuffer #-}
+
+is_VkCmdCopyBuffer :: CString -> Bool
+is_VkCmdCopyBuffer = (EQ ==) . cmpCStrings _VkCmdCopyBuffer
+
+type VkCmdCopyBuffer = "vkCmdCopyBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
+--
+-- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
+--           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyBuffer" vkCmdCopyBufferUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          -> VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferCopy -- ^ pRegions
+                                                                    -> IO ()
+
+##else
+vkCmdCopyBufferUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ srcBuffer
+                                 -> VkBuffer -- ^ dstBuffer
+                                             -> Word32 -- ^ regionCount
+                                                       -> Ptr VkBufferCopy -- ^ pRegions
+                                                                           -> IO ()
+vkCmdCopyBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyBuffer)
+
+{-# NOINLINE vkCmdCopyBufferUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
+--
+-- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
+--           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyBuffer" vkCmdCopyBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          -> VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferCopy -- ^ pRegions
+                                                                    -> IO ()
+
+##else
+vkCmdCopyBufferSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkBuffer -- ^ srcBuffer
+                               -> VkBuffer -- ^ dstBuffer
+                                           -> Word32 -- ^ regionCount
+                                                     -> Ptr VkBufferCopy -- ^ pRegions
+                                                                         -> IO ()
+vkCmdCopyBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBuffer)
+
+{-# NOINLINE vkCmdCopyBufferSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBuffer <- vkGetInstanceProc @VkCmdCopyBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBuffer <- vkGetProc @VkCmdCopyBuffer
+--
+-- __Note:__ @vkCmdCopyBufferUnsafe@ and @vkCmdCopyBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBuffer@ is an alias
+--           of @vkCmdCopyBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferSafe@.
+--
+vkCmdCopyBuffer ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkBuffer -- ^ srcBuffer
+                           -> VkBuffer -- ^ dstBuffer
+                                       -> Word32 -- ^ regionCount
+                                                 -> Ptr VkBufferCopy -- ^ pRegions
+                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyBuffer = vkCmdCopyBufferUnsafe
+##else
+vkCmdCopyBuffer = vkCmdCopyBufferSafe
+
+##endif
+{-# INLINE vkCmdCopyBuffer #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer srcBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , uint32_t regionCount
+--   >     , const VkBufferCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBuffer vkCmdCopyBuffer registry at www.khronos.org>
+type HS_vkCmdCopyBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ srcBuffer
+                -> VkBuffer -- ^ dstBuffer
+                            -> Word32 -- ^ regionCount
+                                      -> Ptr VkBufferCopy -- ^ pRegions
+                                                          -> IO ()
+
+type PFN_vkCmdCopyBuffer = FunPtr HS_vkCmdCopyBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdCopyBufferUnsafe
+               :: PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdCopyBufferSafe ::
+               PFN_vkCmdCopyBuffer -> HS_vkCmdCopyBuffer
+
+instance VulkanProc "vkCmdCopyBuffer" where
+    type VkProcType "vkCmdCopyBuffer" = HS_vkCmdCopyBuffer
+    vkProcSymbol = _VkCmdCopyBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdCopyBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyImage :: CString
+
+pattern VkCmdCopyImage <- (is_VkCmdCopyImage -> True)
+  where
+    VkCmdCopyImage = _VkCmdCopyImage
+
+{-# INLINE _VkCmdCopyImage #-}
+
+_VkCmdCopyImage :: CString
+_VkCmdCopyImage = Ptr "vkCmdCopyImage\NUL"##
+
+{-# INLINE is_VkCmdCopyImage #-}
+
+is_VkCmdCopyImage :: CString -> Bool
+is_VkCmdCopyImage = (EQ ==) . cmpCStrings _VkCmdCopyImage
+
+type VkCmdCopyImage = "vkCmdCopyImage"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
+--
+-- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
+--           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyImage" vkCmdCopyImageUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+
+##else
+vkCmdCopyImageUnsafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkImage -- ^ srcImage
+                               ->
+                         VkImageLayout -- ^ srcImageLayout
+                                       ->
+                           VkImage -- ^ dstImage
+                                   -> VkImageLayout -- ^ dstImageLayout
+                                                    -> Word32 -- ^ regionCount
+                                                              -> Ptr VkImageCopy -- ^ pRegions
+                                                                                 -> IO ()
+vkCmdCopyImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyImage)
+
+{-# NOINLINE vkCmdCopyImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
+--
+-- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
+--           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyImage" vkCmdCopyImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+
+##else
+vkCmdCopyImageSafe ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkImage -- ^ srcImage
+                             ->
+                       VkImageLayout -- ^ srcImageLayout
+                                     ->
+                         VkImage -- ^ dstImage
+                                 -> VkImageLayout -- ^ dstImageLayout
+                                                  -> Word32 -- ^ regionCount
+                                                            -> Ptr VkImageCopy -- ^ pRegions
+                                                                               -> IO ()
+vkCmdCopyImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImage)
+
+{-# NOINLINE vkCmdCopyImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImage <- vkGetInstanceProc @VkCmdCopyImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImage <- vkGetProc @VkCmdCopyImage
+--
+-- __Note:__ @vkCmdCopyImageUnsafe@ and @vkCmdCopyImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImage@ is an alias
+--           of @vkCmdCopyImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageSafe@.
+--
+vkCmdCopyImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageCopy -- ^ pRegions
+                                                                           -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyImage = vkCmdCopyImageUnsafe
+##else
+vkCmdCopyImage = vkCmdCopyImageSafe
+
+##endif
+{-# INLINE vkCmdCopyImage #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImage vkCmdCopyImage registry at www.khronos.org>
+type HS_vkCmdCopyImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   -> VkImageLayout -- ^ dstImageLayout
+                                    -> Word32 -- ^ regionCount
+                                              -> Ptr VkImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+type PFN_vkCmdCopyImage = FunPtr HS_vkCmdCopyImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdCopyImageUnsafe ::
+               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdCopyImageSafe ::
+               PFN_vkCmdCopyImage -> HS_vkCmdCopyImage
+
+instance VulkanProc "vkCmdCopyImage" where
+    type VkProcType "vkCmdCopyImage" = HS_vkCmdCopyImage
+    vkProcSymbol = _VkCmdCopyImage
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdCopyImageUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdCopyImageSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBlitImage :: CString
+
+pattern VkCmdBlitImage <- (is_VkCmdBlitImage -> True)
+  where
+    VkCmdBlitImage = _VkCmdBlitImage
+
+{-# INLINE _VkCmdBlitImage #-}
+
+_VkCmdBlitImage :: CString
+_VkCmdBlitImage = Ptr "vkCmdBlitImage\NUL"##
+
+{-# INLINE is_VkCmdBlitImage #-}
+
+is_VkCmdBlitImage :: CString -> Bool
+is_VkCmdBlitImage = (EQ ==) . cmpCStrings _VkCmdBlitImage
+
+type VkCmdBlitImage = "vkCmdBlitImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdBlitImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageBlit* pRegions
+-- >     , VkFilter filter
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
+--
+-- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
+--           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBlitImage" vkCmdBlitImageUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+
+##else
+vkCmdBlitImageUnsafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkImage -- ^ srcImage
+                               ->
+                         VkImageLayout -- ^ srcImageLayout
+                                       ->
+                           VkImage -- ^ dstImage
+                                   ->
+                             VkImageLayout -- ^ dstImageLayout
+                                           -> Word32 -- ^ regionCount
+                                                     -> Ptr VkImageBlit -- ^ pRegions
+                                                                        -> VkFilter -- ^ filter
+                                                                                    -> IO ()
+vkCmdBlitImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBlitImage)
+
+{-# NOINLINE vkCmdBlitImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdBlitImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageBlit* pRegions
+-- >     , VkFilter filter
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
+--
+-- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
+--           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBlitImage" vkCmdBlitImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+
+##else
+vkCmdBlitImageSafe ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkImage -- ^ srcImage
+                             ->
+                       VkImageLayout -- ^ srcImageLayout
+                                     ->
+                         VkImage -- ^ dstImage
+                                 ->
+                           VkImageLayout -- ^ dstImageLayout
+                                         -> Word32 -- ^ regionCount
+                                                   -> Ptr VkImageBlit -- ^ pRegions
+                                                                      -> VkFilter -- ^ filter
+                                                                                  -> IO ()
+vkCmdBlitImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBlitImage)
+
+{-# NOINLINE vkCmdBlitImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdBlitImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageBlit* pRegions
+-- >     , VkFilter filter
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBlitImage <- vkGetInstanceProc @VkCmdBlitImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBlitImage <- vkGetProc @VkCmdBlitImage
+--
+-- __Note:__ @vkCmdBlitImageUnsafe@ and @vkCmdBlitImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBlitImage@ is an alias
+--           of @vkCmdBlitImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBlitImageSafe@.
+--
+vkCmdBlitImage ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             ->
+                       VkImageLayout -- ^ dstImageLayout
+                                     -> Word32 -- ^ regionCount
+                                               -> Ptr VkImageBlit -- ^ pRegions
+                                                                  -> VkFilter -- ^ filter
+                                                                              -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBlitImage = vkCmdBlitImageUnsafe
+##else
+vkCmdBlitImage = vkCmdBlitImageSafe
+
+##endif
+{-# INLINE vkCmdBlitImage #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdBlitImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageBlit* pRegions
+--   >     , VkFilter filter
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBlitImage vkCmdBlitImage registry at www.khronos.org>
+type HS_vkCmdBlitImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   ->
+             VkImageLayout -- ^ dstImageLayout
+                           -> Word32 -- ^ regionCount
+                                     -> Ptr VkImageBlit -- ^ pRegions
+                                                        -> VkFilter -- ^ filter
+                                                                    -> IO ()
+
+type PFN_vkCmdBlitImage = FunPtr HS_vkCmdBlitImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBlitImageUnsafe ::
+               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdBlitImageSafe ::
+               PFN_vkCmdBlitImage -> HS_vkCmdBlitImage
+
+instance VulkanProc "vkCmdBlitImage" where
+    type VkProcType "vkCmdBlitImage" = HS_vkCmdBlitImage
+    vkProcSymbol = _VkCmdBlitImage
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdBlitImageUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdBlitImageSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyBufferToImage :: CString
+
+pattern VkCmdCopyBufferToImage <-
+        (is_VkCmdCopyBufferToImage -> True)
+  where
+    VkCmdCopyBufferToImage = _VkCmdCopyBufferToImage
+
+{-# INLINE _VkCmdCopyBufferToImage #-}
+
+_VkCmdCopyBufferToImage :: CString
+_VkCmdCopyBufferToImage = Ptr "vkCmdCopyBufferToImage\NUL"##
+
+{-# INLINE is_VkCmdCopyBufferToImage #-}
+
+is_VkCmdCopyBufferToImage :: CString -> Bool
+is_VkCmdCopyBufferToImage
+  = (EQ ==) . cmpCStrings _VkCmdCopyBufferToImage
+
+type VkCmdCopyBufferToImage = "vkCmdCopyBufferToImage"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBufferToImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
+--
+-- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
+--           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyBufferToImage"
+               vkCmdCopyBufferToImageUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          ->
+                   VkImage -- ^ dstImage
+                           ->
+                     VkImageLayout -- ^ dstImageLayout
+                                   -> Word32 -- ^ regionCount
+                                             -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                      -> IO ()
+
+##else
+vkCmdCopyBufferToImageUnsafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               VkBuffer -- ^ srcBuffer
+                                        ->
+                                 VkImage -- ^ dstImage
+                                         ->
+                                   VkImageLayout -- ^ dstImageLayout
+                                                 -> Word32 -- ^ regionCount
+                                                           -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                                    -> IO ()
+vkCmdCopyBufferToImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyBufferToImage)
+
+{-# NOINLINE vkCmdCopyBufferToImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBufferToImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
+--
+-- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
+--           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyBufferToImage"
+               vkCmdCopyBufferToImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ srcBuffer
+                          ->
+                   VkImage -- ^ dstImage
+                           ->
+                     VkImageLayout -- ^ dstImageLayout
+                                   -> Word32 -- ^ regionCount
+                                             -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                      -> IO ()
+
+##else
+vkCmdCopyBufferToImageSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkBuffer -- ^ srcBuffer
+                                      ->
+                               VkImage -- ^ dstImage
+                                       ->
+                                 VkImageLayout -- ^ dstImageLayout
+                                               -> Word32 -- ^ regionCount
+                                                         -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                                  -> IO ()
+vkCmdCopyBufferToImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyBufferToImage)
+
+{-# NOINLINE vkCmdCopyBufferToImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyBufferToImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer srcBuffer
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyBufferToImage <- vkGetInstanceProc @VkCmdCopyBufferToImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyBufferToImage <- vkGetProc @VkCmdCopyBufferToImage
+--
+-- __Note:__ @vkCmdCopyBufferToImageUnsafe@ and @vkCmdCopyBufferToImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyBufferToImage@ is an alias
+--           of @vkCmdCopyBufferToImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyBufferToImageSafe@.
+--
+vkCmdCopyBufferToImage ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkBuffer -- ^ srcBuffer
+                                  ->
+                           VkImage -- ^ dstImage
+                                   ->
+                             VkImageLayout -- ^ dstImageLayout
+                                           -> Word32 -- ^ regionCount
+                                                     -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                              -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyBufferToImage = vkCmdCopyBufferToImageUnsafe
+##else
+vkCmdCopyBufferToImage = vkCmdCopyBufferToImageSafe
+
+##endif
+{-# INLINE vkCmdCopyBufferToImage #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyBufferToImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer srcBuffer
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkBufferImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyBufferToImage vkCmdCopyBufferToImage registry at www.khronos.org>
+type HS_vkCmdCopyBufferToImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ srcBuffer
+                ->
+         VkImage -- ^ dstImage
+                 ->
+           VkImageLayout -- ^ dstImageLayout
+                         -> Word32 -- ^ regionCount
+                                   -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                            -> IO ()
+
+type PFN_vkCmdCopyBufferToImage = FunPtr HS_vkCmdCopyBufferToImage
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdCopyBufferToImageUnsafe ::
+               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyBufferToImageSafe ::
+               PFN_vkCmdCopyBufferToImage -> HS_vkCmdCopyBufferToImage
+
+instance VulkanProc "vkCmdCopyBufferToImage" where
+    type VkProcType "vkCmdCopyBufferToImage" =
+         HS_vkCmdCopyBufferToImage
+    vkProcSymbol = _VkCmdCopyBufferToImage
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdCopyBufferToImageUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdCopyBufferToImageSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyImageToBuffer :: CString
+
+pattern VkCmdCopyImageToBuffer <-
+        (is_VkCmdCopyImageToBuffer -> True)
+  where
+    VkCmdCopyImageToBuffer = _VkCmdCopyImageToBuffer
+
+{-# INLINE _VkCmdCopyImageToBuffer #-}
+
+_VkCmdCopyImageToBuffer :: CString
+_VkCmdCopyImageToBuffer = Ptr "vkCmdCopyImageToBuffer\NUL"##
+
+{-# INLINE is_VkCmdCopyImageToBuffer #-}
+
+is_VkCmdCopyImageToBuffer :: CString -> Bool
+is_VkCmdCopyImageToBuffer
+  = (EQ ==) . cmpCStrings _VkCmdCopyImageToBuffer
+
+type VkCmdCopyImageToBuffer = "vkCmdCopyImageToBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImageToBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
+--
+-- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
+--           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyImageToBuffer"
+               vkCmdCopyImageToBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkBuffer -- ^ dstBuffer
+                              -> Word32 -- ^ regionCount
+                                        -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+##else
+vkCmdCopyImageToBufferUnsafe ::
+                             VkCommandBuffer -- ^ commandBuffer
+                                             ->
+                               VkImage -- ^ srcImage
+                                       ->
+                                 VkImageLayout -- ^ srcImageLayout
+                                               ->
+                                   VkBuffer -- ^ dstBuffer
+                                            -> Word32 -- ^ regionCount
+                                                      -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                               -> IO ()
+vkCmdCopyImageToBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdCopyImageToBuffer)
+
+{-# NOINLINE vkCmdCopyImageToBufferUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImageToBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
+--
+-- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
+--           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyImageToBuffer"
+               vkCmdCopyImageToBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkBuffer -- ^ dstBuffer
+                              -> Word32 -- ^ regionCount
+                                        -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                 -> IO ()
+
+##else
+vkCmdCopyImageToBufferSafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkImage -- ^ srcImage
+                                     ->
+                               VkImageLayout -- ^ srcImageLayout
+                                             ->
+                                 VkBuffer -- ^ dstBuffer
+                                          -> Word32 -- ^ regionCount
+                                                    -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                             -> IO ()
+vkCmdCopyImageToBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyImageToBuffer)
+
+{-# NOINLINE vkCmdCopyImageToBufferSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyImageToBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkBuffer dstBuffer
+-- >     , uint32_t regionCount
+-- >     , const VkBufferImageCopy* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyImageToBuffer <- vkGetInstanceProc @VkCmdCopyImageToBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyImageToBuffer <- vkGetProc @VkCmdCopyImageToBuffer
+--
+-- __Note:__ @vkCmdCopyImageToBufferUnsafe@ and @vkCmdCopyImageToBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyImageToBuffer@ is an alias
+--           of @vkCmdCopyImageToBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyImageToBufferSafe@.
+--
+vkCmdCopyImageToBuffer ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkImage -- ^ srcImage
+                                 ->
+                           VkImageLayout -- ^ srcImageLayout
+                                         ->
+                             VkBuffer -- ^ dstBuffer
+                                      -> Word32 -- ^ regionCount
+                                                -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyImageToBuffer = vkCmdCopyImageToBufferUnsafe
+##else
+vkCmdCopyImageToBuffer = vkCmdCopyImageToBufferSafe
+
+##endif
+{-# INLINE vkCmdCopyImageToBuffer #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyImageToBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkBuffer dstBuffer
+--   >     , uint32_t regionCount
+--   >     , const VkBufferImageCopy* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer registry at www.khronos.org>
+type HS_vkCmdCopyImageToBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkBuffer -- ^ dstBuffer
+                    -> Word32 -- ^ regionCount
+                              -> Ptr VkBufferImageCopy -- ^ pRegions
+                                                       -> IO ()
+
+type PFN_vkCmdCopyImageToBuffer = FunPtr HS_vkCmdCopyImageToBuffer
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdCopyImageToBufferUnsafe ::
+               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyImageToBufferSafe ::
+               PFN_vkCmdCopyImageToBuffer -> HS_vkCmdCopyImageToBuffer
+
+instance VulkanProc "vkCmdCopyImageToBuffer" where
+    type VkProcType "vkCmdCopyImageToBuffer" =
+         HS_vkCmdCopyImageToBuffer
+    vkProcSymbol = _VkCmdCopyImageToBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdCopyImageToBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdCopyImageToBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdUpdateBuffer :: CString
+
+pattern VkCmdUpdateBuffer <- (is_VkCmdUpdateBuffer -> True)
+  where
+    VkCmdUpdateBuffer = _VkCmdUpdateBuffer
+
+{-# INLINE _VkCmdUpdateBuffer #-}
+
+_VkCmdUpdateBuffer :: CString
+_VkCmdUpdateBuffer = Ptr "vkCmdUpdateBuffer\NUL"##
+
+{-# INLINE is_VkCmdUpdateBuffer #-}
+
+is_VkCmdUpdateBuffer :: CString -> Bool
+is_VkCmdUpdateBuffer = (EQ ==) . cmpCStrings _VkCmdUpdateBuffer
+
+type VkCmdUpdateBuffer = "vkCmdUpdateBuffer"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdUpdateBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize dataSize
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
+--
+-- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
+--           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdUpdateBuffer"
+               vkCmdUpdateBufferUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ dataSize
+                                                          -> Ptr Void -- ^ pData
+                                                                      -> IO ()
+
+##else
+vkCmdUpdateBufferUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkBuffer -- ^ dstBuffer
+                                   -> VkDeviceSize -- ^ dstOffset
+                                                   -> VkDeviceSize -- ^ dataSize
+                                                                   -> Ptr Void -- ^ pData
+                                                                               -> IO ()
+vkCmdUpdateBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdUpdateBuffer)
+
+{-# NOINLINE vkCmdUpdateBufferUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdUpdateBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize dataSize
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
+--
+-- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
+--           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdUpdateBuffer" vkCmdUpdateBufferSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ dataSize
+                                                          -> Ptr Void -- ^ pData
+                                                                      -> IO ()
+
+##else
+vkCmdUpdateBufferSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ dstBuffer
+                                 -> VkDeviceSize -- ^ dstOffset
+                                                 -> VkDeviceSize -- ^ dataSize
+                                                                 -> Ptr Void -- ^ pData
+                                                                             -> IO ()
+vkCmdUpdateBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdUpdateBuffer)
+
+{-# NOINLINE vkCmdUpdateBufferSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdUpdateBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize dataSize
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdUpdateBuffer <- vkGetInstanceProc @VkCmdUpdateBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdUpdateBuffer <- vkGetProc @VkCmdUpdateBuffer
+--
+-- __Note:__ @vkCmdUpdateBufferUnsafe@ and @vkCmdUpdateBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdUpdateBuffer@ is an alias
+--           of @vkCmdUpdateBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdUpdateBufferSafe@.
+--
+vkCmdUpdateBuffer ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkBuffer -- ^ dstBuffer
+                             -> VkDeviceSize -- ^ dstOffset
+                                             -> VkDeviceSize -- ^ dataSize
+                                                             -> Ptr Void -- ^ pData
+                                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdUpdateBuffer = vkCmdUpdateBufferUnsafe
+##else
+vkCmdUpdateBuffer = vkCmdUpdateBufferSafe
+
+##endif
+{-# INLINE vkCmdUpdateBuffer #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdUpdateBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize dataSize
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdUpdateBuffer vkCmdUpdateBuffer registry at www.khronos.org>
+type HS_vkCmdUpdateBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ dstBuffer
+                -> VkDeviceSize -- ^ dstOffset
+                                -> VkDeviceSize -- ^ dataSize
+                                                -> Ptr Void -- ^ pData
+                                                            -> IO ()
+
+type PFN_vkCmdUpdateBuffer = FunPtr HS_vkCmdUpdateBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdUpdateBufferUnsafe
+               :: PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdUpdateBufferSafe ::
+               PFN_vkCmdUpdateBuffer -> HS_vkCmdUpdateBuffer
+
+instance VulkanProc "vkCmdUpdateBuffer" where
+    type VkProcType "vkCmdUpdateBuffer" = HS_vkCmdUpdateBuffer
+    vkProcSymbol = _VkCmdUpdateBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdUpdateBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdUpdateBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdFillBuffer :: CString
+
+pattern VkCmdFillBuffer <- (is_VkCmdFillBuffer -> True)
+  where
+    VkCmdFillBuffer = _VkCmdFillBuffer
+
+{-# INLINE _VkCmdFillBuffer #-}
+
+_VkCmdFillBuffer :: CString
+_VkCmdFillBuffer = Ptr "vkCmdFillBuffer\NUL"##
+
+{-# INLINE is_VkCmdFillBuffer #-}
+
+is_VkCmdFillBuffer :: CString -> Bool
+is_VkCmdFillBuffer = (EQ ==) . cmpCStrings _VkCmdFillBuffer
+
+type VkCmdFillBuffer = "vkCmdFillBuffer"
+
+-- |
+-- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdFillBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize size
+-- >     , uint32_t data
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
+--
+-- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
+--           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdFillBuffer" vkCmdFillBufferUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ size
+                                                          -> Word32 -- ^ data
+                                                                    -> IO ()
+
+##else
+vkCmdFillBufferUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkBuffer -- ^ dstBuffer
+                                 -> VkDeviceSize -- ^ dstOffset
+                                                 -> VkDeviceSize -- ^ size
+                                                                 -> Word32 -- ^ data
+                                                                           -> IO ()
+vkCmdFillBufferUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdFillBuffer)
+
+{-# NOINLINE vkCmdFillBufferUnsafe #-}
+##endif
+
+-- |
+-- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdFillBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize size
+-- >     , uint32_t data
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
+--
+-- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
+--           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdFillBuffer" vkCmdFillBufferSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkBuffer -- ^ dstBuffer
+                          -> VkDeviceSize -- ^ dstOffset
+                                          -> VkDeviceSize -- ^ size
+                                                          -> Word32 -- ^ data
+                                                                    -> IO ()
+
+##else
+vkCmdFillBufferSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkBuffer -- ^ dstBuffer
+                               -> VkDeviceSize -- ^ dstOffset
+                                               -> VkDeviceSize -- ^ size
+                                                               -> Word32 -- ^ data
+                                                                         -> IO ()
+vkCmdFillBufferSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdFillBuffer)
+
+{-# NOINLINE vkCmdFillBufferSafe #-}
+##endif
+
+-- |
+-- transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdFillBuffer
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize size
+-- >     , uint32_t data
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdFillBuffer <- vkGetInstanceProc @VkCmdFillBuffer vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdFillBuffer <- vkGetProc @VkCmdFillBuffer
+--
+-- __Note:__ @vkCmdFillBufferUnsafe@ and @vkCmdFillBufferSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdFillBuffer@ is an alias
+--           of @vkCmdFillBufferUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdFillBufferSafe@.
+--
+vkCmdFillBuffer ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkBuffer -- ^ dstBuffer
+                           -> VkDeviceSize -- ^ dstOffset
+                                           -> VkDeviceSize -- ^ size
+                                                           -> Word32 -- ^ data
+                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdFillBuffer = vkCmdFillBufferUnsafe
+##else
+vkCmdFillBuffer = vkCmdFillBufferSafe
+
+##endif
+{-# INLINE vkCmdFillBuffer #-}
+
+-- | transfer support is only available when VK_KHR_maintenance1 is enabled, as documented in valid usage language in the specification
+--
+--   Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdFillBuffer
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize size
+--   >     , uint32_t data
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdFillBuffer vkCmdFillBuffer registry at www.khronos.org>
+type HS_vkCmdFillBuffer =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkBuffer -- ^ dstBuffer
+                -> VkDeviceSize -- ^ dstOffset
+                                -> VkDeviceSize -- ^ size
+                                                -> Word32 -- ^ data
+                                                          -> IO ()
+
+type PFN_vkCmdFillBuffer = FunPtr HS_vkCmdFillBuffer
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdFillBufferUnsafe
+               :: PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
+
+foreign import ccall safe "dynamic" unwrapVkCmdFillBufferSafe ::
+               PFN_vkCmdFillBuffer -> HS_vkCmdFillBuffer
+
+instance VulkanProc "vkCmdFillBuffer" where
+    type VkProcType "vkCmdFillBuffer" = HS_vkCmdFillBuffer
+    vkProcSymbol = _VkCmdFillBuffer
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdFillBufferUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdFillBufferSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearColorImage :: CString
+
+pattern VkCmdClearColorImage <- (is_VkCmdClearColorImage -> True)
+  where
+    VkCmdClearColorImage = _VkCmdClearColorImage
+
+{-# INLINE _VkCmdClearColorImage #-}
+
+_VkCmdClearColorImage :: CString
+_VkCmdClearColorImage = Ptr "vkCmdClearColorImage\NUL"##
+
+{-# INLINE is_VkCmdClearColorImage #-}
+
+is_VkCmdClearColorImage :: CString -> Bool
+is_VkCmdClearColorImage
+  = (EQ ==) . cmpCStrings _VkCmdClearColorImage
+
+type VkCmdClearColorImage = "vkCmdClearColorImage"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearColorImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearColorValue* pColor
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
+--
+-- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
+--           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearColorImage"
+               vkCmdClearColorImageUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearColorValue -- ^ pColor
+                                           ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearColorImageUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkImage -- ^ image
+                                     ->
+                               VkImageLayout -- ^ imageLayout
+                                             ->
+                                 Ptr VkClearColorValue -- ^ pColor
+                                                       ->
+                                   Word32 -- ^ rangeCount
+                                          -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                         -> IO ()
+vkCmdClearColorImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdClearColorImage)
+
+{-# NOINLINE vkCmdClearColorImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearColorImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearColorValue* pColor
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
+--
+-- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
+--           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearColorImage"
+               vkCmdClearColorImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearColorValue -- ^ pColor
+                                           ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearColorImageSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkImage -- ^ image
+                                   ->
+                             VkImageLayout -- ^ imageLayout
+                                           ->
+                               Ptr VkClearColorValue -- ^ pColor
+                                                     ->
+                                 Word32 -- ^ rangeCount
+                                        -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                       -> IO ()
+vkCmdClearColorImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearColorImage)
+
+{-# NOINLINE vkCmdClearColorImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearColorImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearColorValue* pColor
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearColorImage <- vkGetInstanceProc @VkCmdClearColorImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearColorImage <- vkGetProc @VkCmdClearColorImage
+--
+-- __Note:__ @vkCmdClearColorImageUnsafe@ and @vkCmdClearColorImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearColorImage@ is an alias
+--           of @vkCmdClearColorImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearColorImageSafe@.
+--
+vkCmdClearColorImage ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkImage -- ^ image
+                               ->
+                         VkImageLayout -- ^ imageLayout
+                                       ->
+                           Ptr VkClearColorValue -- ^ pColor
+                                                 ->
+                             Word32 -- ^ rangeCount
+                                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                   -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdClearColorImage = vkCmdClearColorImageUnsafe
+##else
+vkCmdClearColorImage = vkCmdClearColorImageSafe
+
+##endif
+{-# INLINE vkCmdClearColorImage #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdClearColorImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage image
+--   >     , VkImageLayout imageLayout
+--   >     , const VkClearColorValue* pColor
+--   >     , uint32_t rangeCount
+--   >     , const VkImageSubresourceRange* pRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearColorImage vkCmdClearColorImage registry at www.khronos.org>
+type HS_vkCmdClearColorImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ image
+               ->
+         VkImageLayout -- ^ imageLayout
+                       ->
+           Ptr VkClearColorValue -- ^ pColor
+                                 ->
+             Word32 -- ^ rangeCount
+                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                   -> IO ()
+
+type PFN_vkCmdClearColorImage = FunPtr HS_vkCmdClearColorImage
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdClearColorImageUnsafe ::
+               PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdClearColorImageSafe
+               :: PFN_vkCmdClearColorImage -> HS_vkCmdClearColorImage
+
+instance VulkanProc "vkCmdClearColorImage" where
+    type VkProcType "vkCmdClearColorImage" = HS_vkCmdClearColorImage
+    vkProcSymbol = _VkCmdClearColorImage
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdClearColorImageUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdClearColorImageSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearDepthStencilImage :: CString
+
+pattern VkCmdClearDepthStencilImage <-
+        (is_VkCmdClearDepthStencilImage -> True)
+  where
+    VkCmdClearDepthStencilImage = _VkCmdClearDepthStencilImage
+
+{-# INLINE _VkCmdClearDepthStencilImage #-}
+
+_VkCmdClearDepthStencilImage :: CString
+_VkCmdClearDepthStencilImage
+  = Ptr "vkCmdClearDepthStencilImage\NUL"##
+
+{-# INLINE is_VkCmdClearDepthStencilImage #-}
+
+is_VkCmdClearDepthStencilImage :: CString -> Bool
+is_VkCmdClearDepthStencilImage
+  = (EQ ==) . cmpCStrings _VkCmdClearDepthStencilImage
+
+type VkCmdClearDepthStencilImage = "vkCmdClearDepthStencilImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearDepthStencilImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearDepthStencilValue* pDepthStencil
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
+--
+-- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
+--           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearDepthStencilImage"
+               vkCmdClearDepthStencilImageUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                  ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearDepthStencilImageUnsafe ::
+                                  VkCommandBuffer -- ^ commandBuffer
+                                                  ->
+                                    VkImage -- ^ image
+                                            ->
+                                      VkImageLayout -- ^ imageLayout
+                                                    ->
+                                        Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                                     ->
+                                          Word32 -- ^ rangeCount
+                                                 -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                                -> IO ()
+vkCmdClearDepthStencilImageUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdClearDepthStencilImage)
+
+{-# NOINLINE vkCmdClearDepthStencilImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearDepthStencilImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearDepthStencilValue* pDepthStencil
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
+--
+-- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
+--           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearDepthStencilImage"
+               vkCmdClearDepthStencilImageSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ image
+                         ->
+                   VkImageLayout -- ^ imageLayout
+                                 ->
+                     Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                  ->
+                       Word32 -- ^ rangeCount
+                              -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                             -> IO ()
+
+##else
+vkCmdClearDepthStencilImageSafe ::
+                                VkCommandBuffer -- ^ commandBuffer
+                                                ->
+                                  VkImage -- ^ image
+                                          ->
+                                    VkImageLayout -- ^ imageLayout
+                                                  ->
+                                      Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                                   ->
+                                        Word32 -- ^ rangeCount
+                                               -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                              -> IO ()
+vkCmdClearDepthStencilImageSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCmdClearDepthStencilImage)
+
+{-# NOINLINE vkCmdClearDepthStencilImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdClearDepthStencilImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage image
+-- >     , VkImageLayout imageLayout
+-- >     , const VkClearDepthStencilValue* pDepthStencil
+-- >     , uint32_t rangeCount
+-- >     , const VkImageSubresourceRange* pRanges
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearDepthStencilImage <- vkGetInstanceProc @VkCmdClearDepthStencilImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearDepthStencilImage <- vkGetProc @VkCmdClearDepthStencilImage
+--
+-- __Note:__ @vkCmdClearDepthStencilImageUnsafe@ and @vkCmdClearDepthStencilImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearDepthStencilImage@ is an alias
+--           of @vkCmdClearDepthStencilImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearDepthStencilImageSafe@.
+--
+vkCmdClearDepthStencilImage ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            ->
+                              VkImage -- ^ image
+                                      ->
+                                VkImageLayout -- ^ imageLayout
+                                              ->
+                                  Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                                               ->
+                                    Word32 -- ^ rangeCount
+                                           -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdClearDepthStencilImage = vkCmdClearDepthStencilImageUnsafe
+##else
+vkCmdClearDepthStencilImage = vkCmdClearDepthStencilImageSafe
+
+##endif
+{-# INLINE vkCmdClearDepthStencilImage #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdClearDepthStencilImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage image
+--   >     , VkImageLayout imageLayout
+--   >     , const VkClearDepthStencilValue* pDepthStencil
+--   >     , uint32_t rangeCount
+--   >     , const VkImageSubresourceRange* pRanges
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage registry at www.khronos.org>
+type HS_vkCmdClearDepthStencilImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ image
+               ->
+         VkImageLayout -- ^ imageLayout
+                       ->
+           Ptr VkClearDepthStencilValue -- ^ pDepthStencil
+                                        ->
+             Word32 -- ^ rangeCount
+                    -> Ptr VkImageSubresourceRange -- ^ pRanges
+                                                   -> IO ()
+
+type PFN_vkCmdClearDepthStencilImage =
+     FunPtr HS_vkCmdClearDepthStencilImage
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdClearDepthStencilImageUnsafe ::
+               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdClearDepthStencilImageSafe ::
+               PFN_vkCmdClearDepthStencilImage -> HS_vkCmdClearDepthStencilImage
+
+instance VulkanProc "vkCmdClearDepthStencilImage" where
+    type VkProcType "vkCmdClearDepthStencilImage" =
+         HS_vkCmdClearDepthStencilImage
+    vkProcSymbol = _VkCmdClearDepthStencilImage
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdClearDepthStencilImageUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdClearDepthStencilImageSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdClearAttachments :: CString
+
+pattern VkCmdClearAttachments <- (is_VkCmdClearAttachments -> True)
+  where
+    VkCmdClearAttachments = _VkCmdClearAttachments
+
+{-# INLINE _VkCmdClearAttachments #-}
+
+_VkCmdClearAttachments :: CString
+_VkCmdClearAttachments = Ptr "vkCmdClearAttachments\NUL"##
+
+{-# INLINE is_VkCmdClearAttachments #-}
+
+is_VkCmdClearAttachments :: CString -> Bool
+is_VkCmdClearAttachments
+  = (EQ ==) . cmpCStrings _VkCmdClearAttachments
+
+type VkCmdClearAttachments = "vkCmdClearAttachments"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdClearAttachments
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t attachmentCount
+-- >     , const VkClearAttachment* pAttachments
+-- >     , uint32_t rectCount
+-- >     , const VkClearRect* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
+--
+-- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
+--           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdClearAttachments"
+               vkCmdClearAttachmentsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ attachmentCount
+                        ->
+                   Ptr VkClearAttachment -- ^ pAttachments
+                                         -> Word32 -- ^ rectCount
+                                                   -> Ptr VkClearRect -- ^ pRects
+                                                                      -> IO ()
+
+##else
+vkCmdClearAttachmentsUnsafe ::
+                            VkCommandBuffer -- ^ commandBuffer
+                                            ->
+                              Word32 -- ^ attachmentCount
+                                     ->
+                                Ptr VkClearAttachment -- ^ pAttachments
+                                                      -> Word32 -- ^ rectCount
+                                                                -> Ptr VkClearRect -- ^ pRects
+                                                                                   -> IO ()
+vkCmdClearAttachmentsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdClearAttachments)
+
+{-# NOINLINE vkCmdClearAttachmentsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdClearAttachments
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t attachmentCount
+-- >     , const VkClearAttachment* pAttachments
+-- >     , uint32_t rectCount
+-- >     , const VkClearRect* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
+--
+-- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
+--           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdClearAttachments"
+               vkCmdClearAttachmentsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ attachmentCount
+                        ->
+                   Ptr VkClearAttachment -- ^ pAttachments
+                                         -> Word32 -- ^ rectCount
+                                                   -> Ptr VkClearRect -- ^ pRects
+                                                                      -> IO ()
+
+##else
+vkCmdClearAttachmentsSafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            Word32 -- ^ attachmentCount
+                                   ->
+                              Ptr VkClearAttachment -- ^ pAttachments
+                                                    -> Word32 -- ^ rectCount
+                                                              -> Ptr VkClearRect -- ^ pRects
+                                                                                 -> IO ()
+vkCmdClearAttachmentsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdClearAttachments)
+
+{-# NOINLINE vkCmdClearAttachmentsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdClearAttachments
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t attachmentCount
+-- >     , const VkClearAttachment* pAttachments
+-- >     , uint32_t rectCount
+-- >     , const VkClearRect* pRects
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdClearAttachments <- vkGetInstanceProc @VkCmdClearAttachments vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdClearAttachments <- vkGetProc @VkCmdClearAttachments
+--
+-- __Note:__ @vkCmdClearAttachmentsUnsafe@ and @vkCmdClearAttachmentsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdClearAttachments@ is an alias
+--           of @vkCmdClearAttachmentsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdClearAttachmentsSafe@.
+--
+vkCmdClearAttachments ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        Word32 -- ^ attachmentCount
+                               ->
+                          Ptr VkClearAttachment -- ^ pAttachments
+                                                -> Word32 -- ^ rectCount
+                                                          -> Ptr VkClearRect -- ^ pRects
+                                                                             -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdClearAttachments = vkCmdClearAttachmentsUnsafe
+##else
+vkCmdClearAttachments = vkCmdClearAttachmentsSafe
+
+##endif
+{-# INLINE vkCmdClearAttachments #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdClearAttachments
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t attachmentCount
+--   >     , const VkClearAttachment* pAttachments
+--   >     , uint32_t rectCount
+--   >     , const VkClearRect* pRects
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdClearAttachments vkCmdClearAttachments registry at www.khronos.org>
+type HS_vkCmdClearAttachments =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ attachmentCount
+              ->
+         Ptr VkClearAttachment -- ^ pAttachments
+                               -> Word32 -- ^ rectCount
+                                         -> Ptr VkClearRect -- ^ pRects
+                                                            -> IO ()
+
+type PFN_vkCmdClearAttachments = FunPtr HS_vkCmdClearAttachments
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdClearAttachmentsUnsafe ::
+               PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
+
+foreign import ccall safe "dynamic" unwrapVkCmdClearAttachmentsSafe
+               :: PFN_vkCmdClearAttachments -> HS_vkCmdClearAttachments
+
+instance VulkanProc "vkCmdClearAttachments" where
+    type VkProcType "vkCmdClearAttachments" = HS_vkCmdClearAttachments
+    vkProcSymbol = _VkCmdClearAttachments
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdClearAttachmentsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdClearAttachmentsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResolveImage :: CString
+
+pattern VkCmdResolveImage <- (is_VkCmdResolveImage -> True)
+  where
+    VkCmdResolveImage = _VkCmdResolveImage
+
+{-# INLINE _VkCmdResolveImage #-}
+
+_VkCmdResolveImage :: CString
+_VkCmdResolveImage = Ptr "vkCmdResolveImage\NUL"##
+
+{-# INLINE is_VkCmdResolveImage #-}
+
+is_VkCmdResolveImage :: CString -> Bool
+is_VkCmdResolveImage = (EQ ==) . cmpCStrings _VkCmdResolveImage
+
+type VkCmdResolveImage = "vkCmdResolveImage"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdResolveImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageResolve* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
+--
+-- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
+--           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResolveImage"
+               vkCmdResolveImageUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageResolve -- ^ pRegions
+                                                                              -> IO ()
+
+##else
+vkCmdResolveImageUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkImage -- ^ srcImage
+                                  ->
+                            VkImageLayout -- ^ srcImageLayout
+                                          ->
+                              VkImage -- ^ dstImage
+                                      -> VkImageLayout -- ^ dstImageLayout
+                                                       -> Word32 -- ^ regionCount
+                                                                 -> Ptr VkImageResolve -- ^ pRegions
+                                                                                       -> IO ()
+vkCmdResolveImageUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResolveImage)
+
+{-# NOINLINE vkCmdResolveImageUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdResolveImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageResolve* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
+--
+-- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
+--           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResolveImage" vkCmdResolveImageSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkImage -- ^ srcImage
+                         ->
+                   VkImageLayout -- ^ srcImageLayout
+                                 ->
+                     VkImage -- ^ dstImage
+                             -> VkImageLayout -- ^ dstImageLayout
+                                              -> Word32 -- ^ regionCount
+                                                        -> Ptr VkImageResolve -- ^ pRegions
+                                                                              -> IO ()
+
+##else
+vkCmdResolveImageSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkImage -- ^ srcImage
+                                ->
+                          VkImageLayout -- ^ srcImageLayout
+                                        ->
+                            VkImage -- ^ dstImage
+                                    -> VkImageLayout -- ^ dstImageLayout
+                                                     -> Word32 -- ^ regionCount
+                                                               -> Ptr VkImageResolve -- ^ pRegions
+                                                                                     -> IO ()
+vkCmdResolveImageSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResolveImage)
+
+{-# NOINLINE vkCmdResolveImageSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdResolveImage
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkImage srcImage
+-- >     , VkImageLayout srcImageLayout
+-- >     , VkImage dstImage
+-- >     , VkImageLayout dstImageLayout
+-- >     , uint32_t regionCount
+-- >     , const VkImageResolve* pRegions
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResolveImage <- vkGetInstanceProc @VkCmdResolveImage vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResolveImage <- vkGetProc @VkCmdResolveImage
+--
+-- __Note:__ @vkCmdResolveImageUnsafe@ and @vkCmdResolveImageSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResolveImage@ is an alias
+--           of @vkCmdResolveImageUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResolveImageSafe@.
+--
+vkCmdResolveImage ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    VkImage -- ^ srcImage
+                            ->
+                      VkImageLayout -- ^ srcImageLayout
+                                    ->
+                        VkImage -- ^ dstImage
+                                -> VkImageLayout -- ^ dstImageLayout
+                                                 -> Word32 -- ^ regionCount
+                                                           -> Ptr VkImageResolve -- ^ pRegions
+                                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdResolveImage = vkCmdResolveImageUnsafe
+##else
+vkCmdResolveImage = vkCmdResolveImageSafe
+
+##endif
+{-# INLINE vkCmdResolveImage #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdResolveImage
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkImage srcImage
+--   >     , VkImageLayout srcImageLayout
+--   >     , VkImage dstImage
+--   >     , VkImageLayout dstImageLayout
+--   >     , uint32_t regionCount
+--   >     , const VkImageResolve* pRegions
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResolveImage vkCmdResolveImage registry at www.khronos.org>
+type HS_vkCmdResolveImage =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkImage -- ^ srcImage
+               ->
+         VkImageLayout -- ^ srcImageLayout
+                       ->
+           VkImage -- ^ dstImage
+                   -> VkImageLayout -- ^ dstImageLayout
+                                    -> Word32 -- ^ regionCount
+                                              -> Ptr VkImageResolve -- ^ pRegions
+                                                                    -> IO ()
+
+type PFN_vkCmdResolveImage = FunPtr HS_vkCmdResolveImage
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdResolveImageUnsafe
+               :: PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
+
+foreign import ccall safe "dynamic" unwrapVkCmdResolveImageSafe ::
+               PFN_vkCmdResolveImage -> HS_vkCmdResolveImage
+
+instance VulkanProc "vkCmdResolveImage" where
+    type VkProcType "vkCmdResolveImage" = HS_vkCmdResolveImage
+    vkProcSymbol = _VkCmdResolveImage
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdResolveImageUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdResolveImageSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetEvent :: CString
+
+pattern VkCmdSetEvent <- (is_VkCmdSetEvent -> True)
+  where
+    VkCmdSetEvent = _VkCmdSetEvent
+
+{-# INLINE _VkCmdSetEvent #-}
+
+_VkCmdSetEvent :: CString
+_VkCmdSetEvent = Ptr "vkCmdSetEvent\NUL"##
+
+{-# INLINE is_VkCmdSetEvent #-}
+
+is_VkCmdSetEvent :: CString -> Bool
+is_VkCmdSetEvent = (EQ ==) . cmpCStrings _VkCmdSetEvent
+
+type VkCmdSetEvent = "vkCmdSetEvent"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdSetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
+--
+-- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
+--           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdSetEvent" vkCmdSetEventUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdSetEventUnsafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkEvent -- ^ event
+                                               -> VkPipelineStageFlags -- ^ stageMask
+                                                                       -> IO ()
+vkCmdSetEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetEvent)
+
+{-# NOINLINE vkCmdSetEventUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdSetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
+--
+-- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
+--           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdSetEvent" vkCmdSetEventSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdSetEventSafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkEvent -- ^ event
+                                             -> VkPipelineStageFlags -- ^ stageMask
+                                                                     -> IO ()
+vkCmdSetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetEvent)
+
+{-# NOINLINE vkCmdSetEventSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdSetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetEvent <- vkGetInstanceProc @VkCmdSetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetEvent <- vkGetProc @VkCmdSetEvent
+--
+-- __Note:__ @vkCmdSetEventUnsafe@ and @vkCmdSetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetEvent@ is an alias
+--           of @vkCmdSetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetEventSafe@.
+--
+vkCmdSetEvent ::
+              VkCommandBuffer -- ^ commandBuffer
+                              -> VkEvent -- ^ event
+                                         -> VkPipelineStageFlags -- ^ stageMask
+                                                                 -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetEvent = vkCmdSetEventUnsafe
+##else
+vkCmdSetEvent = vkCmdSetEventSafe
+
+##endif
+{-# INLINE vkCmdSetEvent #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdSetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetEvent vkCmdSetEvent registry at www.khronos.org>
+type HS_vkCmdSetEvent =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkEvent -- ^ event
+                                -> VkPipelineStageFlags -- ^ stageMask
+                                                        -> IO ()
+
+type PFN_vkCmdSetEvent = FunPtr HS_vkCmdSetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdSetEventUnsafe ::
+               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetEventSafe ::
+               PFN_vkCmdSetEvent -> HS_vkCmdSetEvent
+
+instance VulkanProc "vkCmdSetEvent" where
+    type VkProcType "vkCmdSetEvent" = HS_vkCmdSetEvent
+    vkProcSymbol = _VkCmdSetEvent
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetEventUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetEventSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResetEvent :: CString
+
+pattern VkCmdResetEvent <- (is_VkCmdResetEvent -> True)
+  where
+    VkCmdResetEvent = _VkCmdResetEvent
+
+{-# INLINE _VkCmdResetEvent #-}
+
+_VkCmdResetEvent :: CString
+_VkCmdResetEvent = Ptr "vkCmdResetEvent\NUL"##
+
+{-# INLINE is_VkCmdResetEvent #-}
+
+is_VkCmdResetEvent :: CString -> Bool
+is_VkCmdResetEvent = (EQ ==) . cmpCStrings _VkCmdResetEvent
+
+type VkCmdResetEvent = "vkCmdResetEvent"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
+--
+-- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
+--           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResetEvent" vkCmdResetEventUnsafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkEvent -- ^ event
+                                             -> VkPipelineStageFlags -- ^ stageMask
+                                                                     -> IO ()
+
+##else
+vkCmdResetEventUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      -> VkEvent -- ^ event
+                                                 -> VkPipelineStageFlags -- ^ stageMask
+                                                                         -> IO ()
+vkCmdResetEventUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResetEvent)
+
+{-# NOINLINE vkCmdResetEventUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
+--
+-- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
+--           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResetEvent" vkCmdResetEventSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkEvent -- ^ event
+                                          -> VkPipelineStageFlags -- ^ stageMask
+                                                                  -> IO ()
+
+##else
+vkCmdResetEventSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkEvent -- ^ event
+                                               -> VkPipelineStageFlags -- ^ stageMask
+                                                                       -> IO ()
+vkCmdResetEventSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetEvent)
+
+{-# NOINLINE vkCmdResetEventSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetEvent
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkEvent event
+-- >     , VkPipelineStageFlags stageMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetEvent <- vkGetInstanceProc @VkCmdResetEvent vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetEvent <- vkGetProc @VkCmdResetEvent
+--
+-- __Note:__ @vkCmdResetEventUnsafe@ and @vkCmdResetEventSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetEvent@ is an alias
+--           of @vkCmdResetEventUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetEventSafe@.
+--
+vkCmdResetEvent ::
+                VkCommandBuffer -- ^ commandBuffer
+                                -> VkEvent -- ^ event
+                                           -> VkPipelineStageFlags -- ^ stageMask
+                                                                   -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdResetEvent = vkCmdResetEventUnsafe
+##else
+vkCmdResetEvent = vkCmdResetEventSafe
+
+##endif
+{-# INLINE vkCmdResetEvent #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdResetEvent
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkEvent event
+--   >     , VkPipelineStageFlags stageMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetEvent vkCmdResetEvent registry at www.khronos.org>
+type HS_vkCmdResetEvent =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkEvent -- ^ event
+                                -> VkPipelineStageFlags -- ^ stageMask
+                                                        -> IO ()
+
+type PFN_vkCmdResetEvent = FunPtr HS_vkCmdResetEvent
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdResetEventUnsafe
+               :: PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
+
+foreign import ccall safe "dynamic" unwrapVkCmdResetEventSafe ::
+               PFN_vkCmdResetEvent -> HS_vkCmdResetEvent
+
+instance VulkanProc "vkCmdResetEvent" where
+    type VkProcType "vkCmdResetEvent" = HS_vkCmdResetEvent
+    vkProcSymbol = _VkCmdResetEvent
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdResetEventUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdResetEventSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdWaitEvents :: CString
+
+pattern VkCmdWaitEvents <- (is_VkCmdWaitEvents -> True)
+  where
+    VkCmdWaitEvents = _VkCmdWaitEvents
+
+{-# INLINE _VkCmdWaitEvents #-}
+
+_VkCmdWaitEvents :: CString
+_VkCmdWaitEvents = Ptr "vkCmdWaitEvents\NUL"##
+
+{-# INLINE is_VkCmdWaitEvents #-}
+
+is_VkCmdWaitEvents :: CString -> Bool
+is_VkCmdWaitEvents = (EQ ==) . cmpCStrings _VkCmdWaitEvents
+
+type VkCmdWaitEvents = "vkCmdWaitEvents"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdWaitEvents
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t eventCount
+-- >     , const VkEvent* pEvents
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
+--
+-- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
+--           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdWaitEvents" vkCmdWaitEventsUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ eventCount
+                        ->
+                   Ptr VkEvent -- ^ pEvents
+                               ->
+                     VkPipelineStageFlags -- ^ srcStageMask
+                                          ->
+                       VkPipelineStageFlags -- ^ dstStageMask
+                                            ->
+                         Word32 -- ^ memoryBarrierCount
+                                ->
+                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                               ->
+                             Word32 -- ^ bufferMemoryBarrierCount
+                                    ->
+                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                         ->
+                                 Word32 -- ^ imageMemoryBarrierCount
+                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                    -> IO ()
+
+##else
+vkCmdWaitEventsUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        Word32 -- ^ eventCount
+                               ->
+                          Ptr VkEvent -- ^ pEvents
+                                      ->
+                            VkPipelineStageFlags -- ^ srcStageMask
+                                                 ->
+                              VkPipelineStageFlags -- ^ dstStageMask
+                                                   ->
+                                Word32 -- ^ memoryBarrierCount
+                                       ->
+                                  Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                      ->
+                                    Word32 -- ^ bufferMemoryBarrierCount
+                                           ->
+                                      Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                                ->
+                                        Word32 -- ^ imageMemoryBarrierCount
+                                               -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                           -> IO ()
+vkCmdWaitEventsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdWaitEvents)
+
+{-# NOINLINE vkCmdWaitEventsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdWaitEvents
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t eventCount
+-- >     , const VkEvent* pEvents
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
+--
+-- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
+--           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdWaitEvents" vkCmdWaitEventsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ eventCount
+                        ->
+                   Ptr VkEvent -- ^ pEvents
+                               ->
+                     VkPipelineStageFlags -- ^ srcStageMask
+                                          ->
+                       VkPipelineStageFlags -- ^ dstStageMask
+                                            ->
+                         Word32 -- ^ memoryBarrierCount
+                                ->
+                           Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                               ->
+                             Word32 -- ^ bufferMemoryBarrierCount
+                                    ->
+                               Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                         ->
+                                 Word32 -- ^ imageMemoryBarrierCount
+                                        -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                    -> IO ()
+
+##else
+vkCmdWaitEventsSafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      Word32 -- ^ eventCount
+                             ->
+                        Ptr VkEvent -- ^ pEvents
+                                    ->
+                          VkPipelineStageFlags -- ^ srcStageMask
+                                               ->
+                            VkPipelineStageFlags -- ^ dstStageMask
+                                                 ->
+                              Word32 -- ^ memoryBarrierCount
+                                     ->
+                                Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                    ->
+                                  Word32 -- ^ bufferMemoryBarrierCount
+                                         ->
+                                    Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                              ->
+                                      Word32 -- ^ imageMemoryBarrierCount
+                                             -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                         -> IO ()
+vkCmdWaitEventsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWaitEvents)
+
+{-# NOINLINE vkCmdWaitEventsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdWaitEvents
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t eventCount
+-- >     , const VkEvent* pEvents
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWaitEvents <- vkGetInstanceProc @VkCmdWaitEvents vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWaitEvents <- vkGetProc @VkCmdWaitEvents
+--
+-- __Note:__ @vkCmdWaitEventsUnsafe@ and @vkCmdWaitEventsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWaitEvents@ is an alias
+--           of @vkCmdWaitEventsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWaitEventsSafe@.
+--
+vkCmdWaitEvents ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  Word32 -- ^ eventCount
+                         ->
+                    Ptr VkEvent -- ^ pEvents
+                                ->
+                      VkPipelineStageFlags -- ^ srcStageMask
+                                           ->
+                        VkPipelineStageFlags -- ^ dstStageMask
+                                             ->
+                          Word32 -- ^ memoryBarrierCount
+                                 ->
+                            Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                ->
+                              Word32 -- ^ bufferMemoryBarrierCount
+                                     ->
+                                Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                          ->
+                                  Word32 -- ^ imageMemoryBarrierCount
+                                         -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                     -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdWaitEvents = vkCmdWaitEventsUnsafe
+##else
+vkCmdWaitEvents = vkCmdWaitEventsSafe
+
+##endif
+{-# INLINE vkCmdWaitEvents #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdWaitEvents
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t eventCount
+--   >     , const VkEvent* pEvents
+--   >     , VkPipelineStageFlags srcStageMask
+--   >     , VkPipelineStageFlags dstStageMask
+--   >     , uint32_t memoryBarrierCount
+--   >     , const VkMemoryBarrier* pMemoryBarriers
+--   >     , uint32_t bufferMemoryBarrierCount
+--   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+--   >     , uint32_t imageMemoryBarrierCount
+--   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWaitEvents vkCmdWaitEvents registry at www.khronos.org>
+type HS_vkCmdWaitEvents =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ eventCount
+              ->
+         Ptr VkEvent -- ^ pEvents
+                     ->
+           VkPipelineStageFlags -- ^ srcStageMask
+                                ->
+             VkPipelineStageFlags -- ^ dstStageMask
+                                  ->
+               Word32 -- ^ memoryBarrierCount
+                      ->
+                 Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                     ->
+                   Word32 -- ^ bufferMemoryBarrierCount
+                          ->
+                     Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                               ->
+                       Word32 -- ^ imageMemoryBarrierCount
+                              -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                          -> IO ()
+
+type PFN_vkCmdWaitEvents = FunPtr HS_vkCmdWaitEvents
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdWaitEventsUnsafe
+               :: PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
+
+foreign import ccall safe "dynamic" unwrapVkCmdWaitEventsSafe ::
+               PFN_vkCmdWaitEvents -> HS_vkCmdWaitEvents
+
+instance VulkanProc "vkCmdWaitEvents" where
+    type VkProcType "vkCmdWaitEvents" = HS_vkCmdWaitEvents
+    vkProcSymbol = _VkCmdWaitEvents
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdWaitEventsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdWaitEventsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdPipelineBarrier :: CString
+
+pattern VkCmdPipelineBarrier <- (is_VkCmdPipelineBarrier -> True)
+  where
+    VkCmdPipelineBarrier = _VkCmdPipelineBarrier
+
+{-# INLINE _VkCmdPipelineBarrier #-}
+
+_VkCmdPipelineBarrier :: CString
+_VkCmdPipelineBarrier = Ptr "vkCmdPipelineBarrier\NUL"##
+
+{-# INLINE is_VkCmdPipelineBarrier #-}
+
+is_VkCmdPipelineBarrier :: CString -> Bool
+is_VkCmdPipelineBarrier
+  = (EQ ==) . cmpCStrings _VkCmdPipelineBarrier
+
+type VkCmdPipelineBarrier = "vkCmdPipelineBarrier"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPipelineBarrier
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , VkDependencyFlags dependencyFlags
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
+--
+-- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
+--           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdPipelineBarrier"
+               vkCmdPipelineBarrierUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlags -- ^ srcStageMask
+                                      ->
+                   VkPipelineStageFlags -- ^ dstStageMask
+                                        ->
+                     VkDependencyFlags -- ^ dependencyFlags
+                                       ->
+                       Word32 -- ^ memoryBarrierCount
+                              ->
+                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                             ->
+                           Word32 -- ^ bufferMemoryBarrierCount
+                                  ->
+                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                       ->
+                               Word32 -- ^ imageMemoryBarrierCount
+                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                  -> IO ()
+
+##else
+vkCmdPipelineBarrierUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             VkPipelineStageFlags -- ^ srcStageMask
+                                                  ->
+                               VkPipelineStageFlags -- ^ dstStageMask
+                                                    ->
+                                 VkDependencyFlags -- ^ dependencyFlags
+                                                   ->
+                                   Word32 -- ^ memoryBarrierCount
+                                          ->
+                                     Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                         ->
+                                       Word32 -- ^ bufferMemoryBarrierCount
+                                              ->
+                                         Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                                   ->
+                                           Word32 -- ^ imageMemoryBarrierCount
+                                                  -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                              -> IO ()
+vkCmdPipelineBarrierUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdPipelineBarrier)
+
+{-# NOINLINE vkCmdPipelineBarrierUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPipelineBarrier
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , VkDependencyFlags dependencyFlags
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
+--
+-- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
+--           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdPipelineBarrier"
+               vkCmdPipelineBarrierSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlags -- ^ srcStageMask
+                                      ->
+                   VkPipelineStageFlags -- ^ dstStageMask
+                                        ->
+                     VkDependencyFlags -- ^ dependencyFlags
+                                       ->
+                       Word32 -- ^ memoryBarrierCount
+                              ->
+                         Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                             ->
+                           Word32 -- ^ bufferMemoryBarrierCount
+                                  ->
+                             Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                       ->
+                               Word32 -- ^ imageMemoryBarrierCount
+                                      -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                  -> IO ()
+
+##else
+vkCmdPipelineBarrierSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkPipelineStageFlags -- ^ srcStageMask
+                                                ->
+                             VkPipelineStageFlags -- ^ dstStageMask
+                                                  ->
+                               VkDependencyFlags -- ^ dependencyFlags
+                                                 ->
+                                 Word32 -- ^ memoryBarrierCount
+                                        ->
+                                   Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                       ->
+                                     Word32 -- ^ bufferMemoryBarrierCount
+                                            ->
+                                       Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                                 ->
+                                         Word32 -- ^ imageMemoryBarrierCount
+                                                -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                            -> IO ()
+vkCmdPipelineBarrierSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPipelineBarrier)
+
+{-# NOINLINE vkCmdPipelineBarrierSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPipelineBarrier
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlags srcStageMask
+-- >     , VkPipelineStageFlags dstStageMask
+-- >     , VkDependencyFlags dependencyFlags
+-- >     , uint32_t memoryBarrierCount
+-- >     , const VkMemoryBarrier* pMemoryBarriers
+-- >     , uint32_t bufferMemoryBarrierCount
+-- >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+-- >     , uint32_t imageMemoryBarrierCount
+-- >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPipelineBarrier <- vkGetInstanceProc @VkCmdPipelineBarrier vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPipelineBarrier <- vkGetProc @VkCmdPipelineBarrier
+--
+-- __Note:__ @vkCmdPipelineBarrierUnsafe@ and @vkCmdPipelineBarrierSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPipelineBarrier@ is an alias
+--           of @vkCmdPipelineBarrierUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPipelineBarrierSafe@.
+--
+vkCmdPipelineBarrier ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       VkPipelineStageFlags -- ^ srcStageMask
+                                            ->
+                         VkPipelineStageFlags -- ^ dstStageMask
+                                              ->
+                           VkDependencyFlags -- ^ dependencyFlags
+                                             ->
+                             Word32 -- ^ memoryBarrierCount
+                                    ->
+                               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                                   ->
+                                 Word32 -- ^ bufferMemoryBarrierCount
+                                        ->
+                                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                                             ->
+                                     Word32 -- ^ imageMemoryBarrierCount
+                                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                                        -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdPipelineBarrier = vkCmdPipelineBarrierUnsafe
+##else
+vkCmdPipelineBarrier = vkCmdPipelineBarrierSafe
+
+##endif
+{-# INLINE vkCmdPipelineBarrier #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdPipelineBarrier
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlags srcStageMask
+--   >     , VkPipelineStageFlags dstStageMask
+--   >     , VkDependencyFlags dependencyFlags
+--   >     , uint32_t memoryBarrierCount
+--   >     , const VkMemoryBarrier* pMemoryBarriers
+--   >     , uint32_t bufferMemoryBarrierCount
+--   >     , const VkBufferMemoryBarrier* pBufferMemoryBarriers
+--   >     , uint32_t imageMemoryBarrierCount
+--   >     , const VkImageMemoryBarrier* pImageMemoryBarriers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPipelineBarrier vkCmdPipelineBarrier registry at www.khronos.org>
+type HS_vkCmdPipelineBarrier =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineStageFlags -- ^ srcStageMask
+                            ->
+         VkPipelineStageFlags -- ^ dstStageMask
+                              ->
+           VkDependencyFlags -- ^ dependencyFlags
+                             ->
+             Word32 -- ^ memoryBarrierCount
+                    ->
+               Ptr VkMemoryBarrier -- ^ pMemoryBarriers
+                                   ->
+                 Word32 -- ^ bufferMemoryBarrierCount
+                        ->
+                   Ptr VkBufferMemoryBarrier -- ^ pBufferMemoryBarriers
+                                             ->
+                     Word32 -- ^ imageMemoryBarrierCount
+                            -> Ptr VkImageMemoryBarrier -- ^ pImageMemoryBarriers
+                                                        -> IO ()
+
+type PFN_vkCmdPipelineBarrier = FunPtr HS_vkCmdPipelineBarrier
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdPipelineBarrierUnsafe ::
+               PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
+
+foreign import ccall safe "dynamic" unwrapVkCmdPipelineBarrierSafe
+               :: PFN_vkCmdPipelineBarrier -> HS_vkCmdPipelineBarrier
+
+instance VulkanProc "vkCmdPipelineBarrier" where
+    type VkProcType "vkCmdPipelineBarrier" = HS_vkCmdPipelineBarrier
+    vkProcSymbol = _VkCmdPipelineBarrier
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdPipelineBarrierUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdPipelineBarrierSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBeginQuery :: CString
+
+pattern VkCmdBeginQuery <- (is_VkCmdBeginQuery -> True)
+  where
+    VkCmdBeginQuery = _VkCmdBeginQuery
+
+{-# INLINE _VkCmdBeginQuery #-}
+
+_VkCmdBeginQuery :: CString
+_VkCmdBeginQuery = Ptr "vkCmdBeginQuery\NUL"##
+
+{-# INLINE is_VkCmdBeginQuery #-}
+
+is_VkCmdBeginQuery :: CString -> Bool
+is_VkCmdBeginQuery = (EQ ==) . cmpCStrings _VkCmdBeginQuery
+
+type VkCmdBeginQuery = "vkCmdBeginQuery"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBeginQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     , VkQueryControlFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
+--
+-- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
+--           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBeginQuery" vkCmdBeginQueryUnsafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             -> Word32 -- ^ query
+                                       -> VkQueryControlFlags -- ^ flags
+                                                              -> IO ()
+
+##else
+vkCmdBeginQueryUnsafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        VkQueryPool -- ^ queryPool
+                                    -> Word32 -- ^ query
+                                              -> VkQueryControlFlags -- ^ flags
+                                                                     -> IO ()
+vkCmdBeginQueryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBeginQuery)
+
+{-# NOINLINE vkCmdBeginQueryUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBeginQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     , VkQueryControlFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
+--
+-- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
+--           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBeginQuery" vkCmdBeginQuerySafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             -> Word32 -- ^ query
+                                       -> VkQueryControlFlags -- ^ flags
+                                                              -> IO ()
+
+##else
+vkCmdBeginQuerySafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkQueryPool -- ^ queryPool
+                                  -> Word32 -- ^ query
+                                            -> VkQueryControlFlags -- ^ flags
+                                                                   -> IO ()
+vkCmdBeginQuerySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginQuery)
+
+{-# NOINLINE vkCmdBeginQuerySafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdBeginQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     , VkQueryControlFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginQuery <- vkGetInstanceProc @VkCmdBeginQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginQuery <- vkGetProc @VkCmdBeginQuery
+--
+-- __Note:__ @vkCmdBeginQueryUnsafe@ and @vkCmdBeginQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginQuery@ is an alias
+--           of @vkCmdBeginQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginQuerySafe@.
+--
+vkCmdBeginQuery ::
+                VkCommandBuffer -- ^ commandBuffer
+                                ->
+                  VkQueryPool -- ^ queryPool
+                              -> Word32 -- ^ query
+                                        -> VkQueryControlFlags -- ^ flags
+                                                               -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBeginQuery = vkCmdBeginQueryUnsafe
+##else
+vkCmdBeginQuery = vkCmdBeginQuerySafe
+
+##endif
+{-# INLINE vkCmdBeginQuery #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdBeginQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     , VkQueryControlFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginQuery vkCmdBeginQuery registry at www.khronos.org>
+type HS_vkCmdBeginQuery =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkQueryPool -- ^ queryPool
+                   -> Word32 -- ^ query
+                             -> VkQueryControlFlags -- ^ flags
+                                                    -> IO ()
+
+type PFN_vkCmdBeginQuery = FunPtr HS_vkCmdBeginQuery
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdBeginQueryUnsafe
+               :: PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
+
+foreign import ccall safe "dynamic" unwrapVkCmdBeginQuerySafe ::
+               PFN_vkCmdBeginQuery -> HS_vkCmdBeginQuery
+
+instance VulkanProc "vkCmdBeginQuery" where
+    type VkProcType "vkCmdBeginQuery" = HS_vkCmdBeginQuery
+    vkProcSymbol = _VkCmdBeginQuery
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdBeginQueryUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdBeginQuerySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdEndQuery :: CString
+
+pattern VkCmdEndQuery <- (is_VkCmdEndQuery -> True)
+  where
+    VkCmdEndQuery = _VkCmdEndQuery
+
+{-# INLINE _VkCmdEndQuery #-}
+
+_VkCmdEndQuery :: CString
+_VkCmdEndQuery = Ptr "vkCmdEndQuery\NUL"##
+
+{-# INLINE is_VkCmdEndQuery #-}
+
+is_VkCmdEndQuery :: CString -> Bool
+is_VkCmdEndQuery = (EQ ==) . cmpCStrings _VkCmdEndQuery
+
+type VkCmdEndQuery = "vkCmdEndQuery"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdEndQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
+--
+-- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
+--           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdEndQuery" vkCmdEndQueryUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+##else
+vkCmdEndQueryUnsafe ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkQueryPool -- ^ queryPool
+                                                   -> Word32 -- ^ query
+                                                             -> IO ()
+vkCmdEndQueryUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdEndQuery)
+
+{-# NOINLINE vkCmdEndQueryUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdEndQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
+--
+-- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
+--           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdEndQuery" vkCmdEndQuerySafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+##else
+vkCmdEndQuerySafe ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  -> VkQueryPool -- ^ queryPool
+                                                 -> Word32 -- ^ query
+                                                           -> IO ()
+vkCmdEndQuerySafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndQuery)
+
+{-# NOINLINE vkCmdEndQuerySafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdEndQuery
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndQuery <- vkGetInstanceProc @VkCmdEndQuery vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndQuery <- vkGetProc @VkCmdEndQuery
+--
+-- __Note:__ @vkCmdEndQueryUnsafe@ and @vkCmdEndQuerySafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndQuery@ is an alias
+--           of @vkCmdEndQueryUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndQuerySafe@.
+--
+vkCmdEndQuery :: VkCommandBuffer -- ^ commandBuffer
+                                 -> VkQueryPool -- ^ queryPool
+                                                -> Word32 -- ^ query
+                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdEndQuery = vkCmdEndQueryUnsafe
+##else
+vkCmdEndQuery = vkCmdEndQuerySafe
+
+##endif
+{-# INLINE vkCmdEndQuery #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdEndQuery
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndQuery vkCmdEndQuery registry at www.khronos.org>
+type HS_vkCmdEndQuery =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkQueryPool -- ^ queryPool
+                                    -> Word32 -- ^ query
+                                              -> IO ()
+
+type PFN_vkCmdEndQuery = FunPtr HS_vkCmdEndQuery
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdEndQueryUnsafe ::
+               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
+
+foreign import ccall safe "dynamic" unwrapVkCmdEndQuerySafe ::
+               PFN_vkCmdEndQuery -> HS_vkCmdEndQuery
+
+instance VulkanProc "vkCmdEndQuery" where
+    type VkProcType "vkCmdEndQuery" = HS_vkCmdEndQuery
+    vkProcSymbol = _VkCmdEndQuery
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdEndQueryUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdEndQuerySafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdResetQueryPool :: CString
+
+pattern VkCmdResetQueryPool <- (is_VkCmdResetQueryPool -> True)
+  where
+    VkCmdResetQueryPool = _VkCmdResetQueryPool
+
+{-# INLINE _VkCmdResetQueryPool #-}
+
+_VkCmdResetQueryPool :: CString
+_VkCmdResetQueryPool = Ptr "vkCmdResetQueryPool\NUL"##
+
+{-# INLINE is_VkCmdResetQueryPool #-}
+
+is_VkCmdResetQueryPool :: CString -> Bool
+is_VkCmdResetQueryPool = (EQ ==) . cmpCStrings _VkCmdResetQueryPool
+
+type VkCmdResetQueryPool = "vkCmdResetQueryPool"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetQueryPool
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
+--
+-- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
+--           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdResetQueryPool"
+               vkCmdResetQueryPoolUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ firstQuery
+                                                        -> Word32 -- ^ queryCount
+                                                                  -> IO ()
+
+##else
+vkCmdResetQueryPoolUnsafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          -> VkQueryPool -- ^ queryPool
+                                                         -> Word32 -- ^ firstQuery
+                                                                   -> Word32 -- ^ queryCount
+                                                                             -> IO ()
+vkCmdResetQueryPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdResetQueryPool)
+
+{-# NOINLINE vkCmdResetQueryPoolUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetQueryPool
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
+--
+-- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
+--           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdResetQueryPool"
+               vkCmdResetQueryPoolSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ firstQuery
+                                                        -> Word32 -- ^ queryCount
+                                                                  -> IO ()
+
+##else
+vkCmdResetQueryPoolSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        -> VkQueryPool -- ^ queryPool
+                                                       -> Word32 -- ^ firstQuery
+                                                                 -> Word32 -- ^ queryCount
+                                                                           -> IO ()
+vkCmdResetQueryPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdResetQueryPool)
+
+{-# NOINLINE vkCmdResetQueryPoolSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdResetQueryPool
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdResetQueryPool <- vkGetInstanceProc @VkCmdResetQueryPool vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdResetQueryPool <- vkGetProc @VkCmdResetQueryPool
+--
+-- __Note:__ @vkCmdResetQueryPoolUnsafe@ and @vkCmdResetQueryPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdResetQueryPool@ is an alias
+--           of @vkCmdResetQueryPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdResetQueryPoolSafe@.
+--
+vkCmdResetQueryPool ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    -> VkQueryPool -- ^ queryPool
+                                                   -> Word32 -- ^ firstQuery
+                                                             -> Word32 -- ^ queryCount
+                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdResetQueryPool = vkCmdResetQueryPoolUnsafe
+##else
+vkCmdResetQueryPool = vkCmdResetQueryPoolSafe
+
+##endif
+{-# INLINE vkCmdResetQueryPool #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdResetQueryPool
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdResetQueryPool vkCmdResetQueryPool registry at www.khronos.org>
+type HS_vkCmdResetQueryPool =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkQueryPool -- ^ queryPool
+                                    -> Word32 -- ^ firstQuery
+                                              -> Word32 -- ^ queryCount
+                                                        -> IO ()
+
+type PFN_vkCmdResetQueryPool = FunPtr HS_vkCmdResetQueryPool
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdResetQueryPoolUnsafe ::
+               PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
+
+foreign import ccall safe "dynamic" unwrapVkCmdResetQueryPoolSafe
+               :: PFN_vkCmdResetQueryPool -> HS_vkCmdResetQueryPool
+
+instance VulkanProc "vkCmdResetQueryPool" where
+    type VkProcType "vkCmdResetQueryPool" = HS_vkCmdResetQueryPool
+    vkProcSymbol = _VkCmdResetQueryPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdResetQueryPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdResetQueryPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdWriteTimestamp :: CString
+
+pattern VkCmdWriteTimestamp <- (is_VkCmdWriteTimestamp -> True)
+  where
+    VkCmdWriteTimestamp = _VkCmdWriteTimestamp
+
+{-# INLINE _VkCmdWriteTimestamp #-}
+
+_VkCmdWriteTimestamp :: CString
+_VkCmdWriteTimestamp = Ptr "vkCmdWriteTimestamp\NUL"##
+
+{-# INLINE is_VkCmdWriteTimestamp #-}
+
+is_VkCmdWriteTimestamp :: CString -> Bool
+is_VkCmdWriteTimestamp = (EQ ==) . cmpCStrings _VkCmdWriteTimestamp
+
+type VkCmdWriteTimestamp = "vkCmdWriteTimestamp"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdWriteTimestamp
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlagBits pipelineStage
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
+--
+-- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
+--           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdWriteTimestamp"
+               vkCmdWriteTimestampUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         -> VkQueryPool -- ^ queryPool
+                                                        -> Word32 -- ^ query
+                                                                  -> IO ()
+
+##else
+vkCmdWriteTimestampUnsafe ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            VkPipelineStageFlagBits -- ^ pipelineStage
+                                                    -> VkQueryPool -- ^ queryPool
+                                                                   -> Word32 -- ^ query
+                                                                             -> IO ()
+vkCmdWriteTimestampUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdWriteTimestamp)
+
+{-# NOINLINE vkCmdWriteTimestampUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdWriteTimestamp
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlagBits pipelineStage
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
+--
+-- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
+--           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdWriteTimestamp"
+               vkCmdWriteTimestampSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineStageFlagBits -- ^ pipelineStage
+                                         -> VkQueryPool -- ^ queryPool
+                                                        -> Word32 -- ^ query
+                                                                  -> IO ()
+
+##else
+vkCmdWriteTimestampSafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          VkPipelineStageFlagBits -- ^ pipelineStage
+                                                  -> VkQueryPool -- ^ queryPool
+                                                                 -> Word32 -- ^ query
+                                                                           -> IO ()
+vkCmdWriteTimestampSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdWriteTimestamp)
+
+{-# NOINLINE vkCmdWriteTimestampSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdWriteTimestamp
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineStageFlagBits pipelineStage
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t query
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdWriteTimestamp <- vkGetInstanceProc @VkCmdWriteTimestamp vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdWriteTimestamp <- vkGetProc @VkCmdWriteTimestamp
+--
+-- __Note:__ @vkCmdWriteTimestampUnsafe@ and @vkCmdWriteTimestampSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdWriteTimestamp@ is an alias
+--           of @vkCmdWriteTimestampUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdWriteTimestampSafe@.
+--
+vkCmdWriteTimestamp ::
+                    VkCommandBuffer -- ^ commandBuffer
+                                    ->
+                      VkPipelineStageFlagBits -- ^ pipelineStage
+                                              -> VkQueryPool -- ^ queryPool
+                                                             -> Word32 -- ^ query
+                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdWriteTimestamp = vkCmdWriteTimestampUnsafe
+##else
+vkCmdWriteTimestamp = vkCmdWriteTimestampSafe
+
+##endif
+{-# INLINE vkCmdWriteTimestamp #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdWriteTimestamp
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineStageFlagBits pipelineStage
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t query
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdWriteTimestamp vkCmdWriteTimestamp registry at www.khronos.org>
+type HS_vkCmdWriteTimestamp =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineStageFlagBits -- ^ pipelineStage
+                               -> VkQueryPool -- ^ queryPool
+                                              -> Word32 -- ^ query
+                                                        -> IO ()
+
+type PFN_vkCmdWriteTimestamp = FunPtr HS_vkCmdWriteTimestamp
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdWriteTimestampUnsafe ::
+               PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
+
+foreign import ccall safe "dynamic" unwrapVkCmdWriteTimestampSafe
+               :: PFN_vkCmdWriteTimestamp -> HS_vkCmdWriteTimestamp
+
+instance VulkanProc "vkCmdWriteTimestamp" where
+    type VkProcType "vkCmdWriteTimestamp" = HS_vkCmdWriteTimestamp
+    vkProcSymbol = _VkCmdWriteTimestamp
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdWriteTimestampUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdWriteTimestampSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdCopyQueryPoolResults :: CString
+
+pattern VkCmdCopyQueryPoolResults <-
+        (is_VkCmdCopyQueryPoolResults -> True)
+  where
+    VkCmdCopyQueryPoolResults = _VkCmdCopyQueryPoolResults
+
+{-# INLINE _VkCmdCopyQueryPoolResults #-}
+
+_VkCmdCopyQueryPoolResults :: CString
+_VkCmdCopyQueryPoolResults = Ptr "vkCmdCopyQueryPoolResults\NUL"##
+
+{-# INLINE is_VkCmdCopyQueryPoolResults #-}
+
+is_VkCmdCopyQueryPoolResults :: CString -> Bool
+is_VkCmdCopyQueryPoolResults
+  = (EQ ==) . cmpCStrings _VkCmdCopyQueryPoolResults
+
+type VkCmdCopyQueryPoolResults = "vkCmdCopyQueryPoolResults"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyQueryPoolResults
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
+--
+-- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
+--           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdCopyQueryPoolResults"
+               vkCmdCopyQueryPoolResultsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       VkBuffer -- ^ dstBuffer
+                                ->
+                         VkDeviceSize -- ^ dstOffset
+                                      -> VkDeviceSize -- ^ stride
+                                                      -> VkQueryResultFlags -- ^ flags
+                                                                            -> IO ()
+
+##else
+vkCmdCopyQueryPoolResultsUnsafe ::
+                                VkCommandBuffer -- ^ commandBuffer
+                                                ->
+                                  VkQueryPool -- ^ queryPool
+                                              ->
+                                    Word32 -- ^ firstQuery
+                                           ->
+                                      Word32 -- ^ queryCount
+                                             ->
+                                        VkBuffer -- ^ dstBuffer
+                                                 ->
+                                          VkDeviceSize -- ^ dstOffset
+                                                       ->
+                                            VkDeviceSize -- ^ stride
+                                                         -> VkQueryResultFlags -- ^ flags
+                                                                               -> IO ()
+vkCmdCopyQueryPoolResultsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCmdCopyQueryPoolResults)
+
+{-# NOINLINE vkCmdCopyQueryPoolResultsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyQueryPoolResults
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
+--
+-- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
+--           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdCopyQueryPoolResults"
+               vkCmdCopyQueryPoolResultsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkQueryPool -- ^ queryPool
+                             ->
+                   Word32 -- ^ firstQuery
+                          ->
+                     Word32 -- ^ queryCount
+                            ->
+                       VkBuffer -- ^ dstBuffer
+                                ->
+                         VkDeviceSize -- ^ dstOffset
+                                      -> VkDeviceSize -- ^ stride
+                                                      -> VkQueryResultFlags -- ^ flags
+                                                                            -> IO ()
+
+##else
+vkCmdCopyQueryPoolResultsSafe ::
+                              VkCommandBuffer -- ^ commandBuffer
+                                              ->
+                                VkQueryPool -- ^ queryPool
+                                            ->
+                                  Word32 -- ^ firstQuery
+                                         ->
+                                    Word32 -- ^ queryCount
+                                           ->
+                                      VkBuffer -- ^ dstBuffer
+                                               ->
+                                        VkDeviceSize -- ^ dstOffset
+                                                     -> VkDeviceSize -- ^ stride
+                                                                     -> VkQueryResultFlags -- ^ flags
+                                                                                           -> IO ()
+vkCmdCopyQueryPoolResultsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdCopyQueryPoolResults)
+
+{-# NOINLINE vkCmdCopyQueryPoolResultsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @transfer@
+--
+-- > void vkCmdCopyQueryPoolResults
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkQueryPool queryPool
+-- >     , uint32_t firstQuery
+-- >     , uint32_t queryCount
+-- >     , VkBuffer dstBuffer
+-- >     , VkDeviceSize dstOffset
+-- >     , VkDeviceSize stride
+-- >     , VkQueryResultFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetInstanceProc @VkCmdCopyQueryPoolResults vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdCopyQueryPoolResults <- vkGetProc @VkCmdCopyQueryPoolResults
+--
+-- __Note:__ @vkCmdCopyQueryPoolResultsUnsafe@ and @vkCmdCopyQueryPoolResultsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdCopyQueryPoolResults@ is an alias
+--           of @vkCmdCopyQueryPoolResultsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdCopyQueryPoolResultsSafe@.
+--
+vkCmdCopyQueryPoolResults ::
+                          VkCommandBuffer -- ^ commandBuffer
+                                          ->
+                            VkQueryPool -- ^ queryPool
+                                        ->
+                              Word32 -- ^ firstQuery
+                                     ->
+                                Word32 -- ^ queryCount
+                                       ->
+                                  VkBuffer -- ^ dstBuffer
+                                           ->
+                                    VkDeviceSize -- ^ dstOffset
+                                                 -> VkDeviceSize -- ^ stride
+                                                                 -> VkQueryResultFlags -- ^ flags
+                                                                                       -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdCopyQueryPoolResults = vkCmdCopyQueryPoolResultsUnsafe
+##else
+vkCmdCopyQueryPoolResults = vkCmdCopyQueryPoolResultsSafe
+
+##endif
+{-# INLINE vkCmdCopyQueryPoolResults #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @transfer@
+--
+--   > void vkCmdCopyQueryPoolResults
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkQueryPool queryPool
+--   >     , uint32_t firstQuery
+--   >     , uint32_t queryCount
+--   >     , VkBuffer dstBuffer
+--   >     , VkDeviceSize dstOffset
+--   >     , VkDeviceSize stride
+--   >     , VkQueryResultFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults registry at www.khronos.org>
+type HS_vkCmdCopyQueryPoolResults =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkQueryPool -- ^ queryPool
+                   ->
+         Word32 -- ^ firstQuery
+                ->
+           Word32 -- ^ queryCount
+                  ->
+             VkBuffer -- ^ dstBuffer
+                      ->
+               VkDeviceSize -- ^ dstOffset
+                            -> VkDeviceSize -- ^ stride
+                                            -> VkQueryResultFlags -- ^ flags
+                                                                  -> IO ()
+
+type PFN_vkCmdCopyQueryPoolResults =
+     FunPtr HS_vkCmdCopyQueryPoolResults
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdCopyQueryPoolResultsUnsafe ::
+               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
+
+foreign import ccall safe "dynamic"
+               unwrapVkCmdCopyQueryPoolResultsSafe ::
+               PFN_vkCmdCopyQueryPoolResults -> HS_vkCmdCopyQueryPoolResults
+
+instance VulkanProc "vkCmdCopyQueryPoolResults" where
+    type VkProcType "vkCmdCopyQueryPoolResults" =
+         HS_vkCmdCopyQueryPoolResults
+    vkProcSymbol = _VkCmdCopyQueryPoolResults
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdCopyQueryPoolResultsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdCopyQueryPoolResultsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdPushConstants :: CString
+
+pattern VkCmdPushConstants <- (is_VkCmdPushConstants -> True)
+  where
+    VkCmdPushConstants = _VkCmdPushConstants
+
+{-# INLINE _VkCmdPushConstants #-}
+
+_VkCmdPushConstants :: CString
+_VkCmdPushConstants = Ptr "vkCmdPushConstants\NUL"##
+
+{-# INLINE is_VkCmdPushConstants #-}
+
+is_VkCmdPushConstants :: CString -> Bool
+is_VkCmdPushConstants = (EQ ==) . cmpCStrings _VkCmdPushConstants
+
+type VkCmdPushConstants = "vkCmdPushConstants"
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPushConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineLayout layout
+-- >     , VkShaderStageFlags stageFlags
+-- >     , uint32_t offset
+-- >     , uint32_t size
+-- >     , const void* pValues
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
+--
+-- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
+--           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdPushConstants"
+               vkCmdPushConstantsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineLayout -- ^ layout
+                                  ->
+                   VkShaderStageFlags -- ^ stageFlags
+                                      -> Word32 -- ^ offset
+                                                -> Word32 -- ^ size
+                                                          -> Ptr Void -- ^ pValues
+                                                                      -> IO ()
+
+##else
+vkCmdPushConstantsUnsafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           VkPipelineLayout -- ^ layout
+                                            ->
+                             VkShaderStageFlags -- ^ stageFlags
+                                                -> Word32 -- ^ offset
+                                                          -> Word32 -- ^ size
+                                                                    -> Ptr Void -- ^ pValues
+                                                                                -> IO ()
+vkCmdPushConstantsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdPushConstants)
+
+{-# NOINLINE vkCmdPushConstantsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPushConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineLayout layout
+-- >     , VkShaderStageFlags stageFlags
+-- >     , uint32_t offset
+-- >     , uint32_t size
+-- >     , const void* pValues
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
+--
+-- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
+--           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdPushConstants"
+               vkCmdPushConstantsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 VkPipelineLayout -- ^ layout
+                                  ->
+                   VkShaderStageFlags -- ^ stageFlags
+                                      -> Word32 -- ^ offset
+                                                -> Word32 -- ^ size
+                                                          -> Ptr Void -- ^ pValues
+                                                                      -> IO ()
+
+##else
+vkCmdPushConstantsSafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       ->
+                         VkPipelineLayout -- ^ layout
+                                          ->
+                           VkShaderStageFlags -- ^ stageFlags
+                                              -> Word32 -- ^ offset
+                                                        -> Word32 -- ^ size
+                                                                  -> Ptr Void -- ^ pValues
+                                                                              -> IO ()
+vkCmdPushConstantsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdPushConstants)
+
+{-# NOINLINE vkCmdPushConstantsSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdPushConstants
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkPipelineLayout layout
+-- >     , VkShaderStageFlags stageFlags
+-- >     , uint32_t offset
+-- >     , uint32_t size
+-- >     , const void* pValues
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdPushConstants <- vkGetInstanceProc @VkCmdPushConstants vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdPushConstants <- vkGetProc @VkCmdPushConstants
+--
+-- __Note:__ @vkCmdPushConstantsUnsafe@ and @vkCmdPushConstantsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdPushConstants@ is an alias
+--           of @vkCmdPushConstantsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdPushConstantsSafe@.
+--
+vkCmdPushConstants ::
+                   VkCommandBuffer -- ^ commandBuffer
+                                   ->
+                     VkPipelineLayout -- ^ layout
+                                      ->
+                       VkShaderStageFlags -- ^ stageFlags
+                                          -> Word32 -- ^ offset
+                                                    -> Word32 -- ^ size
+                                                              -> Ptr Void -- ^ pValues
+                                                                          -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdPushConstants = vkCmdPushConstantsUnsafe
+##else
+vkCmdPushConstants = vkCmdPushConstantsSafe
+
+##endif
+{-# INLINE vkCmdPushConstants #-}
+
+-- | Queues: 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdPushConstants
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkPipelineLayout layout
+--   >     , VkShaderStageFlags stageFlags
+--   >     , uint32_t offset
+--   >     , uint32_t size
+--   >     , const void* pValues
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdPushConstants vkCmdPushConstants registry at www.khronos.org>
+type HS_vkCmdPushConstants =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       VkPipelineLayout -- ^ layout
+                        ->
+         VkShaderStageFlags -- ^ stageFlags
+                            -> Word32 -- ^ offset
+                                      -> Word32 -- ^ size
+                                                -> Ptr Void -- ^ pValues
+                                                            -> IO ()
+
+type PFN_vkCmdPushConstants = FunPtr HS_vkCmdPushConstants
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdPushConstantsUnsafe ::
+               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
+
+foreign import ccall safe "dynamic" unwrapVkCmdPushConstantsSafe ::
+               PFN_vkCmdPushConstants -> HS_vkCmdPushConstants
+
+instance VulkanProc "vkCmdPushConstants" where
+    type VkProcType "vkCmdPushConstants" = HS_vkCmdPushConstants
+    vkProcSymbol = _VkCmdPushConstants
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdPushConstantsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdPushConstantsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdBeginRenderPass :: CString
+
+pattern VkCmdBeginRenderPass <- (is_VkCmdBeginRenderPass -> True)
+  where
+    VkCmdBeginRenderPass = _VkCmdBeginRenderPass
+
+{-# INLINE _VkCmdBeginRenderPass #-}
+
+_VkCmdBeginRenderPass :: CString
+_VkCmdBeginRenderPass = Ptr "vkCmdBeginRenderPass\NUL"##
+
+{-# INLINE is_VkCmdBeginRenderPass #-}
+
+is_VkCmdBeginRenderPass :: CString -> Bool
+is_VkCmdBeginRenderPass
+  = (EQ ==) . cmpCStrings _VkCmdBeginRenderPass
+
+type VkCmdBeginRenderPass = "vkCmdBeginRenderPass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdBeginRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkRenderPassBeginInfo* pRenderPassBegin
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
+--
+-- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
+--           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdBeginRenderPass"
+               vkCmdBeginRenderPassUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                           -> VkSubpassContents -- ^ contents
+                                                                -> IO ()
+
+##else
+vkCmdBeginRenderPassUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           ->
+                             Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                                       -> VkSubpassContents -- ^ contents
+                                                                            -> IO ()
+vkCmdBeginRenderPassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdBeginRenderPass)
+
+{-# NOINLINE vkCmdBeginRenderPassUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdBeginRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkRenderPassBeginInfo* pRenderPassBegin
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
+--
+-- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
+--           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdBeginRenderPass"
+               vkCmdBeginRenderPassSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                           -> VkSubpassContents -- ^ contents
+                                                                -> IO ()
+
+##else
+vkCmdBeginRenderPassSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         ->
+                           Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                                     -> VkSubpassContents -- ^ contents
+                                                                          -> IO ()
+vkCmdBeginRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdBeginRenderPass)
+
+{-# NOINLINE vkCmdBeginRenderPassSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @outside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdBeginRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , const VkRenderPassBeginInfo* pRenderPassBegin
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdBeginRenderPass <- vkGetInstanceProc @VkCmdBeginRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdBeginRenderPass <- vkGetProc @VkCmdBeginRenderPass
+--
+-- __Note:__ @vkCmdBeginRenderPassUnsafe@ and @vkCmdBeginRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdBeginRenderPass@ is an alias
+--           of @vkCmdBeginRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdBeginRenderPassSafe@.
+--
+vkCmdBeginRenderPass ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     ->
+                       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                                 -> VkSubpassContents -- ^ contents
+                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdBeginRenderPass = vkCmdBeginRenderPassUnsafe
+##else
+vkCmdBeginRenderPass = vkCmdBeginRenderPassSafe
+
+##endif
+{-# INLINE vkCmdBeginRenderPass #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @outside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdBeginRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , const VkRenderPassBeginInfo* pRenderPassBegin
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdBeginRenderPass vkCmdBeginRenderPass registry at www.khronos.org>
+type HS_vkCmdBeginRenderPass =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Ptr VkRenderPassBeginInfo -- ^ pRenderPassBegin
+                                 -> VkSubpassContents -- ^ contents
+                                                      -> IO ()
+
+type PFN_vkCmdBeginRenderPass = FunPtr HS_vkCmdBeginRenderPass
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdBeginRenderPassUnsafe ::
+               PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCmdBeginRenderPassSafe
+               :: PFN_vkCmdBeginRenderPass -> HS_vkCmdBeginRenderPass
+
+instance VulkanProc "vkCmdBeginRenderPass" where
+    type VkProcType "vkCmdBeginRenderPass" = HS_vkCmdBeginRenderPass
+    vkProcSymbol = _VkCmdBeginRenderPass
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdBeginRenderPassUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdBeginRenderPassSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdNextSubpass :: CString
+
+pattern VkCmdNextSubpass <- (is_VkCmdNextSubpass -> True)
+  where
+    VkCmdNextSubpass = _VkCmdNextSubpass
+
+{-# INLINE _VkCmdNextSubpass #-}
+
+_VkCmdNextSubpass :: CString
+_VkCmdNextSubpass = Ptr "vkCmdNextSubpass\NUL"##
+
+{-# INLINE is_VkCmdNextSubpass #-}
+
+is_VkCmdNextSubpass :: CString -> Bool
+is_VkCmdNextSubpass = (EQ ==) . cmpCStrings _VkCmdNextSubpass
+
+type VkCmdNextSubpass = "vkCmdNextSubpass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdNextSubpass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
+--
+-- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
+--           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdNextSubpass"
+               vkCmdNextSubpassUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> VkSubpassContents -- ^ contents
+                                                    -> IO ()
+
+##else
+vkCmdNextSubpassUnsafe ::
+                       VkCommandBuffer -- ^ commandBuffer
+                                       -> VkSubpassContents -- ^ contents
+                                                            -> IO ()
+vkCmdNextSubpassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdNextSubpass)
+
+{-# NOINLINE vkCmdNextSubpassUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdNextSubpass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
+--
+-- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
+--           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdNextSubpass" vkCmdNextSubpassSafe
+               :: VkCommandBuffer -- ^ commandBuffer
+                                  -> VkSubpassContents -- ^ contents
+                                                       -> IO ()
+
+##else
+vkCmdNextSubpassSafe ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> VkSubpassContents -- ^ contents
+                                                          -> IO ()
+vkCmdNextSubpassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdNextSubpass)
+
+{-# NOINLINE vkCmdNextSubpassSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdNextSubpass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , VkSubpassContents contents
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdNextSubpass <- vkGetInstanceProc @VkCmdNextSubpass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdNextSubpass <- vkGetProc @VkCmdNextSubpass
+--
+-- __Note:__ @vkCmdNextSubpassUnsafe@ and @vkCmdNextSubpassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdNextSubpass@ is an alias
+--           of @vkCmdNextSubpassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdNextSubpassSafe@.
+--
+vkCmdNextSubpass :: VkCommandBuffer -- ^ commandBuffer
+                                    -> VkSubpassContents -- ^ contents
+                                                         -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdNextSubpass = vkCmdNextSubpassUnsafe
+##else
+vkCmdNextSubpass = vkCmdNextSubpassSafe
+
+##endif
+{-# INLINE vkCmdNextSubpass #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdNextSubpass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , VkSubpassContents contents
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdNextSubpass vkCmdNextSubpass registry at www.khronos.org>
+type HS_vkCmdNextSubpass =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> VkSubpassContents -- ^ contents
+                                          -> IO ()
+
+type PFN_vkCmdNextSubpass = FunPtr HS_vkCmdNextSubpass
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdNextSubpassUnsafe
+               :: PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
+
+foreign import ccall safe "dynamic" unwrapVkCmdNextSubpassSafe ::
+               PFN_vkCmdNextSubpass -> HS_vkCmdNextSubpass
+
+instance VulkanProc "vkCmdNextSubpass" where
+    type VkProcType "vkCmdNextSubpass" = HS_vkCmdNextSubpass
+    vkProcSymbol = _VkCmdNextSubpass
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdNextSubpassUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdNextSubpassSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdEndRenderPass :: CString
+
+pattern VkCmdEndRenderPass <- (is_VkCmdEndRenderPass -> True)
+  where
+    VkCmdEndRenderPass = _VkCmdEndRenderPass
+
+{-# INLINE _VkCmdEndRenderPass #-}
+
+_VkCmdEndRenderPass :: CString
+_VkCmdEndRenderPass = Ptr "vkCmdEndRenderPass\NUL"##
+
+{-# INLINE is_VkCmdEndRenderPass #-}
+
+is_VkCmdEndRenderPass :: CString -> Bool
+is_VkCmdEndRenderPass = (EQ ==) . cmpCStrings _VkCmdEndRenderPass
+
+type VkCmdEndRenderPass = "vkCmdEndRenderPass"
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdEndRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
+--
+-- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
+--           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdEndRenderPass"
+               vkCmdEndRenderPassUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                                           -> IO ()
+
+##else
+vkCmdEndRenderPassUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                            -> IO ()
+vkCmdEndRenderPassUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdEndRenderPass)
+
+{-# NOINLINE vkCmdEndRenderPassUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdEndRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
+--
+-- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
+--           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdEndRenderPass"
+               vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> IO ()
+
+##else
+vkCmdEndRenderPassSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> IO ()
+vkCmdEndRenderPassSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdEndRenderPass)
+
+{-# NOINLINE vkCmdEndRenderPassSafe #-}
+##endif
+
+-- |
+-- Queues: 'graphics'.
+--
+-- Renderpass: @inside@
+--
+-- Pipeline: @graphics@
+--
+-- > void vkCmdEndRenderPass
+-- >     ( VkCommandBuffer commandBuffer
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdEndRenderPass <- vkGetInstanceProc @VkCmdEndRenderPass vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdEndRenderPass <- vkGetProc @VkCmdEndRenderPass
+--
+-- __Note:__ @vkCmdEndRenderPassUnsafe@ and @vkCmdEndRenderPassSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdEndRenderPass@ is an alias
+--           of @vkCmdEndRenderPassUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdEndRenderPassSafe@.
+--
+vkCmdEndRenderPass :: VkCommandBuffer -- ^ commandBuffer
+                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdEndRenderPass = vkCmdEndRenderPassUnsafe
+##else
+vkCmdEndRenderPass = vkCmdEndRenderPassSafe
+
+##endif
+{-# INLINE vkCmdEndRenderPass #-}
+
+-- | Queues: 'graphics'.
+--
+--   Renderpass: @inside@
+--
+--   Pipeline: @graphics@
+--
+--   > void vkCmdEndRenderPass
+--   >     ( VkCommandBuffer commandBuffer
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdEndRenderPass vkCmdEndRenderPass registry at www.khronos.org>
+type HS_vkCmdEndRenderPass = VkCommandBuffer -- ^ commandBuffer
+                                             -> IO ()
+
+type PFN_vkCmdEndRenderPass = FunPtr HS_vkCmdEndRenderPass
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdEndRenderPassUnsafe ::
+               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
+
+foreign import ccall safe "dynamic" unwrapVkCmdEndRenderPassSafe ::
+               PFN_vkCmdEndRenderPass -> HS_vkCmdEndRenderPass
+
+instance VulkanProc "vkCmdEndRenderPass" where
+    type VkProcType "vkCmdEndRenderPass" = HS_vkCmdEndRenderPass
+    vkProcSymbol = _VkCmdEndRenderPass
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdEndRenderPassUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdEndRenderPassSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdExecuteCommands :: CString
+
+pattern VkCmdExecuteCommands <- (is_VkCmdExecuteCommands -> True)
+  where
+    VkCmdExecuteCommands = _VkCmdExecuteCommands
+
+{-# INLINE _VkCmdExecuteCommands #-}
+
+_VkCmdExecuteCommands :: CString
+_VkCmdExecuteCommands = Ptr "vkCmdExecuteCommands\NUL"##
+
+{-# INLINE is_VkCmdExecuteCommands #-}
+
+is_VkCmdExecuteCommands :: CString -> Bool
+is_VkCmdExecuteCommands
+  = (EQ ==) . cmpCStrings _VkCmdExecuteCommands
+
+type VkCmdExecuteCommands = "vkCmdExecuteCommands"
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdExecuteCommands
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
+--
+-- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
+--           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall unsafe "vkCmdExecuteCommands"
+               vkCmdExecuteCommandsUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+##else
+vkCmdExecuteCommandsUnsafe ::
+                           VkCommandBuffer -- ^ commandBuffer
+                                           -> Word32 -- ^ commandBufferCount
+                                                     -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                            -> IO ()
+vkCmdExecuteCommandsUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdExecuteCommands)
+
+{-# NOINLINE vkCmdExecuteCommandsUnsafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdExecuteCommands
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
+--
+-- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
+--           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
+--
+--
+##ifdef NATIVE_FFI_VK_VERSION_1_0
+foreign import ccall safe "vkCmdExecuteCommands"
+               vkCmdExecuteCommandsSafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               -> Word32 -- ^ commandBufferCount
+                                         -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                -> IO ()
+
+##else
+vkCmdExecuteCommandsSafe ::
+                         VkCommandBuffer -- ^ commandBuffer
+                                         -> Word32 -- ^ commandBufferCount
+                                                   -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                          -> IO ()
+vkCmdExecuteCommandsSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdExecuteCommands)
+
+{-# NOINLINE vkCmdExecuteCommandsSafe #-}
+##endif
+
+-- |
+-- Queues: 'transfer', 'graphics', 'compute'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdExecuteCommands
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t commandBufferCount
+-- >     , const VkCommandBuffer* pCommandBuffers
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-0@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdExecuteCommands <- vkGetInstanceProc @VkCmdExecuteCommands vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdExecuteCommands <- vkGetProc @VkCmdExecuteCommands
+--
+-- __Note:__ @vkCmdExecuteCommandsUnsafe@ and @vkCmdExecuteCommandsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdExecuteCommands@ is an alias
+--           of @vkCmdExecuteCommandsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdExecuteCommandsSafe@.
+--
+vkCmdExecuteCommands ::
+                     VkCommandBuffer -- ^ commandBuffer
+                                     -> Word32 -- ^ commandBufferCount
+                                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                                      -> IO ()
+##ifdef UNSAFE_FFI_DEFAULT
+vkCmdExecuteCommands = vkCmdExecuteCommandsUnsafe
+##else
+vkCmdExecuteCommands = vkCmdExecuteCommandsSafe
+
+##endif
+{-# INLINE vkCmdExecuteCommands #-}
+
+-- | Queues: 'transfer', 'graphics', 'compute'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdExecuteCommands
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t commandBufferCount
+--   >     , const VkCommandBuffer* pCommandBuffers
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdExecuteCommands vkCmdExecuteCommands registry at www.khronos.org>
+type HS_vkCmdExecuteCommands =
+     VkCommandBuffer -- ^ commandBuffer
+                     -> Word32 -- ^ commandBufferCount
+                               -> Ptr VkCommandBuffer -- ^ pCommandBuffers
+                                                      -> IO ()
+
+type PFN_vkCmdExecuteCommands = FunPtr HS_vkCmdExecuteCommands
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdExecuteCommandsUnsafe ::
+               PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
+
+foreign import ccall safe "dynamic" unwrapVkCmdExecuteCommandsSafe
+               :: PFN_vkCmdExecuteCommands -> HS_vkCmdExecuteCommands
+
+instance VulkanProc "vkCmdExecuteCommands" where
+    type VkProcType "vkCmdExecuteCommands" = HS_vkCmdExecuteCommands
+    vkProcSymbol = _VkCmdExecuteCommands
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdExecuteCommandsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdExecuteCommandsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
diff --git a/src-gen/Graphics/Vulkan/Core_1_1.hs b/src-gen/Graphics/Vulkan/Core_1_1.hs
--- a/src-gen/Graphics/Vulkan/Core_1_1.hs
+++ b/src-gen/Graphics/Vulkan/Core_1_1.hs
@@ -26,7387 +26,7454 @@
         VkEnumerateInstanceVersion, pattern VkEnumerateInstanceVersion,
         HS_vkEnumerateInstanceVersion, PFN_vkEnumerateInstanceVersion,
         vkEnumerateInstanceVersion, vkEnumerateInstanceVersionUnsafe,
-        vkEnumerateInstanceVersionSafe,
-        module Graphics.Vulkan.Types.Enum.Result,
-        -- ** Promoted from VK_KHR_relaxed_block_layout, which has no API
-        --
-
-        -- ** Promoted from VK_KHR_storage_buffer_storage_class, which has no API
-        --
-
-        -- ** Originally based on VK_KHR_subgroup (extension 94), but the actual enum block used was, incorrectly, that of extension 95
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes, VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2', VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        VkPhysicalDeviceSubgroupProperties,
-        VkPhysicalDeviceSubgroupProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.Shader,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
-        -- ** Promoted from VK_KHR_bind_memory2
-        VkBindBufferMemoryInfo, VkBindBufferMemoryInfo',
-        VkBindImageMemoryInfo, VkBindImageMemoryInfo', -- > #include "vk_platform.h"
-                                                       VkBindBufferMemory2,
-        pattern VkBindBufferMemory2, HS_vkBindBufferMemory2,
-        PFN_vkBindBufferMemory2, vkBindBufferMemory2,
-        vkBindBufferMemory2Unsafe, vkBindBufferMemory2Safe,
-        VkBindImageMemory2, pattern VkBindImageMemory2,
-        HS_vkBindImageMemory2, PFN_vkBindImageMemory2, vkBindImageMemory2,
-        vkBindImageMemory2Unsafe, vkBindImageMemory2Safe,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Bind,
-        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
-        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
-        pattern VK_IMAGE_CREATE_ALIAS_BIT,
-        -- ** Promoted from VK_KHR_16bit_storage
-        module Graphics.Vulkan.Types.Bitmasks, VkDeviceCreateInfo,
-        VkDeviceCreateInfo', module Graphics.Vulkan.Types.Enum.Device,
-        VkDeviceQueueCreateInfo, VkDeviceQueueCreateInfo',
-        VkPhysicalDevice16BitStorageFeatures,
-        VkPhysicalDevice16BitStorageFeatures', VkPhysicalDeviceFeatures,
-        VkPhysicalDeviceFeatures', VkPhysicalDeviceFeatures2,
-        VkPhysicalDeviceFeatures2',
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
-        -- ** Promoted from VK_KHR_dedicated_allocation
-        VkMemoryAllocateInfo, VkMemoryAllocateInfo',
-        VkMemoryDedicatedAllocateInfo, VkMemoryDedicatedAllocateInfo',
-        VkMemoryDedicatedRequirements, VkMemoryDedicatedRequirements',
-        VkMemoryRequirements, VkMemoryRequirements', VkMemoryRequirements2,
-        VkMemoryRequirements2',
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
-        pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
-        -- ** Promoted from VK_KHR_device_group
-        VkBindSparseInfo, VkBindSparseInfo', VkClearColorValue,
-        VkClearColorValue', VkClearDepthStencilValue,
-        VkClearDepthStencilValue', VkClearValue, VkClearValue',
-        VkCommandBufferBeginInfo, VkCommandBufferBeginInfo',
-        VkCommandBufferInheritanceInfo, VkCommandBufferInheritanceInfo',
-        module Graphics.Vulkan.Types.Enum.Command,
-        VkDeviceGroupBindSparseInfo, VkDeviceGroupBindSparseInfo',
-        VkDeviceGroupCommandBufferBeginInfo,
-        VkDeviceGroupCommandBufferBeginInfo',
-        VkDeviceGroupRenderPassBeginInfo,
-        VkDeviceGroupRenderPassBeginInfo', VkDeviceGroupSubmitInfo,
-        VkDeviceGroupSubmitInfo', VkExtent2D, VkExtent2D', VkExtent3D,
-        VkExtent3D', module Graphics.Vulkan.Types.Enum.Image,
-        VkImageSubresource, VkImageSubresource',
-        module Graphics.Vulkan.Types.Enum.Memory,
-        VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfo',
-        VkMemoryAllocateInfo, VkMemoryAllocateInfo', VkOffset2D,
-        VkOffset2D', VkOffset3D, VkOffset3D',
-        module Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag,
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Enum.Query, VkRect2D, VkRect2D',
-        VkRenderPassBeginInfo, VkRenderPassBeginInfo',
-        VkSparseBufferMemoryBindInfo, VkSparseBufferMemoryBindInfo',
-        VkSparseImageMemoryBind, VkSparseImageMemoryBind',
-        VkSparseImageMemoryBindInfo, VkSparseImageMemoryBindInfo',
-        VkSparseImageOpaqueMemoryBindInfo,
-        VkSparseImageOpaqueMemoryBindInfo', VkSparseMemoryBind,
-        VkSparseMemoryBind', module Graphics.Vulkan.Types.Enum.Sparse,
-        VkSubmitInfo, VkSubmitInfo', -- > #include "vk_platform.h"
-                                     VkGetDeviceGroupPeerMemoryFeatures,
-        pattern VkGetDeviceGroupPeerMemoryFeatures,
-        HS_vkGetDeviceGroupPeerMemoryFeatures,
-        PFN_vkGetDeviceGroupPeerMemoryFeatures,
-        vkGetDeviceGroupPeerMemoryFeatures,
-        vkGetDeviceGroupPeerMemoryFeaturesUnsafe,
-        vkGetDeviceGroupPeerMemoryFeaturesSafe, VkCmdSetDeviceMask,
-        pattern VkCmdSetDeviceMask, HS_vkCmdSetDeviceMask,
-        PFN_vkCmdSetDeviceMask, vkCmdSetDeviceMask,
-        vkCmdSetDeviceMaskUnsafe, vkCmdSetDeviceMaskSafe,
-        VkCmdDispatchBase, pattern VkCmdDispatchBase, HS_vkCmdDispatchBase,
-        PFN_vkCmdDispatchBase, vkCmdDispatchBase, vkCmdDispatchBaseUnsafe,
-        vkCmdDispatchBaseSafe,
-        pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
-        pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
-        pattern VK_PIPELINE_CREATE_DISPATCH_BASE,
-        pattern VK_DEPENDENCY_DEVICE_GROUP_BIT,
-        -- ** Promoted from VK_KHR_device_group + VK_KHR_bind_memory2
-        VkBindBufferMemoryDeviceGroupInfo,
-        VkBindBufferMemoryDeviceGroupInfo', VkBindBufferMemoryInfo,
-        VkBindBufferMemoryInfo', VkBindImageMemoryDeviceGroupInfo,
-        VkBindImageMemoryDeviceGroupInfo', VkBindImageMemoryInfo,
-        VkBindImageMemoryInfo', VkExtent2D, VkExtent2D', VkOffset2D,
-        VkOffset2D', VkRect2D, VkRect2D',
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
-        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
-        pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
-        -- ** Promoted from VK_KHR_device_group_creation
-        VkDeviceCreateInfo, VkDeviceCreateInfo',
-        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfo',
-        VkDeviceQueueCreateInfo, VkDeviceQueueCreateInfo',
-        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures',
-        VkPhysicalDeviceGroupProperties, VkPhysicalDeviceGroupProperties',
-        -- > #include "vk_platform.h"
-        VkEnumeratePhysicalDeviceGroups,
-        pattern VkEnumeratePhysicalDeviceGroups,
-        HS_vkEnumeratePhysicalDeviceGroups,
-        PFN_vkEnumeratePhysicalDeviceGroups,
-        vkEnumeratePhysicalDeviceGroups,
-        vkEnumeratePhysicalDeviceGroupsUnsafe,
-        vkEnumeratePhysicalDeviceGroupsSafe,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
-        pattern VK_MAX_DEVICE_GROUP_SIZE,
-        pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
-        -- ** Promoted from VK_KHR_get_memory_requirements2
-        VkBufferMemoryRequirementsInfo2, VkBufferMemoryRequirementsInfo2',
-        VkExtent3D, VkExtent3D', VkImageMemoryRequirementsInfo2,
-        VkImageMemoryRequirementsInfo2',
-        VkImageSparseMemoryRequirementsInfo2,
-        VkImageSparseMemoryRequirementsInfo2', VkMemoryRequirements,
-        VkMemoryRequirements', VkMemoryRequirements2,
-        VkMemoryRequirements2', VkSparseImageFormatProperties,
-        VkSparseImageFormatProperties', VkSparseImageMemoryRequirements,
-        VkSparseImageMemoryRequirements', VkSparseImageMemoryRequirements2,
-        VkSparseImageMemoryRequirements2', -- > #include "vk_platform.h"
-                                           VkGetImageMemoryRequirements2,
-        pattern VkGetImageMemoryRequirements2,
-        HS_vkGetImageMemoryRequirements2,
-        PFN_vkGetImageMemoryRequirements2, vkGetImageMemoryRequirements2,
-        vkGetImageMemoryRequirements2Unsafe,
-        vkGetImageMemoryRequirements2Safe, VkGetBufferMemoryRequirements2,
-        pattern VkGetBufferMemoryRequirements2,
-        HS_vkGetBufferMemoryRequirements2,
-        PFN_vkGetBufferMemoryRequirements2, vkGetBufferMemoryRequirements2,
-        vkGetBufferMemoryRequirements2Unsafe,
-        vkGetBufferMemoryRequirements2Safe,
-        VkGetImageSparseMemoryRequirements2,
-        pattern VkGetImageSparseMemoryRequirements2,
-        HS_vkGetImageSparseMemoryRequirements2,
-        PFN_vkGetImageSparseMemoryRequirements2,
-        vkGetImageSparseMemoryRequirements2,
-        vkGetImageSparseMemoryRequirements2Unsafe,
-        vkGetImageSparseMemoryRequirements2Safe,
-        module Graphics.Vulkan.Types.Struct.Buffer,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Struct.Memory,
-        module Graphics.Vulkan.Types.Struct.Sparse,
-        pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
-        pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
-        pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
-        pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
-        pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
-        -- ** Promoted from VK_KHR_get_physical_device_properties2
-        VkDeviceCreateInfo, VkDeviceCreateInfo', VkDeviceQueueCreateInfo,
-        VkDeviceQueueCreateInfo', VkExtent3D, VkExtent3D',
-        module Graphics.Vulkan.Types.Enum.Format, VkFormatProperties,
-        VkFormatProperties', VkFormatProperties2, VkFormatProperties2',
-        VkImageFormatProperties, VkImageFormatProperties',
-        VkImageFormatProperties2, VkImageFormatProperties2', VkMemoryHeap,
-        VkMemoryHeap', VkMemoryType, VkMemoryType',
-        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures',
-        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2',
-        VkPhysicalDeviceImageFormatInfo2,
-        VkPhysicalDeviceImageFormatInfo2', VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceMemoryProperties,
-        VkPhysicalDeviceMemoryProperties',
-        VkPhysicalDeviceMemoryProperties2,
-        VkPhysicalDeviceMemoryProperties2', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseImageFormatInfo2,
-        VkPhysicalDeviceSparseImageFormatInfo2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties', VkQueueFamilyProperties,
-        VkQueueFamilyProperties', VkQueueFamilyProperties2,
-        VkQueueFamilyProperties2', module Graphics.Vulkan.Types.Enum.Queue,
-        VkSparseImageFormatProperties, VkSparseImageFormatProperties',
-        VkSparseImageFormatProperties2, VkSparseImageFormatProperties2',
-        -- > #include "vk_platform.h"
-        VkGetPhysicalDeviceFeatures2, pattern VkGetPhysicalDeviceFeatures2,
-        HS_vkGetPhysicalDeviceFeatures2, PFN_vkGetPhysicalDeviceFeatures2,
-        vkGetPhysicalDeviceFeatures2, vkGetPhysicalDeviceFeatures2Unsafe,
-        vkGetPhysicalDeviceFeatures2Safe, VkGetPhysicalDeviceProperties2,
-        pattern VkGetPhysicalDeviceProperties2,
-        HS_vkGetPhysicalDeviceProperties2,
-        PFN_vkGetPhysicalDeviceProperties2, vkGetPhysicalDeviceProperties2,
-        vkGetPhysicalDeviceProperties2Unsafe,
-        vkGetPhysicalDeviceProperties2Safe,
-        VkGetPhysicalDeviceFormatProperties2,
-        pattern VkGetPhysicalDeviceFormatProperties2,
-        HS_vkGetPhysicalDeviceFormatProperties2,
-        PFN_vkGetPhysicalDeviceFormatProperties2,
-        vkGetPhysicalDeviceFormatProperties2,
-        vkGetPhysicalDeviceFormatProperties2Unsafe,
-        vkGetPhysicalDeviceFormatProperties2Safe,
-        VkGetPhysicalDeviceImageFormatProperties2,
-        pattern VkGetPhysicalDeviceImageFormatProperties2,
-        HS_vkGetPhysicalDeviceImageFormatProperties2,
-        PFN_vkGetPhysicalDeviceImageFormatProperties2,
-        vkGetPhysicalDeviceImageFormatProperties2,
-        vkGetPhysicalDeviceImageFormatProperties2Unsafe,
-        vkGetPhysicalDeviceImageFormatProperties2Safe,
-        VkGetPhysicalDeviceQueueFamilyProperties2,
-        pattern VkGetPhysicalDeviceQueueFamilyProperties2,
-        HS_vkGetPhysicalDeviceQueueFamilyProperties2,
-        PFN_vkGetPhysicalDeviceQueueFamilyProperties2,
-        vkGetPhysicalDeviceQueueFamilyProperties2,
-        vkGetPhysicalDeviceQueueFamilyProperties2Unsafe,
-        vkGetPhysicalDeviceQueueFamilyProperties2Safe,
-        VkGetPhysicalDeviceMemoryProperties2,
-        pattern VkGetPhysicalDeviceMemoryProperties2,
-        HS_vkGetPhysicalDeviceMemoryProperties2,
-        PFN_vkGetPhysicalDeviceMemoryProperties2,
-        vkGetPhysicalDeviceMemoryProperties2,
-        vkGetPhysicalDeviceMemoryProperties2Unsafe,
-        vkGetPhysicalDeviceMemoryProperties2Safe,
-        VkGetPhysicalDeviceSparseImageFormatProperties2,
-        pattern VkGetPhysicalDeviceSparseImageFormatProperties2,
-        HS_vkGetPhysicalDeviceSparseImageFormatProperties2,
-        PFN_vkGetPhysicalDeviceSparseImageFormatProperties2,
-        vkGetPhysicalDeviceSparseImageFormatProperties2,
-        vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe,
-        vkGetPhysicalDeviceSparseImageFormatProperties2Safe,
-        module Graphics.Vulkan.Types.Struct.Device,
-        module Graphics.Vulkan.Types.Struct.FormatProperties,
-        module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures,
-        module Graphics.Vulkan.Types.Struct.QueueFamilyProperties,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
-        pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
-        -- ** Promoted from VK_KHR_maintenance1
-        --
-        -- |
-        -- > #include "vk_platform.h"
-        VkTrimCommandPool, pattern VkTrimCommandPool, HS_vkTrimCommandPool,
-        PFN_vkTrimCommandPool, vkTrimCommandPool, vkTrimCommandPoolUnsafe,
-        vkTrimCommandPoolSafe, pattern VK_ERROR_OUT_OF_POOL_MEMORY,
-        pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
-        pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
-        pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
-        -- ** Promoted from VK_KHR_maintenance2
-        module Graphics.Vulkan.Types.Enum.AccessFlags,
-        VkAttachmentDescription, VkAttachmentDescription',
-        module Graphics.Vulkan.Types.Enum.Attachment,
-        VkAttachmentReference, VkAttachmentReference', VkComponentMapping,
-        VkComponentMapping',
-        module Graphics.Vulkan.Types.Enum.ComponentSwizzle,
-        module Graphics.Vulkan.Types.Enum.DependencyFlags,
-        VkImageSubresourceRange, VkImageSubresourceRange',
-        VkImageViewCreateInfo, VkImageViewCreateInfo',
-        VkImageViewUsageCreateInfo, VkImageViewUsageCreateInfo',
-        VkInputAttachmentAspectReference,
-        VkInputAttachmentAspectReference', VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDevicePointClippingProperties,
-        VkPhysicalDevicePointClippingProperties',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        VkPipelineTessellationDomainOriginStateCreateInfo,
-        VkPipelineTessellationDomainOriginStateCreateInfo',
-        VkPipelineTessellationStateCreateInfo,
-        VkPipelineTessellationStateCreateInfo',
-        module Graphics.Vulkan.Types.Enum.PointClippingBehavior,
-        VkRenderPassCreateInfo, VkRenderPassCreateInfo',
-        VkRenderPassInputAttachmentAspectCreateInfo,
-        VkRenderPassInputAttachmentAspectCreateInfo', VkSubpassDependency,
-        VkSubpassDependency', VkSubpassDescription, VkSubpassDescription',
-        module Graphics.Vulkan.Types.Enum.Subpass,
-        module Graphics.Vulkan.Types.Enum.TessellationDomainOrigin,
-        -- > #include "vk_platform.h"
-        pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
-        pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
-        pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
-        pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
-        -- ** Promoted from VK_KHR_multiview
-        VkAttachmentDescription, VkAttachmentDescription',
-        VkAttachmentReference, VkAttachmentReference', VkDeviceCreateInfo,
-        VkDeviceCreateInfo', VkDeviceQueueCreateInfo,
-        VkDeviceQueueCreateInfo', VkPhysicalDeviceFeatures,
-        VkPhysicalDeviceFeatures', VkPhysicalDeviceFeatures2,
-        VkPhysicalDeviceFeatures2', VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceMultiviewFeatures,
-        VkPhysicalDeviceMultiviewFeatures',
-        VkPhysicalDeviceMultiviewProperties,
-        VkPhysicalDeviceMultiviewProperties', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2', VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties', VkRenderPassCreateInfo,
-        VkRenderPassCreateInfo', VkRenderPassMultiviewCreateInfo,
-        VkRenderPassMultiviewCreateInfo', VkSubpassDependency,
-        VkSubpassDependency', VkSubpassDescription, VkSubpassDescription',
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
-        pattern VK_DEPENDENCY_VIEW_LOCAL_BIT, -- ** Promoted from VK_KHR_variable_pointers
-                                              VkDeviceCreateInfo,
-        VkDeviceCreateInfo', VkDeviceQueueCreateInfo,
-        VkDeviceQueueCreateInfo', VkPhysicalDeviceFeatures,
-        VkPhysicalDeviceFeatures', VkPhysicalDeviceFeatures2,
-        VkPhysicalDeviceFeatures2',
-        VkPhysicalDeviceVariablePointerFeatures,
-        VkPhysicalDeviceVariablePointerFeatures',
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
-        -- ** Originally based on VK_KHR_protected_memory (extension 146), which was never published; thus the mystifying large value= numbers below. These are not aliased since they weren't actually promoted from an extension.
-        VkDeviceCreateInfo, VkDeviceCreateInfo', VkDeviceQueueCreateInfo,
-        VkDeviceQueueCreateInfo', VkDeviceQueueInfo2, VkDeviceQueueInfo2',
-        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures',
-        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2',
-        VkPhysicalDeviceLimits, VkPhysicalDeviceLimits',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceProtectedMemoryFeatures,
-        VkPhysicalDeviceProtectedMemoryFeatures',
-        VkPhysicalDeviceProtectedMemoryProperties,
-        VkPhysicalDeviceProtectedMemoryProperties',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties', VkProtectedSubmitInfo,
-        VkProtectedSubmitInfo', VkSubmitInfo, VkSubmitInfo',
-        -- > #include "vk_platform.h"
-        VkGetDeviceQueue2, pattern VkGetDeviceQueue2, HS_vkGetDeviceQueue2,
-        PFN_vkGetDeviceQueue2, vkGetDeviceQueue2, vkGetDeviceQueue2Unsafe,
-        vkGetDeviceQueue2Safe,
-        pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,
-        pattern VK_QUEUE_PROTECTED_BIT,
-        pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,
-        pattern VK_MEMORY_PROPERTY_PROTECTED_BIT,
-        pattern VK_BUFFER_CREATE_PROTECTED_BIT,
-        pattern VK_IMAGE_CREATE_PROTECTED_BIT,
-        pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT,
-        -- ** Promoted from VK_KHR_sampler_ycbcr_conversion
-        VkBindImageMemoryInfo, VkBindImageMemoryInfo',
-        VkBindImagePlaneMemoryInfo, VkBindImagePlaneMemoryInfo',
-        module Graphics.Vulkan.Types.Enum.BorderColor,
-        module Graphics.Vulkan.Types.Enum.ChromaLocation,
-        module Graphics.Vulkan.Types.Enum.CompareOp, VkComponentMapping,
-        VkComponentMapping', VkDeviceCreateInfo, VkDeviceCreateInfo',
-        VkDeviceQueueCreateInfo, VkDeviceQueueCreateInfo', VkExtent3D,
-        VkExtent3D', module Graphics.Vulkan.Types.Enum.Filter,
-        VkImageFormatProperties, VkImageFormatProperties',
-        VkImageFormatProperties2, VkImageFormatProperties2',
-        VkImageMemoryRequirementsInfo2, VkImageMemoryRequirementsInfo2',
-        VkImagePlaneMemoryRequirementsInfo,
-        VkImagePlaneMemoryRequirementsInfo', VkImageSubresourceRange,
-        VkImageSubresourceRange', VkImageViewCreateInfo,
-        VkImageViewCreateInfo', VkPhysicalDeviceFeatures,
-        VkPhysicalDeviceFeatures', VkPhysicalDeviceFeatures2,
-        VkPhysicalDeviceFeatures2',
-        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
-        VkPhysicalDeviceSamplerYcbcrConversionFeatures',
-        module Graphics.Vulkan.Types.Enum.Sampler, VkSamplerCreateInfo,
-        VkSamplerCreateInfo', VkSamplerYcbcrConversionCreateInfo,
-        VkSamplerYcbcrConversionCreateInfo',
-        VkSamplerYcbcrConversionImageFormatProperties,
-        VkSamplerYcbcrConversionImageFormatProperties',
-        VkSamplerYcbcrConversionInfo, VkSamplerYcbcrConversionInfo',
-        -- > #include "vk_platform.h"
-        VkCreateSamplerYcbcrConversion,
-        pattern VkCreateSamplerYcbcrConversion,
-        HS_vkCreateSamplerYcbcrConversion,
-        PFN_vkCreateSamplerYcbcrConversion, vkCreateSamplerYcbcrConversion,
-        vkCreateSamplerYcbcrConversionUnsafe,
-        vkCreateSamplerYcbcrConversionSafe,
-        VkDestroySamplerYcbcrConversion,
-        pattern VkDestroySamplerYcbcrConversion,
-        HS_vkDestroySamplerYcbcrConversion,
-        PFN_vkDestroySamplerYcbcrConversion,
-        vkDestroySamplerYcbcrConversion,
-        vkDestroySamplerYcbcrConversionUnsafe,
-        vkDestroySamplerYcbcrConversionSafe,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.ComponentMapping,
-        module Graphics.Vulkan.Types.Struct.Sampler,
-        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
-        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
-        pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
-        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
-        pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
-        pattern VK_FORMAT_G8B8G8R8_422_UNORM,
-        pattern VK_FORMAT_B8G8R8G8_422_UNORM,
-        pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
-        pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
-        pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
-        pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
-        pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
-        pattern VK_FORMAT_R10X6_UNORM_PACK16,
-        pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
-        pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
-        pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
-        pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
-        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
-        pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
-        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
-        pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
-        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
-        pattern VK_FORMAT_R12X4_UNORM_PACK16,
-        pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
-        pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
-        pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
-        pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
-        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
-        pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
-        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
-        pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
-        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
-        pattern VK_FORMAT_G16B16G16R16_422_UNORM,
-        pattern VK_FORMAT_B16G16R16G16_422_UNORM,
-        pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
-        pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
-        pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
-        pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
-        pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
-        pattern VK_IMAGE_ASPECT_PLANE_0_BIT,
-        pattern VK_IMAGE_ASPECT_PLANE_1_BIT,
-        pattern VK_IMAGE_ASPECT_PLANE_2_BIT,
-        pattern VK_IMAGE_CREATE_DISJOINT_BIT,
-        pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
-        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
-        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
-        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
-        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
-        pattern VK_FORMAT_FEATURE_DISJOINT_BIT,
-        pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
-        -- ** Promoted from VK_KHR_descriptor_update_template
-        module Graphics.Vulkan.Types.Enum.Descriptor,
-        VkDescriptorUpdateTemplateCreateInfo,
-        VkDescriptorUpdateTemplateCreateInfo',
-        VkDescriptorUpdateTemplateEntry, VkDescriptorUpdateTemplateEntry',
-        -- > #include "vk_platform.h"
-        VkCreateDescriptorUpdateTemplate,
-        pattern VkCreateDescriptorUpdateTemplate,
-        HS_vkCreateDescriptorUpdateTemplate,
-        PFN_vkCreateDescriptorUpdateTemplate,
-        vkCreateDescriptorUpdateTemplate,
-        vkCreateDescriptorUpdateTemplateUnsafe,
-        vkCreateDescriptorUpdateTemplateSafe,
-        VkDestroyDescriptorUpdateTemplate,
-        pattern VkDestroyDescriptorUpdateTemplate,
-        HS_vkDestroyDescriptorUpdateTemplate,
-        PFN_vkDestroyDescriptorUpdateTemplate,
-        vkDestroyDescriptorUpdateTemplate,
-        vkDestroyDescriptorUpdateTemplateUnsafe,
-        vkDestroyDescriptorUpdateTemplateSafe,
-        VkUpdateDescriptorSetWithTemplate,
-        pattern VkUpdateDescriptorSetWithTemplate,
-        HS_vkUpdateDescriptorSetWithTemplate,
-        PFN_vkUpdateDescriptorSetWithTemplate,
-        vkUpdateDescriptorSetWithTemplate,
-        vkUpdateDescriptorSetWithTemplateUnsafe,
-        vkUpdateDescriptorSetWithTemplateSafe,
-        module Graphics.Vulkan.Types.Struct.Descriptor,
-        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
-        pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
-        -- ** Promoted from VK_KHR_external_memory_capabilities
-        module Graphics.Vulkan.Types.Enum.Buffer, VkExtent3D, VkExtent3D',
-        VkExternalBufferProperties, VkExternalBufferProperties',
-        VkExternalImageFormatProperties, VkExternalImageFormatProperties',
-        module Graphics.Vulkan.Types.Enum.External,
-        VkExternalMemoryProperties, VkExternalMemoryProperties',
-        VkImageFormatProperties, VkImageFormatProperties',
-        VkImageFormatProperties2, VkImageFormatProperties2',
-        VkPhysicalDeviceExternalBufferInfo,
-        VkPhysicalDeviceExternalBufferInfo',
-        VkPhysicalDeviceExternalImageFormatInfo,
-        VkPhysicalDeviceExternalImageFormatInfo',
-        VkPhysicalDeviceIDProperties, VkPhysicalDeviceIDProperties',
-        VkPhysicalDeviceImageFormatInfo2,
-        VkPhysicalDeviceImageFormatInfo2', VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2', VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        -- > #include "vk_platform.h"
-        VkGetPhysicalDeviceExternalBufferProperties,
-        pattern VkGetPhysicalDeviceExternalBufferProperties,
-        HS_vkGetPhysicalDeviceExternalBufferProperties,
-        PFN_vkGetPhysicalDeviceExternalBufferProperties,
-        vkGetPhysicalDeviceExternalBufferProperties,
-        vkGetPhysicalDeviceExternalBufferPropertiesUnsafe,
-        vkGetPhysicalDeviceExternalBufferPropertiesSafe,
-        module Graphics.Vulkan.Types.Struct.External,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
-        pattern VK_LUID_SIZE, -- ** Promoted from VK_KHR_external_memory
-                              VkBufferCreateInfo, VkBufferCreateInfo',
-        VkExportMemoryAllocateInfo, VkExportMemoryAllocateInfo',
-        VkExtent3D, VkExtent3D', VkExternalMemoryBufferCreateInfo,
-        VkExternalMemoryBufferCreateInfo', VkExternalMemoryImageCreateInfo,
-        VkExternalMemoryImageCreateInfo', VkImageCreateInfo,
-        VkImageCreateInfo', VkMemoryAllocateInfo, VkMemoryAllocateInfo',
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
-        pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
-        pattern VK_ERROR_INVALID_EXTERNAL_HANDLE,
-        pattern VK_QUEUE_FAMILY_EXTERNAL, -- ** Promoted from VK_KHR_external_fence_capabilities
-                                          VkExternalFenceProperties,
-        VkExternalFenceProperties', VkPhysicalDeviceExternalFenceInfo,
-        VkPhysicalDeviceExternalFenceInfo',
-        -- > #include "vk_platform.h"
-        VkGetPhysicalDeviceExternalFenceProperties,
-        pattern VkGetPhysicalDeviceExternalFenceProperties,
-        HS_vkGetPhysicalDeviceExternalFenceProperties,
-        PFN_vkGetPhysicalDeviceExternalFenceProperties,
-        vkGetPhysicalDeviceExternalFenceProperties,
-        vkGetPhysicalDeviceExternalFencePropertiesUnsafe,
-        vkGetPhysicalDeviceExternalFencePropertiesSafe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
-        -- ** Promoted from VK_KHR_external_fence
-        VkExportFenceCreateInfo, VkExportFenceCreateInfo',
-        module Graphics.Vulkan.Types.Enum.Fence, VkFenceCreateInfo,
-        VkFenceCreateInfo',
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
-        -- ** Promoted from VK_KHR_external_semaphore
-        VkExportSemaphoreCreateInfo, VkExportSemaphoreCreateInfo',
-        VkSemaphoreCreateInfo, VkSemaphoreCreateInfo',
-        module Graphics.Vulkan.Types.Enum.SemaphoreImportFlag,
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
-        -- ** Promoted from VK_KHR_external_semaphore_capabilities
-        VkExternalSemaphoreProperties, VkExternalSemaphoreProperties',
-        VkPhysicalDeviceExternalSemaphoreInfo,
-        VkPhysicalDeviceExternalSemaphoreInfo',
-        -- > #include "vk_platform.h"
-        VkGetPhysicalDeviceExternalSemaphoreProperties,
-        pattern VkGetPhysicalDeviceExternalSemaphoreProperties,
-        HS_vkGetPhysicalDeviceExternalSemaphoreProperties,
-        PFN_vkGetPhysicalDeviceExternalSemaphoreProperties,
-        vkGetPhysicalDeviceExternalSemaphoreProperties,
-        vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe,
-        vkGetPhysicalDeviceExternalSemaphorePropertiesSafe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
-        pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
-        -- ** Promoted from VK_KHR_maintenance3
-        VkDescriptorSetLayoutSupport, VkDescriptorSetLayoutSupport',
-        VkPhysicalDeviceLimits, VkPhysicalDeviceLimits',
-        VkPhysicalDeviceMaintenance3Properties,
-        VkPhysicalDeviceMaintenance3Properties',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties', -- > #include "vk_platform.h"
-                                           VkGetDescriptorSetLayoutSupport,
-        pattern VkGetDescriptorSetLayoutSupport,
-        HS_vkGetDescriptorSetLayoutSupport,
-        PFN_vkGetDescriptorSetLayoutSupport,
-        vkGetDescriptorSetLayoutSupport,
-        vkGetDescriptorSetLayoutSupportUnsafe,
-        vkGetDescriptorSetLayoutSupportSafe,
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
-        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
-        -- ** Promoted from VK_KHR_shader_draw_parameters, with a feature support query added
-        VkDeviceCreateInfo, VkDeviceCreateInfo', VkDeviceQueueCreateInfo,
-        VkDeviceQueueCreateInfo', VkPhysicalDeviceFeatures,
-        VkPhysicalDeviceFeatures', VkPhysicalDeviceFeatures2,
-        VkPhysicalDeviceFeatures2',
-        VkPhysicalDeviceShaderDrawParameterFeatures,
-        VkPhysicalDeviceShaderDrawParameterFeatures',
-        -- > #include "vk_platform.h"
-        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES)
-       where
-import GHC.Ptr                                                     (Ptr (..))
-import Graphics.Vulkan.Constants                                   (pattern VK_LUID_SIZE,
-                                                                    pattern VK_MAX_DEVICE_GROUP_SIZE,
-                                                                    pattern VK_QUEUE_FAMILY_EXTERNAL)
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Proc
-import Graphics.Vulkan.Types.BaseTypes
-import Graphics.Vulkan.Types.Bitmasks
-import Graphics.Vulkan.Types.Enum.AccessFlags
-import Graphics.Vulkan.Types.Enum.Attachment
-import Graphics.Vulkan.Types.Enum.BorderColor
-import Graphics.Vulkan.Types.Enum.Buffer
-import Graphics.Vulkan.Types.Enum.ChromaLocation
-import Graphics.Vulkan.Types.Enum.Command
-import Graphics.Vulkan.Types.Enum.CompareOp
-import Graphics.Vulkan.Types.Enum.ComponentSwizzle
-import Graphics.Vulkan.Types.Enum.DependencyFlags
-import Graphics.Vulkan.Types.Enum.Descriptor
-import Graphics.Vulkan.Types.Enum.Device
-import Graphics.Vulkan.Types.Enum.External
-import Graphics.Vulkan.Types.Enum.Fence
-import Graphics.Vulkan.Types.Enum.Filter
-import Graphics.Vulkan.Types.Enum.Format
-import Graphics.Vulkan.Types.Enum.Image
-import Graphics.Vulkan.Types.Enum.InternalAllocationType
-import Graphics.Vulkan.Types.Enum.Memory
-import Graphics.Vulkan.Types.Enum.Object                           (VkObjectType (..))
-import Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag
-import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
-import Graphics.Vulkan.Types.Enum.Pipeline
-import Graphics.Vulkan.Types.Enum.PointClippingBehavior
-import Graphics.Vulkan.Types.Enum.Query
-import Graphics.Vulkan.Types.Enum.Queue
-import Graphics.Vulkan.Types.Enum.Result
-import Graphics.Vulkan.Types.Enum.SampleCountFlags
-import Graphics.Vulkan.Types.Enum.Sampler
-import Graphics.Vulkan.Types.Enum.SemaphoreImportFlag
-import Graphics.Vulkan.Types.Enum.Shader
-import Graphics.Vulkan.Types.Enum.SharingMode
-import Graphics.Vulkan.Types.Enum.Sparse
-import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags
-import Graphics.Vulkan.Types.Enum.Subpass
-import Graphics.Vulkan.Types.Enum.SystemAllocationScope
-import Graphics.Vulkan.Types.Enum.TessellationDomainOrigin
-import Graphics.Vulkan.Types.Funcpointers
-import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.AllocationCallbacks
-import Graphics.Vulkan.Types.Struct.Attachment                     (VkAttachmentDescription,
-                                                                    VkAttachmentDescription',
-                                                                    VkAttachmentReference,
-                                                                    VkAttachmentReference')
-import Graphics.Vulkan.Types.Struct.Bind
-import Graphics.Vulkan.Types.Struct.Buffer
-import Graphics.Vulkan.Types.Struct.Clear                          (VkClearColorValue,
-                                                                    VkClearColorValue',
-                                                                    VkClearDepthStencilValue,
-                                                                    VkClearDepthStencilValue',
-                                                                    VkClearValue,
-                                                                    VkClearValue')
-import Graphics.Vulkan.Types.Struct.Command                        (VkCommandBufferBeginInfo,
-                                                                    VkCommandBufferBeginInfo',
-                                                                    VkCommandBufferInheritanceInfo,
-                                                                    VkCommandBufferInheritanceInfo')
-import Graphics.Vulkan.Types.Struct.ComponentMapping
-import Graphics.Vulkan.Types.Struct.Descriptor
-import Graphics.Vulkan.Types.Struct.Device
-import Graphics.Vulkan.Types.Struct.Export                         (VkExportFenceCreateInfo,
-                                                                    VkExportFenceCreateInfo',
-                                                                    VkExportMemoryAllocateInfo,
-                                                                    VkExportMemoryAllocateInfo',
-                                                                    VkExportSemaphoreCreateInfo,
-                                                                    VkExportSemaphoreCreateInfo')
-import Graphics.Vulkan.Types.Struct.Extent
-import Graphics.Vulkan.Types.Struct.External
-import Graphics.Vulkan.Types.Struct.Fence                          (VkFenceCreateInfo,
-                                                                    VkFenceCreateInfo')
-import Graphics.Vulkan.Types.Struct.FormatProperties
-import Graphics.Vulkan.Types.Struct.Image
-import Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference (VkInputAttachmentAspectReference,
-                                                                    VkInputAttachmentAspectReference')
-import Graphics.Vulkan.Types.Struct.Memory
-import Graphics.Vulkan.Types.Struct.Offset                         (VkOffset2D,
-                                                                    VkOffset2D',
-                                                                    VkOffset3D,
-                                                                    VkOffset3D')
-import Graphics.Vulkan.Types.Struct.PhysicalDevice
-import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
-import Graphics.Vulkan.Types.Struct.Pipeline                       (VkPipelineTessellationDomainOriginStateCreateInfo,
-                                                                    VkPipelineTessellationDomainOriginStateCreateInfo',
-                                                                    VkPipelineTessellationStateCreateInfo,
-                                                                    VkPipelineTessellationStateCreateInfo')
-import Graphics.Vulkan.Types.Struct.ProtectedSubmitInfo            (VkProtectedSubmitInfo,
-                                                                    VkProtectedSubmitInfo')
-import Graphics.Vulkan.Types.Struct.QueueFamilyProperties
-import Graphics.Vulkan.Types.Struct.Rect                           (VkRect2D,
-                                                                    VkRect2D')
-import Graphics.Vulkan.Types.Struct.RenderPass                     (VkRenderPassBeginInfo,
-                                                                    VkRenderPassBeginInfo',
-                                                                    VkRenderPassCreateInfo,
-                                                                    VkRenderPassCreateInfo',
-                                                                    VkRenderPassInputAttachmentAspectCreateInfo,
-                                                                    VkRenderPassInputAttachmentAspectCreateInfo',
-                                                                    VkRenderPassMultiviewCreateInfo,
-                                                                    VkRenderPassMultiviewCreateInfo')
-import Graphics.Vulkan.Types.Struct.Sampler
-import Graphics.Vulkan.Types.Struct.Semaphore                      (VkSemaphoreCreateInfo,
-                                                                    VkSemaphoreCreateInfo')
-import Graphics.Vulkan.Types.Struct.Sparse
-import Graphics.Vulkan.Types.Struct.SubmitInfo                     (VkSubmitInfo,
-                                                                    VkSubmitInfo')
-import Graphics.Vulkan.Types.Struct.Subpass                        (VkSubpassDependency,
-                                                                    VkSubpassDependency',
-                                                                    VkSubpassDescription,
-                                                                    VkSubpassDescription')
-import System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
-pattern VkEnumerateInstanceVersion :: CString
-
-pattern VkEnumerateInstanceVersion <-
-        (is_VkEnumerateInstanceVersion -> True)
-  where VkEnumerateInstanceVersion = _VkEnumerateInstanceVersion
-
-{-# INLINE _VkEnumerateInstanceVersion #-}
-
-_VkEnumerateInstanceVersion :: CString
-_VkEnumerateInstanceVersion = Ptr "vkEnumerateInstanceVersion\NUL"#
-
-{-# INLINE is_VkEnumerateInstanceVersion #-}
-
-is_VkEnumerateInstanceVersion :: CString -> Bool
-is_VkEnumerateInstanceVersion
-  = (EQ ==) . cmpCStrings _VkEnumerateInstanceVersion
-
-type VkEnumerateInstanceVersion = "vkEnumerateInstanceVersion"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
---
--- or less efficient:
---
--- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
---
--- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
---           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkEnumerateInstanceVersion"
-               vkEnumerateInstanceVersionUnsafe :: Ptr Word32 -- ^ pApiVersion
-                                                              -> IO VkResult
-
-#else
-vkEnumerateInstanceVersionUnsafe :: Ptr Word32 -- ^ pApiVersion
-                                               -> IO VkResult
-vkEnumerateInstanceVersionUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkEnumerateInstanceVersion)
-
-{-# NOINLINE vkEnumerateInstanceVersionUnsafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
---
--- or less efficient:
---
--- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
---
--- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
---           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkEnumerateInstanceVersion"
-               vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
-                                                            -> IO VkResult
-
-#else
-vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
-                                             -> IO VkResult
-vkEnumerateInstanceVersionSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumerateInstanceVersion)
-
-{-# NOINLINE vkEnumerateInstanceVersionSafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- > VkResult vkEnumerateInstanceVersion
--- >     ( uint32_t* pApiVersion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
---
--- or less efficient:
---
--- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
---
--- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
---           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
---
-vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
-                                         -> IO VkResult
-#ifdef UNSAFE_FFI_DEFAULT
-vkEnumerateInstanceVersion = vkEnumerateInstanceVersionUnsafe
-#else
-vkEnumerateInstanceVersion = vkEnumerateInstanceVersionSafe
-
-#endif
-{-# INLINE vkEnumerateInstanceVersion #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   > VkResult vkEnumerateInstanceVersion
---   >     ( uint32_t* pApiVersion
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
-type HS_vkEnumerateInstanceVersion = Ptr Word32 -- ^ pApiVersion
-                                                -> IO VkResult
-
-type PFN_vkEnumerateInstanceVersion =
-     FunPtr HS_vkEnumerateInstanceVersion
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumerateInstanceVersionUnsafe ::
-               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumerateInstanceVersionSafe ::
-               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
-
-instance VulkanProc "vkEnumerateInstanceVersion" where
-        type VkProcType "vkEnumerateInstanceVersion" =
-             HS_vkEnumerateInstanceVersion
-        vkProcSymbol = _VkEnumerateInstanceVersion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkEnumerateInstanceVersionUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceVersionSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES =
-        VkStructureType 1000094000
-
-pattern VkBindBufferMemory2 :: CString
-
-pattern VkBindBufferMemory2 <- (is_VkBindBufferMemory2 -> True)
-  where VkBindBufferMemory2 = _VkBindBufferMemory2
-
-{-# INLINE _VkBindBufferMemory2 #-}
-
-_VkBindBufferMemory2 :: CString
-_VkBindBufferMemory2 = Ptr "vkBindBufferMemory2\NUL"#
-
-{-# INLINE is_VkBindBufferMemory2 #-}
-
-is_VkBindBufferMemory2 :: CString -> Bool
-is_VkBindBufferMemory2 = (EQ ==) . cmpCStrings _VkBindBufferMemory2
-
-type VkBindBufferMemory2 = "vkBindBufferMemory2"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
---
--- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
---           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkBindBufferMemory2"
-               vkBindBufferMemory2Unsafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                -> IO VkResult
-
-#else
-vkBindBufferMemory2Unsafe ::
-                          VkDevice -- ^ device
-                                   -> Word32 -- ^ bindInfoCount
-                                             -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                           -> IO VkResult
-vkBindBufferMemory2Unsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindBufferMemory2)
-
-{-# NOINLINE vkBindBufferMemory2Unsafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
---
--- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
---           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkBindBufferMemory2"
-               vkBindBufferMemory2Safe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                -> IO VkResult
-
-#else
-vkBindBufferMemory2Safe ::
-                        VkDevice -- ^ device
-                                 -> Word32 -- ^ bindInfoCount
-                                           -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                         -> IO VkResult
-vkBindBufferMemory2Safe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory2)
-
-{-# NOINLINE vkBindBufferMemory2Safe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindBufferMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindBufferMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
---
--- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
---           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
---
-vkBindBufferMemory2 ::
-                    VkDevice -- ^ device
-                             -> Word32 -- ^ bindInfoCount
-                                       -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                                     -> IO VkResult
-#ifdef UNSAFE_FFI_DEFAULT
-vkBindBufferMemory2 = vkBindBufferMemory2Unsafe
-#else
-vkBindBufferMemory2 = vkBindBufferMemory2Safe
-
-#endif
-{-# INLINE vkBindBufferMemory2 #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindBufferMemory2
---   >     ( VkDevice device
---   >     , uint32_t bindInfoCount
---   >     , const VkBindBufferMemoryInfo* pBindInfos
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
-type HS_vkBindBufferMemory2 =
-     VkDevice -- ^ device
-              -> Word32 -- ^ bindInfoCount
-                        -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
-                                                      -> IO VkResult
-
-type PFN_vkBindBufferMemory2 = FunPtr HS_vkBindBufferMemory2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkBindBufferMemory2Unsafe ::
-               PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
-
-foreign import ccall safe "dynamic" unwrapVkBindBufferMemory2Safe
-               :: PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
-
-instance VulkanProc "vkBindBufferMemory2" where
-        type VkProcType "vkBindBufferMemory2" = HS_vkBindBufferMemory2
-        vkProcSymbol = _VkBindBufferMemory2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemory2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkBindImageMemory2 :: CString
-
-pattern VkBindImageMemory2 <- (is_VkBindImageMemory2 -> True)
-  where VkBindImageMemory2 = _VkBindImageMemory2
-
-{-# INLINE _VkBindImageMemory2 #-}
-
-_VkBindImageMemory2 :: CString
-_VkBindImageMemory2 = Ptr "vkBindImageMemory2\NUL"#
-
-{-# INLINE is_VkBindImageMemory2 #-}
-
-is_VkBindImageMemory2 :: CString -> Bool
-is_VkBindImageMemory2 = (EQ ==) . cmpCStrings _VkBindImageMemory2
-
-type VkBindImageMemory2 = "vkBindImageMemory2"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
---
--- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
---           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkBindImageMemory2"
-               vkBindImageMemory2Unsafe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                               -> IO VkResult
-
-#else
-vkBindImageMemory2Unsafe ::
-                         VkDevice -- ^ device
-                                  -> Word32 -- ^ bindInfoCount
-                                            -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                         -> IO VkResult
-vkBindImageMemory2Unsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindImageMemory2)
-
-{-# NOINLINE vkBindImageMemory2Unsafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
---
--- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
---           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkBindImageMemory2"
-               vkBindImageMemory2Safe ::
-               VkDevice -- ^ device
-                        -> Word32 -- ^ bindInfoCount
-                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                               -> IO VkResult
-
-#else
-vkBindImageMemory2Safe ::
-                       VkDevice -- ^ device
-                                -> Word32 -- ^ bindInfoCount
-                                          -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                       -> IO VkResult
-vkBindImageMemory2Safe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory2)
-
-{-# NOINLINE vkBindImageMemory2Safe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkBindImageMemory2
--- >     ( VkDevice device
--- >     , uint32_t bindInfoCount
--- >     , const VkBindImageMemoryInfo* pBindInfos
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
---
--- or less efficient:
---
--- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
---
--- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
---           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
---
-vkBindImageMemory2 ::
-                   VkDevice -- ^ device
-                            -> Word32 -- ^ bindInfoCount
-                                      -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                                   -> IO VkResult
-#ifdef UNSAFE_FFI_DEFAULT
-vkBindImageMemory2 = vkBindImageMemory2Unsafe
-#else
-vkBindImageMemory2 = vkBindImageMemory2Safe
-
-#endif
-{-# INLINE vkBindImageMemory2 #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkBindImageMemory2
---   >     ( VkDevice device
---   >     , uint32_t bindInfoCount
---   >     , const VkBindImageMemoryInfo* pBindInfos
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
-type HS_vkBindImageMemory2 =
-     VkDevice -- ^ device
-              -> Word32 -- ^ bindInfoCount
-                        -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
-                                                     -> IO VkResult
-
-type PFN_vkBindImageMemory2 = FunPtr HS_vkBindImageMemory2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkBindImageMemory2Unsafe ::
-               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
-
-foreign import ccall safe "dynamic" unwrapVkBindImageMemory2Safe ::
-               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
-
-instance VulkanProc "vkBindImageMemory2" where
-        type VkProcType "vkBindImageMemory2" = HS_vkBindImageMemory2
-        vkProcSymbol = _VkBindImageMemory2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkBindImageMemory2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkBindImageMemory2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO =
-        VkStructureType 1000157000
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO =
-        VkStructureType 1000157001
-
--- | bitpos = @10@
-pattern VK_IMAGE_CREATE_ALIAS_BIT :: VkImageCreateBitmask a
-
-pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateBitmask 1024
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES =
-        VkStructureType 1000083000
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS =
-        VkStructureType 1000127000
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO =
-        VkStructureType 1000127001
-
-pattern VkGetDeviceGroupPeerMemoryFeatures :: CString
-
-pattern VkGetDeviceGroupPeerMemoryFeatures <-
-        (is_VkGetDeviceGroupPeerMemoryFeatures -> True)
-  where VkGetDeviceGroupPeerMemoryFeatures
-          = _VkGetDeviceGroupPeerMemoryFeatures
-
-{-# INLINE _VkGetDeviceGroupPeerMemoryFeatures #-}
-
-_VkGetDeviceGroupPeerMemoryFeatures :: CString
-_VkGetDeviceGroupPeerMemoryFeatures
-  = Ptr "vkGetDeviceGroupPeerMemoryFeatures\NUL"#
-
-{-# INLINE is_VkGetDeviceGroupPeerMemoryFeatures #-}
-
-is_VkGetDeviceGroupPeerMemoryFeatures :: CString -> Bool
-is_VkGetDeviceGroupPeerMemoryFeatures
-  = (EQ ==) . cmpCStrings _VkGetDeviceGroupPeerMemoryFeatures
-
-type VkGetDeviceGroupPeerMemoryFeatures =
-     "vkGetDeviceGroupPeerMemoryFeatures"
-
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
---
--- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
---           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeatures"
-               vkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ heapIndex
-                        -> Word32 -- ^ localDeviceIndex
-                                  -> Word32 -- ^ remoteDeviceIndex
-                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                            -> IO ()
-
-#else
-vkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
-                                         VkDevice -- ^ device
-                                                  ->
-                                           Word32 -- ^ heapIndex
-                                                  ->
-                                             Word32 -- ^ localDeviceIndex
-                                                    ->
-                                               Word32 -- ^ remoteDeviceIndex
-                                                      -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                                      -> IO ()
-vkGetDeviceGroupPeerMemoryFeaturesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetDeviceGroupPeerMemoryFeatures)
-
-{-# NOINLINE vkGetDeviceGroupPeerMemoryFeaturesUnsafe #-}
-#endif
-
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
---
--- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
---           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetDeviceGroupPeerMemoryFeatures"
-               vkGetDeviceGroupPeerMemoryFeaturesSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Word32 -- ^ heapIndex
-                        -> Word32 -- ^ localDeviceIndex
-                                  -> Word32 -- ^ remoteDeviceIndex
-                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                            -> IO ()
-
-#else
-vkGetDeviceGroupPeerMemoryFeaturesSafe ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         Word32 -- ^ heapIndex
-                                                ->
-                                           Word32 -- ^ localDeviceIndex
-                                                  -> Word32 -- ^ remoteDeviceIndex
-                                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                                            -> IO ()
-vkGetDeviceGroupPeerMemoryFeaturesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetDeviceGroupPeerMemoryFeatures)
-
-{-# NOINLINE vkGetDeviceGroupPeerMemoryFeaturesSafe #-}
-#endif
-
--- |
--- > void vkGetDeviceGroupPeerMemoryFeatures
--- >     ( VkDevice device
--- >     , uint32_t heapIndex
--- >     , uint32_t localDeviceIndex
--- >     , uint32_t remoteDeviceIndex
--- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
---
--- or less efficient:
---
--- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
---
--- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
---           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
---
-vkGetDeviceGroupPeerMemoryFeatures ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Word32 -- ^ heapIndex
-                                            ->
-                                       Word32 -- ^ localDeviceIndex
-                                              -> Word32 -- ^ remoteDeviceIndex
-                                                        -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                                        -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetDeviceGroupPeerMemoryFeatures
-  = vkGetDeviceGroupPeerMemoryFeaturesUnsafe
-#else
-vkGetDeviceGroupPeerMemoryFeatures
-  = vkGetDeviceGroupPeerMemoryFeaturesSafe
-
-#endif
-{-# INLINE vkGetDeviceGroupPeerMemoryFeatures #-}
-
--- | > void vkGetDeviceGroupPeerMemoryFeatures
---   >     ( VkDevice device
---   >     , uint32_t heapIndex
---   >     , uint32_t localDeviceIndex
---   >     , uint32_t remoteDeviceIndex
---   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
-type HS_vkGetDeviceGroupPeerMemoryFeatures =
-     VkDevice -- ^ device
-              ->
-       Word32 -- ^ heapIndex
-              -> Word32 -- ^ localDeviceIndex
-                        -> Word32 -- ^ remoteDeviceIndex
-                                  -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
-                                                                  -> IO ()
-
-type PFN_vkGetDeviceGroupPeerMemoryFeatures =
-     FunPtr HS_vkGetDeviceGroupPeerMemoryFeatures
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
-               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
-                 HS_vkGetDeviceGroupPeerMemoryFeatures
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe ::
-               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
-                 HS_vkGetDeviceGroupPeerMemoryFeatures
-
-instance VulkanProc "vkGetDeviceGroupPeerMemoryFeatures" where
-        type VkProcType "vkGetDeviceGroupPeerMemoryFeatures" =
-             HS_vkGetDeviceGroupPeerMemoryFeatures
-        vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeatures
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetDeviceGroupPeerMemoryFeaturesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdSetDeviceMask :: CString
-
-pattern VkCmdSetDeviceMask <- (is_VkCmdSetDeviceMask -> True)
-  where VkCmdSetDeviceMask = _VkCmdSetDeviceMask
-
-{-# INLINE _VkCmdSetDeviceMask #-}
-
-_VkCmdSetDeviceMask :: CString
-_VkCmdSetDeviceMask = Ptr "vkCmdSetDeviceMask\NUL"#
-
-{-# INLINE is_VkCmdSetDeviceMask #-}
-
-is_VkCmdSetDeviceMask :: CString -> Bool
-is_VkCmdSetDeviceMask = (EQ ==) . cmpCStrings _VkCmdSetDeviceMask
-
-type VkCmdSetDeviceMask = "vkCmdSetDeviceMask"
-
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
---
--- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
---           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkCmdSetDeviceMask"
-               vkCmdSetDeviceMaskUnsafe :: VkCommandBuffer -- ^ commandBuffer
-                                                           -> Word32 -- ^ deviceMask
-                                                                     -> IO ()
-
-#else
-vkCmdSetDeviceMaskUnsafe :: VkCommandBuffer -- ^ commandBuffer
-                                            -> Word32 -- ^ deviceMask
-                                                      -> IO ()
-vkCmdSetDeviceMaskUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDeviceMask)
-
-{-# NOINLINE vkCmdSetDeviceMaskUnsafe #-}
-#endif
-
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
---
--- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
---           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkCmdSetDeviceMask"
-               vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
-                                                         -> Word32 -- ^ deviceMask
-                                                                   -> IO ()
-
-#else
-vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
-                                          -> Word32 -- ^ deviceMask
-                                                    -> IO ()
-vkCmdSetDeviceMaskSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDeviceMask)
-
-{-# NOINLINE vkCmdSetDeviceMaskSafe #-}
-#endif
-
--- |
--- Queues: 'graphics', 'compute', 'transfer'.
---
--- Renderpass: @both@
---
--- > void vkCmdSetDeviceMask
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t deviceMask
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
---
--- or less efficient:
---
--- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
---
--- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
---           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
---
-vkCmdSetDeviceMask :: VkCommandBuffer -- ^ commandBuffer
-                                      -> Word32 -- ^ deviceMask
-                                                -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkCmdSetDeviceMask = vkCmdSetDeviceMaskUnsafe
-#else
-vkCmdSetDeviceMask = vkCmdSetDeviceMaskSafe
-
-#endif
-{-# INLINE vkCmdSetDeviceMask #-}
-
--- | Queues: 'graphics', 'compute', 'transfer'.
---
---   Renderpass: @both@
---
---   > void vkCmdSetDeviceMask
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t deviceMask
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
-type HS_vkCmdSetDeviceMask = VkCommandBuffer -- ^ commandBuffer
-                                             -> Word32 -- ^ deviceMask
-                                                       -> IO ()
-
-type PFN_vkCmdSetDeviceMask = FunPtr HS_vkCmdSetDeviceMask
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCmdSetDeviceMaskUnsafe ::
-               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
-
-foreign import ccall safe "dynamic" unwrapVkCmdSetDeviceMaskSafe ::
-               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
-
-instance VulkanProc "vkCmdSetDeviceMask" where
-        type VkProcType "vkCmdSetDeviceMask" = HS_vkCmdSetDeviceMask
-        vkProcSymbol = _VkCmdSetDeviceMask
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDeviceMaskUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkCmdDispatchBase :: CString
-
-pattern VkCmdDispatchBase <- (is_VkCmdDispatchBase -> True)
-  where VkCmdDispatchBase = _VkCmdDispatchBase
-
-{-# INLINE _VkCmdDispatchBase #-}
-
-_VkCmdDispatchBase :: CString
-_VkCmdDispatchBase = Ptr "vkCmdDispatchBase\NUL"#
-
-{-# INLINE is_VkCmdDispatchBase #-}
-
-is_VkCmdDispatchBase :: CString -> Bool
-is_VkCmdDispatchBase = (EQ ==) . cmpCStrings _VkCmdDispatchBase
-
-type VkCmdDispatchBase = "vkCmdDispatchBase"
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
---
--- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
---           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkCmdDispatchBase"
-               vkCmdDispatchBaseUnsafe ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ baseGroupX
-                        -> Word32 -- ^ baseGroupY
-                                  -> Word32 -- ^ baseGroupZ
-                                            -> Word32 -- ^ groupCountX
-                                                      -> Word32 -- ^ groupCountY
-                                                                -> Word32 -- ^ groupCountZ
-                                                                          -> IO ()
-
-#else
-vkCmdDispatchBaseUnsafe ::
-                        VkCommandBuffer -- ^ commandBuffer
-                                        ->
-                          Word32 -- ^ baseGroupX
-                                 -> Word32 -- ^ baseGroupY
-                                           -> Word32 -- ^ baseGroupZ
-                                                     -> Word32 -- ^ groupCountX
-                                                               -> Word32 -- ^ groupCountY
-                                                                         -> Word32 -- ^ groupCountZ
-                                                                                   -> IO ()
-vkCmdDispatchBaseUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatchBase)
-
-{-# NOINLINE vkCmdDispatchBaseUnsafe #-}
-#endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
---
--- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
---           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkCmdDispatchBase" vkCmdDispatchBaseSafe
-               ::
-               VkCommandBuffer -- ^ commandBuffer
-                               ->
-                 Word32 -- ^ baseGroupX
-                        -> Word32 -- ^ baseGroupY
-                                  -> Word32 -- ^ baseGroupZ
-                                            -> Word32 -- ^ groupCountX
-                                                      -> Word32 -- ^ groupCountY
-                                                                -> Word32 -- ^ groupCountZ
-                                                                          -> IO ()
-
-#else
-vkCmdDispatchBaseSafe ::
-                      VkCommandBuffer -- ^ commandBuffer
-                                      ->
-                        Word32 -- ^ baseGroupX
-                               -> Word32 -- ^ baseGroupY
-                                         -> Word32 -- ^ baseGroupZ
-                                                   -> Word32 -- ^ groupCountX
-                                                             -> Word32 -- ^ groupCountY
-                                                                       -> Word32 -- ^ groupCountZ
-                                                                                 -> IO ()
-vkCmdDispatchBaseSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchBase)
-
-{-# NOINLINE vkCmdDispatchBaseSafe #-}
-#endif
-
--- |
--- Queues: 'compute'.
---
--- Renderpass: @outside@
---
--- > void vkCmdDispatchBase
--- >     ( VkCommandBuffer commandBuffer
--- >     , uint32_t baseGroupX
--- >     , uint32_t baseGroupY
--- >     , uint32_t baseGroupZ
--- >     , uint32_t groupCountX
--- >     , uint32_t groupCountY
--- >     , uint32_t groupCountZ
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
---
--- or less efficient:
---
--- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
---
--- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
---           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
---
-vkCmdDispatchBase ::
-                  VkCommandBuffer -- ^ commandBuffer
-                                  ->
-                    Word32 -- ^ baseGroupX
-                           -> Word32 -- ^ baseGroupY
-                                     -> Word32 -- ^ baseGroupZ
-                                               -> Word32 -- ^ groupCountX
-                                                         -> Word32 -- ^ groupCountY
-                                                                   -> Word32 -- ^ groupCountZ
-                                                                             -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkCmdDispatchBase = vkCmdDispatchBaseUnsafe
-#else
-vkCmdDispatchBase = vkCmdDispatchBaseSafe
-
-#endif
-{-# INLINE vkCmdDispatchBase #-}
-
--- | Queues: 'compute'.
---
---   Renderpass: @outside@
---
---   > void vkCmdDispatchBase
---   >     ( VkCommandBuffer commandBuffer
---   >     , uint32_t baseGroupX
---   >     , uint32_t baseGroupY
---   >     , uint32_t baseGroupZ
---   >     , uint32_t groupCountX
---   >     , uint32_t groupCountY
---   >     , uint32_t groupCountZ
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
-type HS_vkCmdDispatchBase =
-     VkCommandBuffer -- ^ commandBuffer
-                     ->
-       Word32 -- ^ baseGroupX
-              -> Word32 -- ^ baseGroupY
-                        -> Word32 -- ^ baseGroupZ
-                                  -> Word32 -- ^ groupCountX
-                                            -> Word32 -- ^ groupCountY
-                                                      -> Word32 -- ^ groupCountZ
-                                                                -> IO ()
-
-type PFN_vkCmdDispatchBase = FunPtr HS_vkCmdDispatchBase
-
-foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchBaseUnsafe
-               :: PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
-
-foreign import ccall safe "dynamic" unwrapVkCmdDispatchBaseSafe ::
-               PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
-
-instance VulkanProc "vkCmdDispatchBase" where
-        type VkProcType "vkCmdDispatchBase" = HS_vkCmdDispatchBase
-        vkProcSymbol = _VkCmdDispatchBase
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchBaseUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO =
-        VkStructureType 1000060000
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO =
-        VkStructureType 1000060003
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO =
-        VkStructureType 1000060004
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO =
-        VkStructureType 1000060005
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO =
-        VkStructureType 1000060006
-
--- | bitpos = @3@
-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT ::
-        VkPipelineCreateBitmask a
-
-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT =
-        VkPipelineCreateBitmask 8
-
--- | bitpos = @4@
-pattern VK_PIPELINE_CREATE_DISPATCH_BASE ::
-        VkPipelineCreateBitmask a
-
-pattern VK_PIPELINE_CREATE_DISPATCH_BASE =
-        VkPipelineCreateBitmask 16
-
--- | Dependency is across devices
---
---   bitpos = @2@
-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyBitmask a
-
-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyBitmask 4
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO =
-        VkStructureType 1000060013
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO =
-        VkStructureType 1000060014
-
--- | Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image
---
---   bitpos = @6@
-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT ::
-        VkImageCreateBitmask a
-
-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT =
-        VkImageCreateBitmask 64
-
-pattern VkEnumeratePhysicalDeviceGroups :: CString
-
-pattern VkEnumeratePhysicalDeviceGroups <-
-        (is_VkEnumeratePhysicalDeviceGroups -> True)
-  where VkEnumeratePhysicalDeviceGroups
-          = _VkEnumeratePhysicalDeviceGroups
-
-{-# INLINE _VkEnumeratePhysicalDeviceGroups #-}
-
-_VkEnumeratePhysicalDeviceGroups :: CString
-_VkEnumeratePhysicalDeviceGroups
-  = Ptr "vkEnumeratePhysicalDeviceGroups\NUL"#
-
-{-# INLINE is_VkEnumeratePhysicalDeviceGroups #-}
-
-is_VkEnumeratePhysicalDeviceGroups :: CString -> Bool
-is_VkEnumeratePhysicalDeviceGroups
-  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDeviceGroups
-
-type VkEnumeratePhysicalDeviceGroups =
-     "vkEnumeratePhysicalDeviceGroups"
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
---
--- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
---           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroups"
-               vkEnumeratePhysicalDeviceGroupsUnsafe ::
-               VkInstance -- ^ instance
-                          ->
-                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                   -> IO VkResult
-
-#else
-vkEnumeratePhysicalDeviceGroupsUnsafe ::
-                                      VkInstance -- ^ instance
-                                                 ->
-                                        Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                                                   ->
-                                          Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                              -> IO VkResult
-vkEnumeratePhysicalDeviceGroupsUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkEnumeratePhysicalDeviceGroups)
-
-{-# NOINLINE vkEnumeratePhysicalDeviceGroupsUnsafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
---
--- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
---           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkEnumeratePhysicalDeviceGroups"
-               vkEnumeratePhysicalDeviceGroupsSafe ::
-               VkInstance -- ^ instance
-                          ->
-                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                   -> IO VkResult
-
-#else
-vkEnumeratePhysicalDeviceGroupsSafe ::
-                                    VkInstance -- ^ instance
-                                               ->
-                                      Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                                                 ->
-                                        Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                            -> IO VkResult
-vkEnumeratePhysicalDeviceGroupsSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkEnumeratePhysicalDeviceGroups)
-
-{-# NOINLINE vkEnumeratePhysicalDeviceGroupsSafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
--- > VkResult vkEnumeratePhysicalDeviceGroups
--- >     ( VkInstance instance
--- >     , uint32_t* pPhysicalDeviceGroupCount
--- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
---
--- or less efficient:
---
--- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
---
--- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
---           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
---
-vkEnumeratePhysicalDeviceGroups ::
-                                VkInstance -- ^ instance
-                                           ->
-                                  Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                                             -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                                                    -> IO VkResult
-#ifdef UNSAFE_FFI_DEFAULT
-vkEnumeratePhysicalDeviceGroups
-  = vkEnumeratePhysicalDeviceGroupsUnsafe
-#else
-vkEnumeratePhysicalDeviceGroups
-  = vkEnumeratePhysicalDeviceGroupsSafe
-
-#endif
-{-# INLINE vkEnumeratePhysicalDeviceGroups #-}
-
--- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
---
---   > VkResult vkEnumeratePhysicalDeviceGroups
---   >     ( VkInstance instance
---   >     , uint32_t* pPhysicalDeviceGroupCount
---   >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
-type HS_vkEnumeratePhysicalDeviceGroups =
-     VkInstance -- ^ instance
-                ->
-       Ptr Word32 -- ^ pPhysicalDeviceGroupCount
-                  -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
-                                                         -> IO VkResult
-
-type PFN_vkEnumeratePhysicalDeviceGroups =
-     FunPtr HS_vkEnumeratePhysicalDeviceGroups
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkEnumeratePhysicalDeviceGroupsUnsafe ::
-               PFN_vkEnumeratePhysicalDeviceGroups ->
-                 HS_vkEnumeratePhysicalDeviceGroups
-
-foreign import ccall safe "dynamic"
-               unwrapVkEnumeratePhysicalDeviceGroupsSafe ::
-               PFN_vkEnumeratePhysicalDeviceGroups ->
-                 HS_vkEnumeratePhysicalDeviceGroups
-
-instance VulkanProc "vkEnumeratePhysicalDeviceGroups" where
-        type VkProcType "vkEnumeratePhysicalDeviceGroups" =
-             HS_vkEnumeratePhysicalDeviceGroups
-        vkProcSymbol = _VkEnumeratePhysicalDeviceGroups
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkEnumeratePhysicalDeviceGroupsUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES =
-        VkStructureType 1000070000
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO =
-        VkStructureType 1000070001
-
--- | If set, heap allocations allocate multiple instances by default
---
---   bitpos = @1@
-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT :: VkMemoryHeapBitmask a
-
-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapBitmask 2
-
-pattern VkGetImageMemoryRequirements2 :: CString
-
-pattern VkGetImageMemoryRequirements2 <-
-        (is_VkGetImageMemoryRequirements2 -> True)
-  where VkGetImageMemoryRequirements2
-          = _VkGetImageMemoryRequirements2
-
-{-# INLINE _VkGetImageMemoryRequirements2 #-}
-
-_VkGetImageMemoryRequirements2 :: CString
-_VkGetImageMemoryRequirements2
-  = Ptr "vkGetImageMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetImageMemoryRequirements2 #-}
-
-is_VkGetImageMemoryRequirements2 :: CString -> Bool
-is_VkGetImageMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements2
-
-type VkGetImageMemoryRequirements2 =
-     "vkGetImageMemoryRequirements2"
-
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
---
--- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
---           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetImageMemoryRequirements2"
-               vkGetImageMemoryRequirements2Unsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                    ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
-vkGetImageMemoryRequirements2Unsafe ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                                         ->
-                                        Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                                  -> IO ()
-vkGetImageMemoryRequirements2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetImageMemoryRequirements2)
-
-{-# NOINLINE vkGetImageMemoryRequirements2Unsafe #-}
-#endif
-
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
---
--- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
---           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetImageMemoryRequirements2"
-               vkGetImageMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                    ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
-vkGetImageMemoryRequirements2Safe ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                                       ->
-                                      Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                                -> IO ()
-vkGetImageMemoryRequirements2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageMemoryRequirements2)
-
-{-# NOINLINE vkGetImageMemoryRequirements2Safe #-}
-#endif
-
--- |
--- > void vkGetImageMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
---
--- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
---           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
---
-vkGetImageMemoryRequirements2 ::
-                              VkDevice -- ^ device
-                                       ->
-                                Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                                                   ->
-                                  Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                            -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2Unsafe
-#else
-vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2Safe
-
-#endif
-{-# INLINE vkGetImageMemoryRequirements2 #-}
-
--- | > void vkGetImageMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkImageMemoryRequirementsInfo2* pInfo
---   >     , VkMemoryRequirements2* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetImageMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
-                                          ->
-         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                   -> IO ()
-
-type PFN_vkGetImageMemoryRequirements2 =
-     FunPtr HS_vkGetImageMemoryRequirements2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageMemoryRequirements2Unsafe ::
-               PFN_vkGetImageMemoryRequirements2 ->
-                 HS_vkGetImageMemoryRequirements2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageMemoryRequirements2Safe ::
-               PFN_vkGetImageMemoryRequirements2 ->
-                 HS_vkGetImageMemoryRequirements2
-
-instance VulkanProc "vkGetImageMemoryRequirements2" where
-        type VkProcType "vkGetImageMemoryRequirements2" =
-             HS_vkGetImageMemoryRequirements2
-        vkProcSymbol = _VkGetImageMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetImageMemoryRequirements2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetBufferMemoryRequirements2 :: CString
-
-pattern VkGetBufferMemoryRequirements2 <-
-        (is_VkGetBufferMemoryRequirements2 -> True)
-  where VkGetBufferMemoryRequirements2
-          = _VkGetBufferMemoryRequirements2
-
-{-# INLINE _VkGetBufferMemoryRequirements2 #-}
-
-_VkGetBufferMemoryRequirements2 :: CString
-_VkGetBufferMemoryRequirements2
-  = Ptr "vkGetBufferMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetBufferMemoryRequirements2 #-}
-
-is_VkGetBufferMemoryRequirements2 :: CString -> Bool
-is_VkGetBufferMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements2
-
-type VkGetBufferMemoryRequirements2 =
-     "vkGetBufferMemoryRequirements2"
-
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
---
--- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
---           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetBufferMemoryRequirements2"
-               vkGetBufferMemoryRequirements2Unsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                     ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
-vkGetBufferMemoryRequirements2Unsafe ::
-                                     VkDevice -- ^ device
-                                              ->
-                                       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                                           ->
-                                         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                                   -> IO ()
-vkGetBufferMemoryRequirements2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetBufferMemoryRequirements2)
-
-{-# NOINLINE vkGetBufferMemoryRequirements2Unsafe #-}
-#endif
-
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
---
--- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
---           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetBufferMemoryRequirements2"
-               vkGetBufferMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                     ->
-                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                             -> IO ()
-
-#else
-vkGetBufferMemoryRequirements2Safe ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                                         ->
-                                       Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                                 -> IO ()
-vkGetBufferMemoryRequirements2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetBufferMemoryRequirements2)
-
-{-# NOINLINE vkGetBufferMemoryRequirements2Safe #-}
-#endif
-
--- |
--- > void vkGetBufferMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkBufferMemoryRequirementsInfo2* pInfo
--- >     , VkMemoryRequirements2* pMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
---
--- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
---           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
---
-vkGetBufferMemoryRequirements2 ::
-                               VkDevice -- ^ device
-                                        ->
-                                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                                                     ->
-                                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                                             -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetBufferMemoryRequirements2
-  = vkGetBufferMemoryRequirements2Unsafe
-#else
-vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2Safe
-
-#endif
-{-# INLINE vkGetBufferMemoryRequirements2 #-}
-
--- | > void vkGetBufferMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkBufferMemoryRequirementsInfo2* pInfo
---   >     , VkMemoryRequirements2* pMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetBufferMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
-                                           ->
-         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
-                                   -> IO ()
-
-type PFN_vkGetBufferMemoryRequirements2 =
-     FunPtr HS_vkGetBufferMemoryRequirements2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetBufferMemoryRequirements2Unsafe ::
-               PFN_vkGetBufferMemoryRequirements2 ->
-                 HS_vkGetBufferMemoryRequirements2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetBufferMemoryRequirements2Safe ::
-               PFN_vkGetBufferMemoryRequirements2 ->
-                 HS_vkGetBufferMemoryRequirements2
-
-instance VulkanProc "vkGetBufferMemoryRequirements2" where
-        type VkProcType "vkGetBufferMemoryRequirements2" =
-             HS_vkGetBufferMemoryRequirements2
-        vkProcSymbol = _VkGetBufferMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetBufferMemoryRequirements2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetImageSparseMemoryRequirements2 :: CString
-
-pattern VkGetImageSparseMemoryRequirements2 <-
-        (is_VkGetImageSparseMemoryRequirements2 -> True)
-  where VkGetImageSparseMemoryRequirements2
-          = _VkGetImageSparseMemoryRequirements2
-
-{-# INLINE _VkGetImageSparseMemoryRequirements2 #-}
-
-_VkGetImageSparseMemoryRequirements2 :: CString
-_VkGetImageSparseMemoryRequirements2
-  = Ptr "vkGetImageSparseMemoryRequirements2\NUL"#
-
-{-# INLINE is_VkGetImageSparseMemoryRequirements2 #-}
-
-is_VkGetImageSparseMemoryRequirements2 :: CString -> Bool
-is_VkGetImageSparseMemoryRequirements2
-  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements2
-
-type VkGetImageSparseMemoryRequirements2 =
-     "vkGetImageSparseMemoryRequirements2"
-
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
---
--- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
---           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetImageSparseMemoryRequirements2"
-               vkGetImageSparseMemoryRequirements2Unsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                          ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                      -> IO ()
-
-#else
-vkGetImageSparseMemoryRequirements2Unsafe ::
-                                          VkDevice -- ^ device
-                                                   ->
-                                            Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                                                     ->
-                                              Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                         ->
-                                                Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                                     -> IO ()
-vkGetImageSparseMemoryRequirements2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetImageSparseMemoryRequirements2)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirements2Unsafe #-}
-#endif
-
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
---
--- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
---           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetImageSparseMemoryRequirements2"
-               vkGetImageSparseMemoryRequirements2Safe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                          ->
-                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                      -> IO ()
-
-#else
-vkGetImageSparseMemoryRequirements2Safe ::
-                                        VkDevice -- ^ device
-                                                 ->
-                                          Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                                                   ->
-                                            Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                       ->
-                                              Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                                   -> IO ()
-vkGetImageSparseMemoryRequirements2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetImageSparseMemoryRequirements2)
-
-{-# NOINLINE vkGetImageSparseMemoryRequirements2Safe #-}
-#endif
-
--- |
--- > void vkGetImageSparseMemoryRequirements2
--- >     ( VkDevice device
--- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
--- >     , uint32_t* pSparseMemoryRequirementCount
--- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
---
--- or less efficient:
---
--- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
---
--- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
---           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
---
-vkGetImageSparseMemoryRequirements2 ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                                               ->
-                                        Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                                                   -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                                                           -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetImageSparseMemoryRequirements2
-  = vkGetImageSparseMemoryRequirements2Unsafe
-#else
-vkGetImageSparseMemoryRequirements2
-  = vkGetImageSparseMemoryRequirements2Safe
-
-#endif
-{-# INLINE vkGetImageSparseMemoryRequirements2 #-}
-
--- | > void vkGetImageSparseMemoryRequirements2
---   >     ( VkDevice device
---   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
---   >     , uint32_t* pSparseMemoryRequirementCount
---   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
-type HS_vkGetImageSparseMemoryRequirements2 =
-     VkDevice -- ^ device
-              ->
-       Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
-                                                ->
-         Ptr Word32 -- ^ pSparseMemoryRequirementCount
-                    -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
-                                                            -> IO ()
-
-type PFN_vkGetImageSparseMemoryRequirements2 =
-     FunPtr HS_vkGetImageSparseMemoryRequirements2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirements2Unsafe ::
-               PFN_vkGetImageSparseMemoryRequirements2 ->
-                 HS_vkGetImageSparseMemoryRequirements2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetImageSparseMemoryRequirements2Safe ::
-               PFN_vkGetImageSparseMemoryRequirements2 ->
-                 HS_vkGetImageSparseMemoryRequirements2
-
-instance VulkanProc "vkGetImageSparseMemoryRequirements2" where
-        type VkProcType "vkGetImageSparseMemoryRequirements2" =
-             HS_vkGetImageSparseMemoryRequirements2
-        vkProcSymbol = _VkGetImageSparseMemoryRequirements2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetImageSparseMemoryRequirements2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirements2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146000
-
-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146001
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 =
-        VkStructureType 1000146002
-
-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 =
-        VkStructureType 1000146003
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 =
-        VkStructureType 1000146004
-
-pattern VkGetPhysicalDeviceFeatures2 :: CString
-
-pattern VkGetPhysicalDeviceFeatures2 <-
-        (is_VkGetPhysicalDeviceFeatures2 -> True)
-  where VkGetPhysicalDeviceFeatures2 = _VkGetPhysicalDeviceFeatures2
-
-{-# INLINE _VkGetPhysicalDeviceFeatures2 #-}
-
-_VkGetPhysicalDeviceFeatures2 :: CString
-_VkGetPhysicalDeviceFeatures2
-  = Ptr "vkGetPhysicalDeviceFeatures2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceFeatures2 #-}
-
-is_VkGetPhysicalDeviceFeatures2 :: CString -> Bool
-is_VkGetPhysicalDeviceFeatures2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures2
-
-type VkGetPhysicalDeviceFeatures2 = "vkGetPhysicalDeviceFeatures2"
-
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
---
--- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
---           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2"
-               vkGetPhysicalDeviceFeatures2Unsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                 -> IO ()
-
-#else
-vkGetPhysicalDeviceFeatures2Unsafe ::
-                                   VkPhysicalDevice -- ^ physicalDevice
-                                                    -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                                     -> IO ()
-vkGetPhysicalDeviceFeatures2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceFeatures2)
-
-{-# NOINLINE vkGetPhysicalDeviceFeatures2Unsafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
---
--- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
---           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetPhysicalDeviceFeatures2"
-               vkGetPhysicalDeviceFeatures2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                 -> IO ()
-
-#else
-vkGetPhysicalDeviceFeatures2Safe ::
-                                 VkPhysicalDevice -- ^ physicalDevice
-                                                  -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                                   -> IO ()
-vkGetPhysicalDeviceFeatures2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceFeatures2)
-
-{-# NOINLINE vkGetPhysicalDeviceFeatures2Safe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceFeatures2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceFeatures2* pFeatures
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
---
--- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
---           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
---
-vkGetPhysicalDeviceFeatures2 ::
-                             VkPhysicalDevice -- ^ physicalDevice
-                                              -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                                               -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2Unsafe
-#else
-vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2Safe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceFeatures2 #-}
-
--- | > void vkGetPhysicalDeviceFeatures2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceFeatures2* pFeatures
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFeatures2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
-                                                       -> IO ()
-
-type PFN_vkGetPhysicalDeviceFeatures2 =
-     FunPtr HS_vkGetPhysicalDeviceFeatures2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFeatures2Unsafe ::
-               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceFeatures2Safe ::
-               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
-
-instance VulkanProc "vkGetPhysicalDeviceFeatures2" where
-        type VkProcType "vkGetPhysicalDeviceFeatures2" =
-             HS_vkGetPhysicalDeviceFeatures2
-        vkProcSymbol = _VkGetPhysicalDeviceFeatures2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeatures2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceProperties2 :: CString
-
-pattern VkGetPhysicalDeviceProperties2 <-
-        (is_VkGetPhysicalDeviceProperties2 -> True)
-  where VkGetPhysicalDeviceProperties2
-          = _VkGetPhysicalDeviceProperties2
-
-{-# INLINE _VkGetPhysicalDeviceProperties2 #-}
-
-_VkGetPhysicalDeviceProperties2 :: CString
-_VkGetPhysicalDeviceProperties2
-  = Ptr "vkGetPhysicalDeviceProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceProperties2 #-}
-
-is_VkGetPhysicalDeviceProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties2
-
-type VkGetPhysicalDeviceProperties2 =
-     "vkGetPhysicalDeviceProperties2"
-
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
---
--- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
---           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetPhysicalDeviceProperties2"
-               vkGetPhysicalDeviceProperties2Unsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                   -> IO ()
-
-#else
-vkGetPhysicalDeviceProperties2Unsafe ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceProperties2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceProperties2Unsafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
---
--- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
---           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetPhysicalDeviceProperties2"
-               vkGetPhysicalDeviceProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                   -> IO ()
-
-#else
-vkGetPhysicalDeviceProperties2Safe ::
-                                   VkPhysicalDevice -- ^ physicalDevice
-                                                    -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                                       -> IO ()
-vkGetPhysicalDeviceProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceProperties2Safe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
---
--- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
---           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
---
-vkGetPhysicalDeviceProperties2 ::
-                               VkPhysicalDevice -- ^ physicalDevice
-                                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                                                   -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceProperties2
-  = vkGetPhysicalDeviceProperties2Unsafe
-#else
-vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2Safe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceProperties2 #-}
-
--- | > void vkGetPhysicalDeviceProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceProperties2* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
-                                                         -> IO ()
-
-type PFN_vkGetPhysicalDeviceProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceProperties2Unsafe ::
-               PFN_vkGetPhysicalDeviceProperties2 ->
-                 HS_vkGetPhysicalDeviceProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceProperties2Safe ::
-               PFN_vkGetPhysicalDeviceProperties2 ->
-                 HS_vkGetPhysicalDeviceProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceProperties2" where
-        type VkProcType "vkGetPhysicalDeviceProperties2" =
-             HS_vkGetPhysicalDeviceProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceProperties2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceFormatProperties2 <-
-        (is_VkGetPhysicalDeviceFormatProperties2 -> True)
-  where VkGetPhysicalDeviceFormatProperties2
-          = _VkGetPhysicalDeviceFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceFormatProperties2 #-}
-
-_VkGetPhysicalDeviceFormatProperties2 :: CString
-_VkGetPhysicalDeviceFormatProperties2
-  = Ptr "vkGetPhysicalDeviceFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceFormatProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceFormatProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties2
-
-type VkGetPhysicalDeviceFormatProperties2 =
-     "vkGetPhysicalDeviceFormatProperties2"
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties2"
-               vkGetPhysicalDeviceFormatProperties2Unsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                       -> IO ()
-
-#else
-vkGetPhysicalDeviceFormatProperties2Unsafe ::
-                                           VkPhysicalDevice -- ^ physicalDevice
-                                                            ->
-                                             VkFormat -- ^ format
-                                                      -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceFormatProperties2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatProperties2Unsafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetPhysicalDeviceFormatProperties2"
-               vkGetPhysicalDeviceFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> VkFormat -- ^ format
-                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                       -> IO ()
-
-#else
-vkGetPhysicalDeviceFormatProperties2Safe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           VkFormat -- ^ format
-                                                    -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                               -> IO ()
-vkGetPhysicalDeviceFormatProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceFormatProperties2Safe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkFormat format
--- >     , VkFormatProperties2* pFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
---
-vkGetPhysicalDeviceFormatProperties2 ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       VkFormat -- ^ format
-                                                -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                                           -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceFormatProperties2
-  = vkGetPhysicalDeviceFormatProperties2Unsafe
-#else
-vkGetPhysicalDeviceFormatProperties2
-  = vkGetPhysicalDeviceFormatProperties2Safe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceFormatProperties2 #-}
-
--- | > void vkGetPhysicalDeviceFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkFormat format
---   >     , VkFormatProperties2* pFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> VkFormat -- ^ format
-                                  -> Ptr VkFormatProperties2 -- ^ pFormatProperties
-                                                             -> IO ()
-
-type PFN_vkGetPhysicalDeviceFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceFormatProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatProperties2Unsafe ::
-               PFN_vkGetPhysicalDeviceFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceFormatProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceFormatProperties2Safe ::
-               PFN_vkGetPhysicalDeviceFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceFormatProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceFormatProperties2" where
-        type VkProcType "vkGetPhysicalDeviceFormatProperties2" =
-             HS_vkGetPhysicalDeviceFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceFormatProperties2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceFormatProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceImageFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceImageFormatProperties2 <-
-        (is_VkGetPhysicalDeviceImageFormatProperties2 -> True)
-  where VkGetPhysicalDeviceImageFormatProperties2
-          = _VkGetPhysicalDeviceImageFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceImageFormatProperties2 #-}
-
-_VkGetPhysicalDeviceImageFormatProperties2 :: CString
-_VkGetPhysicalDeviceImageFormatProperties2
-  = Ptr "vkGetPhysicalDeviceImageFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceImageFormatProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceImageFormatProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties2
-
-type VkGetPhysicalDeviceImageFormatProperties2 =
-     "vkGetPhysicalDeviceImageFormatProperties2"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceImageFormatProperties2"
-               vkGetPhysicalDeviceImageFormatProperties2Unsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                      ->
-                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                -> IO VkResult
-
-#else
-vkGetPhysicalDeviceImageFormatProperties2Unsafe ::
-                                                VkPhysicalDevice -- ^ physicalDevice
-                                                                 ->
-                                                  Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                                                       ->
-                                                    Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                                                 -> IO VkResult
-vkGetPhysicalDeviceImageFormatProperties2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2Unsafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceImageFormatProperties2"
-               vkGetPhysicalDeviceImageFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                      ->
-                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                -> IO VkResult
-
-#else
-vkGetPhysicalDeviceImageFormatProperties2Safe ::
-                                              VkPhysicalDevice -- ^ physicalDevice
-                                                               ->
-                                                Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                                                     ->
-                                                  Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                                               -> IO VkResult
-vkGetPhysicalDeviceImageFormatProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2Safe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
--- > VkResult vkGetPhysicalDeviceImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
--- >     , VkImageFormatProperties2* pImageFormatProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
---
-vkGetPhysicalDeviceImageFormatProperties2 ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                                                                 ->
-                                              Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                                                           -> IO VkResult
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceImageFormatProperties2
-  = vkGetPhysicalDeviceImageFormatProperties2Unsafe
-#else
-vkGetPhysicalDeviceImageFormatProperties2
-  = vkGetPhysicalDeviceImageFormatProperties2Safe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceImageFormatProperties2 #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
---
---   > VkResult vkGetPhysicalDeviceImageFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
---   >     , VkImageFormatProperties2* pImageFormatProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceImageFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
-                                            ->
-         Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
-                                      -> IO VkResult
-
-type PFN_vkGetPhysicalDeviceImageFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatProperties2Unsafe ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceImageFormatProperties2Safe ::
-               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceImageFormatProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceImageFormatProperties2" =
-             HS_vkGetPhysicalDeviceImageFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceImageFormatProperties2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceImageFormatProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
-
-pattern VkGetPhysicalDeviceQueueFamilyProperties2 <-
-        (is_VkGetPhysicalDeviceQueueFamilyProperties2 -> True)
-  where VkGetPhysicalDeviceQueueFamilyProperties2
-          = _VkGetPhysicalDeviceQueueFamilyProperties2
-
-{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties2 #-}
-
-_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
-_VkGetPhysicalDeviceQueueFamilyProperties2
-  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties2 #-}
-
-is_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceQueueFamilyProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties2
-
-type VkGetPhysicalDeviceQueueFamilyProperties2 =
-     "vkGetPhysicalDeviceQueueFamilyProperties2"
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
---
--- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
---           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceQueueFamilyProperties2"
-               vkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                            -> IO ()
-
-#else
-vkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
-                                                VkPhysicalDevice -- ^ physicalDevice
-                                                                 ->
-                                                  Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                             ->
-                                                    Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceQueueFamilyProperties2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceQueueFamilyProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2Unsafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
---
--- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
---           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceQueueFamilyProperties2"
-               vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                            -> IO ()
-
-#else
-vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
-                                              VkPhysicalDevice -- ^ physicalDevice
-                                                               ->
-                                                Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                           -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                                                           -> IO ()
-vkGetPhysicalDeviceQueueFamilyProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2Safe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceQueueFamilyProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , uint32_t* pQueueFamilyPropertyCount
--- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
---
--- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
---           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
---
-vkGetPhysicalDeviceQueueFamilyProperties2 ::
-                                          VkPhysicalDevice -- ^ physicalDevice
-                                                           ->
-                                            Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                                                       -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                                                       -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceQueueFamilyProperties2
-  = vkGetPhysicalDeviceQueueFamilyProperties2Unsafe
-#else
-vkGetPhysicalDeviceQueueFamilyProperties2
-  = vkGetPhysicalDeviceQueueFamilyProperties2Safe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceQueueFamilyProperties2 #-}
-
--- | > void vkGetPhysicalDeviceQueueFamilyProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , uint32_t* pQueueFamilyPropertyCount
---   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceQueueFamilyProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr Word32 -- ^ pQueueFamilyPropertyCount
-                  -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
-                                                  -> IO ()
-
-type PFN_vkGetPhysicalDeviceQueueFamilyProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe ::
-               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
-                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2" =
-             HS_vkGetPhysicalDeviceQueueFamilyProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceMemoryProperties2 :: CString
-
-pattern VkGetPhysicalDeviceMemoryProperties2 <-
-        (is_VkGetPhysicalDeviceMemoryProperties2 -> True)
-  where VkGetPhysicalDeviceMemoryProperties2
-          = _VkGetPhysicalDeviceMemoryProperties2
-
-{-# INLINE _VkGetPhysicalDeviceMemoryProperties2 #-}
-
-_VkGetPhysicalDeviceMemoryProperties2 :: CString
-_VkGetPhysicalDeviceMemoryProperties2
-  = Ptr "vkGetPhysicalDeviceMemoryProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceMemoryProperties2 #-}
-
-is_VkGetPhysicalDeviceMemoryProperties2 :: CString -> Bool
-is_VkGetPhysicalDeviceMemoryProperties2
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties2
-
-type VkGetPhysicalDeviceMemoryProperties2 =
-     "vkGetPhysicalDeviceMemoryProperties2"
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
---
--- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
---           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties2"
-               vkGetPhysicalDeviceMemoryProperties2Unsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                         -> IO ()
-
-#else
-vkGetPhysicalDeviceMemoryProperties2Unsafe ::
-                                           VkPhysicalDevice -- ^ physicalDevice
-                                                            ->
-                                             Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                                   -> IO ()
-vkGetPhysicalDeviceMemoryProperties2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceMemoryProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2Unsafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
---
--- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
---           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties2"
-               vkGetPhysicalDeviceMemoryProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                         -> IO ()
-
-#else
-vkGetPhysicalDeviceMemoryProperties2Safe ::
-                                         VkPhysicalDevice -- ^ physicalDevice
-                                                          ->
-                                           Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceMemoryProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2Safe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceMemoryProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
---
--- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
---           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
---
-vkGetPhysicalDeviceMemoryProperties2 ::
-                                     VkPhysicalDevice -- ^ physicalDevice
-                                                      ->
-                                       Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                                             -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceMemoryProperties2
-  = vkGetPhysicalDeviceMemoryProperties2Unsafe
-#else
-vkGetPhysicalDeviceMemoryProperties2
-  = vkGetPhysicalDeviceMemoryProperties2Safe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceMemoryProperties2 #-}
-
--- | > void vkGetPhysicalDeviceMemoryProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceMemoryProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
-                                                               -> IO ()
-
-type PFN_vkGetPhysicalDeviceMemoryProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceMemoryProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryProperties2Unsafe ::
-               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
-                 HS_vkGetPhysicalDeviceMemoryProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceMemoryProperties2Safe ::
-               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
-                 HS_vkGetPhysicalDeviceMemoryProperties2
-
-instance VulkanProc "vkGetPhysicalDeviceMemoryProperties2" where
-        type VkProcType "vkGetPhysicalDeviceMemoryProperties2" =
-             HS_vkGetPhysicalDeviceMemoryProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceMemoryProperties2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceMemoryProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
-
-pattern VkGetPhysicalDeviceSparseImageFormatProperties2 <-
-        (is_VkGetPhysicalDeviceSparseImageFormatProperties2 -> True)
-  where VkGetPhysicalDeviceSparseImageFormatProperties2
-          = _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-
-_VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
-_VkGetPhysicalDeviceSparseImageFormatProperties2
-  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-
-is_VkGetPhysicalDeviceSparseImageFormatProperties2 ::
-                                                   CString -> Bool
-is_VkGetPhysicalDeviceSparseImageFormatProperties2
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-type VkGetPhysicalDeviceSparseImageFormatProperties2 =
-     "vkGetPhysicalDeviceSparseImageFormatProperties2"
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceSparseImageFormatProperties2"
-               vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                            ->
-                   Ptr Word32 -- ^ pPropertyCount
-                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                    -> IO ()
-
-#else
-vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
-                                                      VkPhysicalDevice -- ^ physicalDevice
-                                                                       ->
-                                                        Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                          ->
-                                                          Ptr Word32 -- ^ pPropertyCount
-                                                                     ->
-                                                            Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                                               ->
-                                                              IO ()
-vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceSparseImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
-             #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceSparseImageFormatProperties2"
-               vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                            ->
-                   Ptr Word32 -- ^ pPropertyCount
-                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                    -> IO ()
-
-#else
-vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
-                                                    VkPhysicalDevice -- ^ physicalDevice
-                                                                     ->
-                                                      Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                                                                 ->
-                                                        Ptr Word32 -- ^ pPropertyCount
-                                                                   ->
-                                                          Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                                             ->
-                                                            IO ()
-vkGetPhysicalDeviceSparseImageFormatProperties2Safe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties2)
-
-{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2Safe
-             #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceSparseImageFormatProperties2
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
--- >     , uint32_t* pPropertyCount
--- >     , VkSparseImageFormatProperties2* pProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
---
--- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
---           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
---
-vkGetPhysicalDeviceSparseImageFormatProperties2 ::
-                                                VkPhysicalDevice -- ^ physicalDevice
-                                                                 ->
-                                                  Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                                                             ->
-                                                    Ptr Word32 -- ^ pPropertyCount
-                                                               ->
-                                                      Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                                                         -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceSparseImageFormatProperties2
-  = vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
-#else
-vkGetPhysicalDeviceSparseImageFormatProperties2
-  = vkGetPhysicalDeviceSparseImageFormatProperties2Safe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceSparseImageFormatProperties2 #-}
-
--- | > void vkGetPhysicalDeviceSparseImageFormatProperties2
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
---   >     , uint32_t* pPropertyCount
---   >     , VkSparseImageFormatProperties2* pProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceSparseImageFormatProperties2 =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
-                                                  ->
-         Ptr Word32 -- ^ pPropertyCount
-                    -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
-                                                          -> IO ()
-
-type PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 =
-     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
-               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
-                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-
-instance VulkanProc
-           "vkGetPhysicalDeviceSparseImageFormatProperties2"
-         where
-        type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties2" =
-             HS_vkGetPhysicalDeviceSparseImageFormatProperties2
-        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 =
-        VkStructureType 1000059000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 =
-        VkStructureType 1000059001
-
-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059002
-
-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 =
-        VkStructureType 1000059004
-
-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 =
-        VkStructureType 1000059005
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 =
-        VkStructureType 1000059006
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 =
-        VkStructureType 1000059007
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
-        = VkStructureType 1000059008
-
-pattern VkTrimCommandPool :: CString
-
-pattern VkTrimCommandPool <- (is_VkTrimCommandPool -> True)
-  where VkTrimCommandPool = _VkTrimCommandPool
-
-{-# INLINE _VkTrimCommandPool #-}
-
-_VkTrimCommandPool :: CString
-_VkTrimCommandPool = Ptr "vkTrimCommandPool\NUL"#
-
-{-# INLINE is_VkTrimCommandPool #-}
-
-is_VkTrimCommandPool :: CString -> Bool
-is_VkTrimCommandPool = (EQ ==) . cmpCStrings _VkTrimCommandPool
-
-type VkTrimCommandPool = "vkTrimCommandPool"
-
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
---
--- or less efficient:
---
--- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
---
--- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
---           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkTrimCommandPool"
-               vkTrimCommandPoolUnsafe ::
-               VkDevice -- ^ device
-                        -> VkCommandPool -- ^ commandPool
-                                         -> VkCommandPoolTrimFlags -- ^ flags
-                                                                   -> IO ()
-
-#else
-vkTrimCommandPoolUnsafe ::
-                        VkDevice -- ^ device
-                                 -> VkCommandPool -- ^ commandPool
-                                                  -> VkCommandPoolTrimFlags -- ^ flags
-                                                                            -> IO ()
-vkTrimCommandPoolUnsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkTrimCommandPool)
-
-{-# NOINLINE vkTrimCommandPoolUnsafe #-}
-#endif
-
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
---
--- or less efficient:
---
--- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
---
--- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
---           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkTrimCommandPool" vkTrimCommandPoolSafe
-               :: VkDevice -- ^ device
-                           -> VkCommandPool -- ^ commandPool
-                                            -> VkCommandPoolTrimFlags -- ^ flags
-                                                                      -> IO ()
-
-#else
-vkTrimCommandPoolSafe ::
-                      VkDevice -- ^ device
-                               -> VkCommandPool -- ^ commandPool
-                                                -> VkCommandPoolTrimFlags -- ^ flags
-                                                                          -> IO ()
-vkTrimCommandPoolSafe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkTrimCommandPool)
-
-{-# NOINLINE vkTrimCommandPoolSafe #-}
-#endif
-
--- |
--- > void vkTrimCommandPool
--- >     ( VkDevice device
--- >     , VkCommandPool commandPool
--- >     , VkCommandPoolTrimFlags flags
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
---
--- or less efficient:
---
--- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
---
--- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
---           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
---
-vkTrimCommandPool ::
-                  VkDevice -- ^ device
-                           -> VkCommandPool -- ^ commandPool
-                                            -> VkCommandPoolTrimFlags -- ^ flags
-                                                                      -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkTrimCommandPool = vkTrimCommandPoolUnsafe
-#else
-vkTrimCommandPool = vkTrimCommandPoolSafe
-
-#endif
-{-# INLINE vkTrimCommandPool #-}
-
--- | > void vkTrimCommandPool
---   >     ( VkDevice device
---   >     , VkCommandPool commandPool
---   >     , VkCommandPoolTrimFlags flags
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
-type HS_vkTrimCommandPool =
-     VkDevice -- ^ device
-              -> VkCommandPool -- ^ commandPool
-                               -> VkCommandPoolTrimFlags -- ^ flags
-                                                         -> IO ()
-
-type PFN_vkTrimCommandPool = FunPtr HS_vkTrimCommandPool
-
-foreign import ccall unsafe "dynamic" unwrapVkTrimCommandPoolUnsafe
-               :: PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
-
-foreign import ccall safe "dynamic" unwrapVkTrimCommandPoolSafe ::
-               PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
-
-instance VulkanProc "vkTrimCommandPool" where
-        type VkProcType "vkTrimCommandPool" = HS_vkTrimCommandPool
-        vkProcSymbol = _VkTrimCommandPool
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkTrimCommandPoolUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_ERROR_OUT_OF_POOL_MEMORY :: VkResult
-
-pattern VK_ERROR_OUT_OF_POOL_MEMORY = VkResult (-1000069000)
-
--- | Format can be used as the source image of image transfer commands
---
---   bitpos = @14@
-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT ::
-        VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT =
-        VkFormatFeatureBitmask 16384
-
--- | Format can be used as the destination image of image transfer commands
---
---   bitpos = @15@
-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT ::
-        VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT =
-        VkFormatFeatureBitmask 32768
-
--- | The 3D image can be viewed as a 2D or 2D array image
---
---   bitpos = @5@
-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT ::
-        VkImageCreateBitmask a
-
-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT =
-        VkImageCreateBitmask 32
-
--- | bitpos = @7@
-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT ::
-        VkImageCreateBitmask a
-
-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT =
-        VkImageCreateBitmask 128
-
--- | bitpos = @8@
-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT ::
-        VkImageCreateBitmask a
-
-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT =
-        VkImageCreateBitmask 256
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
-        = VkStructureType 1000117000
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
-        = VkStructureType 1000117001
-
-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO =
-        VkStructureType 1000117002
-
-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
-        = VkStructureType 1000117003
-
-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
-        :: VkImageLayout
-
-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
-        = VkImageLayout 1000117000
-
-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
-        :: VkImageLayout
-
-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
-        = VkImageLayout 1000117001
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO =
-        VkStructureType 1000053000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES =
-        VkStructureType 1000053001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES =
-        VkStructureType 1000053002
-
--- | bitpos = @1@
-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyBitmask a
-
-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyBitmask 2
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
-        = VkStructureType 1000120000
-
-pattern VkGetDeviceQueue2 :: CString
-
-pattern VkGetDeviceQueue2 <- (is_VkGetDeviceQueue2 -> True)
-  where VkGetDeviceQueue2 = _VkGetDeviceQueue2
-
-{-# INLINE _VkGetDeviceQueue2 #-}
-
-_VkGetDeviceQueue2 :: CString
-_VkGetDeviceQueue2 = Ptr "vkGetDeviceQueue2\NUL"#
-
-{-# INLINE is_VkGetDeviceQueue2 #-}
-
-is_VkGetDeviceQueue2 :: CString -> Bool
-is_VkGetDeviceQueue2 = (EQ ==) . cmpCStrings _VkGetDeviceQueue2
-
-type VkGetDeviceQueue2 = "vkGetDeviceQueue2"
-
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
---
--- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
---           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetDeviceQueue2"
-               vkGetDeviceQueue2Unsafe ::
-               VkDevice -- ^ device
-                        -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                  -> Ptr VkQueue -- ^ pQueue
-                                                                 -> IO ()
-
-#else
-vkGetDeviceQueue2Unsafe ::
-                        VkDevice -- ^ device
-                                 -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                           -> Ptr VkQueue -- ^ pQueue
-                                                                          -> IO ()
-vkGetDeviceQueue2Unsafe
-  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceQueue2)
-
-{-# NOINLINE vkGetDeviceQueue2Unsafe #-}
-#endif
-
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
---
--- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
---           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetDeviceQueue2" vkGetDeviceQueue2Safe
-               :: VkDevice -- ^ device
-                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                     -> Ptr VkQueue -- ^ pQueue
-                                                                    -> IO ()
-
-#else
-vkGetDeviceQueue2Safe ::
-                      VkDevice -- ^ device
-                               -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                         -> Ptr VkQueue -- ^ pQueue
-                                                                        -> IO ()
-vkGetDeviceQueue2Safe
-  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue2)
-
-{-# NOINLINE vkGetDeviceQueue2Safe #-}
-#endif
-
--- |
--- > void vkGetDeviceQueue2
--- >     ( VkDevice device
--- >     , const VkDeviceQueueInfo2* pQueueInfo
--- >     , VkQueue* pQueue
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
---
--- or less efficient:
---
--- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
---
--- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
---           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
---
-vkGetDeviceQueue2 ::
-                  VkDevice -- ^ device
-                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                                     -> Ptr VkQueue -- ^ pQueue
-                                                                    -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetDeviceQueue2 = vkGetDeviceQueue2Unsafe
-#else
-vkGetDeviceQueue2 = vkGetDeviceQueue2Safe
-
-#endif
-{-# INLINE vkGetDeviceQueue2 #-}
-
--- | > void vkGetDeviceQueue2
---   >     ( VkDevice device
---   >     , const VkDeviceQueueInfo2* pQueueInfo
---   >     , VkQueue* pQueue
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
-type HS_vkGetDeviceQueue2 =
-     VkDevice -- ^ device
-              -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
-                                        -> Ptr VkQueue -- ^ pQueue
-                                                       -> IO ()
-
-type PFN_vkGetDeviceQueue2 = FunPtr HS_vkGetDeviceQueue2
-
-foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueue2Unsafe
-               :: PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
-
-foreign import ccall safe "dynamic" unwrapVkGetDeviceQueue2Safe ::
-               PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
-
-instance VulkanProc "vkGetDeviceQueue2" where
-        type VkProcType "vkGetDeviceQueue2" = HS_vkGetDeviceQueue2
-        vkProcSymbol = _VkGetDeviceQueue2
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetDeviceQueue2Unsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDeviceQueue2Safe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO =
-        VkStructureType 1000145000
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
-        = VkStructureType 1000145001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
-        = VkStructureType 1000145002
-
-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 =
-        VkStructureType 1000145003
-
--- | Queues may support protected operations
---
---   bitpos = @4@
-pattern VK_QUEUE_PROTECTED_BIT :: VkQueueBitmask a
-
-pattern VK_QUEUE_PROTECTED_BIT = VkQueueBitmask 16
-
--- | Queue is a protected-capable device queue
---
---   bitpos = @0@
-pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT ::
-        VkDeviceQueueCreateBitmask a
-
-pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT =
-        VkDeviceQueueCreateBitmask 1
-
--- | Memory is protected
---
---   bitpos = @5@
-pattern VK_MEMORY_PROPERTY_PROTECTED_BIT ::
-        VkMemoryPropertyBitmask a
-
-pattern VK_MEMORY_PROPERTY_PROTECTED_BIT =
-        VkMemoryPropertyBitmask 32
-
--- | Buffer requires protected memory
---
---   bitpos = @3@
-pattern VK_BUFFER_CREATE_PROTECTED_BIT :: VkBufferCreateBitmask a
-
-pattern VK_BUFFER_CREATE_PROTECTED_BIT = VkBufferCreateBitmask 8
-
--- | Image requires protected memory
---
---   bitpos = @11@
-pattern VK_IMAGE_CREATE_PROTECTED_BIT :: VkImageCreateBitmask a
-
-pattern VK_IMAGE_CREATE_PROTECTED_BIT = VkImageCreateBitmask 2048
-
--- | Command buffers allocated from pool are protected command buffers
---
---   bitpos = @2@
-pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT ::
-        VkCommandPoolCreateBitmask a
-
-pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT =
-        VkCommandPoolCreateBitmask 4
-
-pattern VkCreateSamplerYcbcrConversion :: CString
-
-pattern VkCreateSamplerYcbcrConversion <-
-        (is_VkCreateSamplerYcbcrConversion -> True)
-  where VkCreateSamplerYcbcrConversion
-          = _VkCreateSamplerYcbcrConversion
-
-{-# INLINE _VkCreateSamplerYcbcrConversion #-}
-
-_VkCreateSamplerYcbcrConversion :: CString
-_VkCreateSamplerYcbcrConversion
-  = Ptr "vkCreateSamplerYcbcrConversion\NUL"#
-
-{-# INLINE is_VkCreateSamplerYcbcrConversion #-}
-
-is_VkCreateSamplerYcbcrConversion :: CString -> Bool
-is_VkCreateSamplerYcbcrConversion
-  = (EQ ==) . cmpCStrings _VkCreateSamplerYcbcrConversion
-
-type VkCreateSamplerYcbcrConversion =
-     "vkCreateSamplerYcbcrConversion"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
---
--- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
---           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkCreateSamplerYcbcrConversion"
-               vkCreateSamplerYcbcrConversionUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                  -> IO VkResult
-
-#else
-vkCreateSamplerYcbcrConversionUnsafe ::
-                                     VkDevice -- ^ device
-                                              ->
-                                       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                                              ->
-                                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                   ->
-                                           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                                        -> IO VkResult
-vkCreateSamplerYcbcrConversionUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCreateSamplerYcbcrConversion)
-
-{-# NOINLINE vkCreateSamplerYcbcrConversionUnsafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
---
--- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
---           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkCreateSamplerYcbcrConversion"
-               vkCreateSamplerYcbcrConversionSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                        ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                  -> IO VkResult
-
-#else
-vkCreateSamplerYcbcrConversionSafe ::
-                                   VkDevice -- ^ device
-                                            ->
-                                     Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                                            ->
-                                       Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                 ->
-                                         Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                                      -> IO VkResult
-vkCreateSamplerYcbcrConversionSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCreateSamplerYcbcrConversion)
-
-{-# NOINLINE vkCreateSamplerYcbcrConversionSafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateSamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkSamplerYcbcrConversion* pYcbcrConversion
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
---
--- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
---           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
---
-vkCreateSamplerYcbcrConversion ::
-                               VkDevice -- ^ device
-                                        ->
-                                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                                                        ->
-                                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             ->
-                                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                                                  -> IO VkResult
-#ifdef UNSAFE_FFI_DEFAULT
-vkCreateSamplerYcbcrConversion
-  = vkCreateSamplerYcbcrConversionUnsafe
-#else
-vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionSafe
-
-#endif
-{-# INLINE vkCreateSamplerYcbcrConversion #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateSamplerYcbcrConversion
---   >     ( VkDevice device
---   >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkSamplerYcbcrConversion* pYcbcrConversion
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
-type HS_vkCreateSamplerYcbcrConversion =
-     VkDevice -- ^ device
-              ->
-       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
-                                              ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
-                                        -> IO VkResult
-
-type PFN_vkCreateSamplerYcbcrConversion =
-     FunPtr HS_vkCreateSamplerYcbcrConversion
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateSamplerYcbcrConversionUnsafe ::
-               PFN_vkCreateSamplerYcbcrConversion ->
-                 HS_vkCreateSamplerYcbcrConversion
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateSamplerYcbcrConversionSafe ::
-               PFN_vkCreateSamplerYcbcrConversion ->
-                 HS_vkCreateSamplerYcbcrConversion
-
-instance VulkanProc "vkCreateSamplerYcbcrConversion" where
-        type VkProcType "vkCreateSamplerYcbcrConversion" =
-             HS_vkCreateSamplerYcbcrConversion
-        vkProcSymbol = _VkCreateSamplerYcbcrConversion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateSamplerYcbcrConversionUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroySamplerYcbcrConversion :: CString
-
-pattern VkDestroySamplerYcbcrConversion <-
-        (is_VkDestroySamplerYcbcrConversion -> True)
-  where VkDestroySamplerYcbcrConversion
-          = _VkDestroySamplerYcbcrConversion
-
-{-# INLINE _VkDestroySamplerYcbcrConversion #-}
-
-_VkDestroySamplerYcbcrConversion :: CString
-_VkDestroySamplerYcbcrConversion
-  = Ptr "vkDestroySamplerYcbcrConversion\NUL"#
-
-{-# INLINE is_VkDestroySamplerYcbcrConversion #-}
-
-is_VkDestroySamplerYcbcrConversion :: CString -> Bool
-is_VkDestroySamplerYcbcrConversion
-  = (EQ ==) . cmpCStrings _VkDestroySamplerYcbcrConversion
-
-type VkDestroySamplerYcbcrConversion =
-     "vkDestroySamplerYcbcrConversion"
-
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
---
--- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
---           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkDestroySamplerYcbcrConversion"
-               vkDestroySamplerYcbcrConversionUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
-vkDestroySamplerYcbcrConversionUnsafe ::
-                                      VkDevice -- ^ device
-                                               ->
-                                        VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                                                 ->
-                                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroySamplerYcbcrConversionUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkDestroySamplerYcbcrConversion)
-
-{-# NOINLINE vkDestroySamplerYcbcrConversionUnsafe #-}
-#endif
-
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
---
--- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
---           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkDestroySamplerYcbcrConversion"
-               vkDestroySamplerYcbcrConversionSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                       -> IO ()
-
-#else
-vkDestroySamplerYcbcrConversionSafe ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                            -> IO ()
-vkDestroySamplerYcbcrConversionSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkDestroySamplerYcbcrConversion)
-
-{-# NOINLINE vkDestroySamplerYcbcrConversionSafe #-}
-#endif
-
--- |
--- > void vkDestroySamplerYcbcrConversion
--- >     ( VkDevice device
--- >     , VkSamplerYcbcrConversion ycbcrConversion
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
---
--- or less efficient:
---
--- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
---
--- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
---           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
---
-vkDestroySamplerYcbcrConversion ::
-                                VkDevice -- ^ device
-                                         ->
-                                  VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                        -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkDestroySamplerYcbcrConversion
-  = vkDestroySamplerYcbcrConversionUnsafe
-#else
-vkDestroySamplerYcbcrConversion
-  = vkDestroySamplerYcbcrConversionSafe
-
-#endif
-{-# INLINE vkDestroySamplerYcbcrConversion #-}
-
--- | > void vkDestroySamplerYcbcrConversion
---   >     ( VkDevice device
---   >     , VkSamplerYcbcrConversion ycbcrConversion
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
-type HS_vkDestroySamplerYcbcrConversion =
-     VkDevice -- ^ device
-              ->
-       VkSamplerYcbcrConversion -- ^ ycbcrConversion
-                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                             -> IO ()
-
-type PFN_vkDestroySamplerYcbcrConversion =
-     FunPtr HS_vkDestroySamplerYcbcrConversion
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroySamplerYcbcrConversionUnsafe ::
-               PFN_vkDestroySamplerYcbcrConversion ->
-                 HS_vkDestroySamplerYcbcrConversion
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroySamplerYcbcrConversionSafe ::
-               PFN_vkDestroySamplerYcbcrConversion ->
-                 HS_vkDestroySamplerYcbcrConversion
-
-instance VulkanProc "vkDestroySamplerYcbcrConversion" where
-        type VkProcType "vkDestroySamplerYcbcrConversion" =
-             HS_vkDestroySamplerYcbcrConversion
-        vkProcSymbol = _VkDestroySamplerYcbcrConversion
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroySamplerYcbcrConversionUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO =
-        VkStructureType 1000156000
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO =
-        VkStructureType 1000156001
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO =
-        VkStructureType 1000156002
-
-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO =
-        VkStructureType 1000156003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
-        = VkStructureType 1000156004
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
-        = VkStructureType 1000156005
-
-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: VkObjectType
-
-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION =
-        VkObjectType 1000156000
-
-pattern VK_FORMAT_G8B8G8R8_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8B8G8R8_422_UNORM = VkFormat 1000156000
-
-pattern VK_FORMAT_B8G8R8G8_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_B8G8R8G8_422_UNORM = VkFormat 1000156001
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = VkFormat 1000156002
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = VkFormat 1000156003
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = VkFormat 1000156004
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = VkFormat 1000156005
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM :: VkFormat
-
-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = VkFormat 1000156006
-
-pattern VK_FORMAT_R10X6_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6_UNORM_PACK16 = VkFormat 1000156007
-
-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = VkFormat 1000156008
-
-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 :: VkFormat
-
-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 =
-        VkFormat 1000156009
-
-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 =
-        VkFormat 1000156010
-
-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 =
-        VkFormat 1000156011
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156012
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156013
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156014
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156015
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 =
-        VkFormat 1000156016
-
-pattern VK_FORMAT_R12X4_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4_UNORM_PACK16 = VkFormat 1000156017
-
-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = VkFormat 1000156018
-
-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 :: VkFormat
-
-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 =
-        VkFormat 1000156019
-
-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 =
-        VkFormat 1000156020
-
-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 =
-        VkFormat 1000156021
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156022
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 =
-        VkFormat 1000156023
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156024
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 =
-        VkFormat 1000156025
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 ::
-        VkFormat
-
-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 =
-        VkFormat 1000156026
-
-pattern VK_FORMAT_G16B16G16R16_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16B16G16R16_422_UNORM = VkFormat 1000156027
-
-pattern VK_FORMAT_B16G16R16G16_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_B16G16R16G16_422_UNORM = VkFormat 1000156028
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM =
-        VkFormat 1000156029
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = VkFormat 1000156030
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM =
-        VkFormat 1000156031
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = VkFormat 1000156032
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM :: VkFormat
-
-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM =
-        VkFormat 1000156033
-
--- | bitpos = @4@
-pattern VK_IMAGE_ASPECT_PLANE_0_BIT :: VkImageAspectBitmask a
-
-pattern VK_IMAGE_ASPECT_PLANE_0_BIT = VkImageAspectBitmask 16
-
--- | bitpos = @5@
-pattern VK_IMAGE_ASPECT_PLANE_1_BIT :: VkImageAspectBitmask a
-
-pattern VK_IMAGE_ASPECT_PLANE_1_BIT = VkImageAspectBitmask 32
-
--- | bitpos = @6@
-pattern VK_IMAGE_ASPECT_PLANE_2_BIT :: VkImageAspectBitmask a
-
-pattern VK_IMAGE_ASPECT_PLANE_2_BIT = VkImageAspectBitmask 64
-
--- | bitpos = @9@
-pattern VK_IMAGE_CREATE_DISJOINT_BIT :: VkImageCreateBitmask a
-
-pattern VK_IMAGE_CREATE_DISJOINT_BIT = VkImageCreateBitmask 512
-
--- | Format can have midpoint rather than cosited chroma samples
---
---   bitpos = @17@
-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT ::
-        VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT =
-        VkFormatFeatureBitmask 131072
-
--- | Format can be used with linear filtering whilst color conversion is enabled
---
---   bitpos = @18@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
-        :: VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
-        = VkFormatFeatureBitmask 262144
-
--- | Format can have different chroma, min and mag filters
---
---   bitpos = @19@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
-        :: VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
-        = VkFormatFeatureBitmask 524288
-
--- | bitpos = @20@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
-        :: VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
-        = VkFormatFeatureBitmask 1048576
-
--- | bitpos = @21@
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
-        :: VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
-        = VkFormatFeatureBitmask 2097152
-
--- | Format supports disjoint planes
---
---   bitpos = @22@
-pattern VK_FORMAT_FEATURE_DISJOINT_BIT :: VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_DISJOINT_BIT =
-        VkFormatFeatureBitmask 4194304
-
--- | Format can have cosited rather than midpoint chroma samples
---
---   bitpos = @23@
-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT ::
-        VkFormatFeatureBitmask a
-
-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT =
-        VkFormatFeatureBitmask 8388608
-
-pattern VkCreateDescriptorUpdateTemplate :: CString
-
-pattern VkCreateDescriptorUpdateTemplate <-
-        (is_VkCreateDescriptorUpdateTemplate -> True)
-  where VkCreateDescriptorUpdateTemplate
-          = _VkCreateDescriptorUpdateTemplate
-
-{-# INLINE _VkCreateDescriptorUpdateTemplate #-}
-
-_VkCreateDescriptorUpdateTemplate :: CString
-_VkCreateDescriptorUpdateTemplate
-  = Ptr "vkCreateDescriptorUpdateTemplate\NUL"#
-
-{-# INLINE is_VkCreateDescriptorUpdateTemplate #-}
-
-is_VkCreateDescriptorUpdateTemplate :: CString -> Bool
-is_VkCreateDescriptorUpdateTemplate
-  = (EQ ==) . cmpCStrings _VkCreateDescriptorUpdateTemplate
-
-type VkCreateDescriptorUpdateTemplate =
-     "vkCreateDescriptorUpdateTemplate"
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
---
--- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
---           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkCreateDescriptorUpdateTemplate"
-               vkCreateDescriptorUpdateTemplateUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                    -> IO VkResult
-
-#else
-vkCreateDescriptorUpdateTemplateUnsafe ::
-                                       VkDevice -- ^ device
-                                                ->
-                                         Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                                                  ->
-                                           Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                     ->
-                                             Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                                            -> IO VkResult
-vkCreateDescriptorUpdateTemplateUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkCreateDescriptorUpdateTemplate)
-
-{-# NOINLINE vkCreateDescriptorUpdateTemplateUnsafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
---
--- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
---           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkCreateDescriptorUpdateTemplate"
-               vkCreateDescriptorUpdateTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                          ->
-                   Ptr VkAllocationCallbacks -- ^ pAllocator
-                                             ->
-                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                    -> IO VkResult
-
-#else
-vkCreateDescriptorUpdateTemplateSafe ::
-                                     VkDevice -- ^ device
-                                              ->
-                                       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                                                ->
-                                         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                   ->
-                                           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                                          -> IO VkResult
-vkCreateDescriptorUpdateTemplateSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkCreateDescriptorUpdateTemplate)
-
-{-# NOINLINE vkCreateDescriptorUpdateTemplateSafe #-}
-#endif
-
--- |
--- Success codes: 'VK_SUCCESS'.
---
--- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
--- > VkResult vkCreateDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
--- >     , const VkAllocationCallbacks* pAllocator
--- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
---
--- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
---           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
---
-vkCreateDescriptorUpdateTemplate ::
-                                 VkDevice -- ^ device
-                                          ->
-                                   Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                                            ->
-                                     Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               ->
-                                       Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                                                      -> IO VkResult
-#ifdef UNSAFE_FFI_DEFAULT
-vkCreateDescriptorUpdateTemplate
-  = vkCreateDescriptorUpdateTemplateUnsafe
-#else
-vkCreateDescriptorUpdateTemplate
-  = vkCreateDescriptorUpdateTemplateSafe
-
-#endif
-{-# INLINE vkCreateDescriptorUpdateTemplate #-}
-
--- | Success codes: 'VK_SUCCESS'.
---
---   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
---
---   > VkResult vkCreateDescriptorUpdateTemplate
---   >     ( VkDevice device
---   >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
---   >     , const VkAllocationCallbacks* pAllocator
---   >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
-type HS_vkCreateDescriptorUpdateTemplate =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
-                                                ->
-         Ptr VkAllocationCallbacks -- ^ pAllocator
-                                   ->
-           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
-                                          -> IO VkResult
-
-type PFN_vkCreateDescriptorUpdateTemplate =
-     FunPtr HS_vkCreateDescriptorUpdateTemplate
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkCreateDescriptorUpdateTemplateUnsafe ::
-               PFN_vkCreateDescriptorUpdateTemplate ->
-                 HS_vkCreateDescriptorUpdateTemplate
-
-foreign import ccall safe "dynamic"
-               unwrapVkCreateDescriptorUpdateTemplateSafe ::
-               PFN_vkCreateDescriptorUpdateTemplate ->
-                 HS_vkCreateDescriptorUpdateTemplate
-
-instance VulkanProc "vkCreateDescriptorUpdateTemplate" where
-        type VkProcType "vkCreateDescriptorUpdateTemplate" =
-             HS_vkCreateDescriptorUpdateTemplate
-        vkProcSymbol = _VkCreateDescriptorUpdateTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkCreateDescriptorUpdateTemplateUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkDestroyDescriptorUpdateTemplate :: CString
-
-pattern VkDestroyDescriptorUpdateTemplate <-
-        (is_VkDestroyDescriptorUpdateTemplate -> True)
-  where VkDestroyDescriptorUpdateTemplate
-          = _VkDestroyDescriptorUpdateTemplate
-
-{-# INLINE _VkDestroyDescriptorUpdateTemplate #-}
-
-_VkDestroyDescriptorUpdateTemplate :: CString
-_VkDestroyDescriptorUpdateTemplate
-  = Ptr "vkDestroyDescriptorUpdateTemplate\NUL"#
-
-{-# INLINE is_VkDestroyDescriptorUpdateTemplate #-}
-
-is_VkDestroyDescriptorUpdateTemplate :: CString -> Bool
-is_VkDestroyDescriptorUpdateTemplate
-  = (EQ ==) . cmpCStrings _VkDestroyDescriptorUpdateTemplate
-
-type VkDestroyDescriptorUpdateTemplate =
-     "vkDestroyDescriptorUpdateTemplate"
-
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
---
--- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
---           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplate"
-               vkDestroyDescriptorUpdateTemplateUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-#else
-vkDestroyDescriptorUpdateTemplateUnsafe ::
-                                        VkDevice -- ^ device
-                                                 ->
-                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                     ->
-                                            Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                      -> IO ()
-vkDestroyDescriptorUpdateTemplateUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkDestroyDescriptorUpdateTemplate)
-
-{-# NOINLINE vkDestroyDescriptorUpdateTemplateUnsafe #-}
-#endif
-
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
---
--- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
---           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkDestroyDescriptorUpdateTemplate"
-               vkDestroyDescriptorUpdateTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                         -> IO ()
-
-#else
-vkDestroyDescriptorUpdateTemplateSafe ::
-                                      VkDevice -- ^ device
-                                               ->
-                                        VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                   ->
-                                          Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                    -> IO ()
-vkDestroyDescriptorUpdateTemplateSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkDestroyDescriptorUpdateTemplate)
-
-{-# NOINLINE vkDestroyDescriptorUpdateTemplateSafe #-}
-#endif
-
--- |
--- > void vkDestroyDescriptorUpdateTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const VkAllocationCallbacks* pAllocator
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
---
--- or less efficient:
---
--- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
---
--- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
---           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
---
-vkDestroyDescriptorUpdateTemplate ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                                                            -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkDestroyDescriptorUpdateTemplate
-  = vkDestroyDescriptorUpdateTemplateUnsafe
-#else
-vkDestroyDescriptorUpdateTemplate
-  = vkDestroyDescriptorUpdateTemplateSafe
-
-#endif
-{-# INLINE vkDestroyDescriptorUpdateTemplate #-}
-
--- | > void vkDestroyDescriptorUpdateTemplate
---   >     ( VkDevice device
---   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
---   >     , const VkAllocationCallbacks* pAllocator
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
-type HS_vkDestroyDescriptorUpdateTemplate =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
-                                                               -> IO ()
-
-type PFN_vkDestroyDescriptorUpdateTemplate =
-     FunPtr HS_vkDestroyDescriptorUpdateTemplate
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkDestroyDescriptorUpdateTemplateUnsafe ::
-               PFN_vkDestroyDescriptorUpdateTemplate ->
-                 HS_vkDestroyDescriptorUpdateTemplate
-
-foreign import ccall safe "dynamic"
-               unwrapVkDestroyDescriptorUpdateTemplateSafe ::
-               PFN_vkDestroyDescriptorUpdateTemplate ->
-                 HS_vkDestroyDescriptorUpdateTemplate
-
-instance VulkanProc "vkDestroyDescriptorUpdateTemplate" where
-        type VkProcType "vkDestroyDescriptorUpdateTemplate" =
-             HS_vkDestroyDescriptorUpdateTemplate
-        vkProcSymbol = _VkDestroyDescriptorUpdateTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkDestroyDescriptorUpdateTemplateUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorUpdateTemplateSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VkUpdateDescriptorSetWithTemplate :: CString
-
-pattern VkUpdateDescriptorSetWithTemplate <-
-        (is_VkUpdateDescriptorSetWithTemplate -> True)
-  where VkUpdateDescriptorSetWithTemplate
-          = _VkUpdateDescriptorSetWithTemplate
-
-{-# INLINE _VkUpdateDescriptorSetWithTemplate #-}
-
-_VkUpdateDescriptorSetWithTemplate :: CString
-_VkUpdateDescriptorSetWithTemplate
-  = Ptr "vkUpdateDescriptorSetWithTemplate\NUL"#
-
-{-# INLINE is_VkUpdateDescriptorSetWithTemplate #-}
-
-is_VkUpdateDescriptorSetWithTemplate :: CString -> Bool
-is_VkUpdateDescriptorSetWithTemplate
-  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSetWithTemplate
-
-type VkUpdateDescriptorSetWithTemplate =
-     "vkUpdateDescriptorSetWithTemplate"
-
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
---
--- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
---           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplate"
-               vkUpdateDescriptorSetWithTemplateUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSet -- ^ descriptorSet
-                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr Void -- ^ pData
-                                                                           -> IO ()
-
-#else
-vkUpdateDescriptorSetWithTemplateUnsafe ::
-                                        VkDevice -- ^ device
-                                                 ->
-                                          VkDescriptorSet -- ^ descriptorSet
-                                                          ->
-                                            VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                       -> Ptr Void -- ^ pData
-                                                                                   -> IO ()
-vkUpdateDescriptorSetWithTemplateUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkUpdateDescriptorSetWithTemplate)
-
-{-# NOINLINE vkUpdateDescriptorSetWithTemplateUnsafe #-}
-#endif
-
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
---
--- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
---           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkUpdateDescriptorSetWithTemplate"
-               vkUpdateDescriptorSetWithTemplateSafe ::
-               VkDevice -- ^ device
-                        ->
-                 VkDescriptorSet -- ^ descriptorSet
-                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                               -> Ptr Void -- ^ pData
-                                                                           -> IO ()
-
-#else
-vkUpdateDescriptorSetWithTemplateSafe ::
-                                      VkDevice -- ^ device
-                                               ->
-                                        VkDescriptorSet -- ^ descriptorSet
-                                                        ->
-                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                     -> Ptr Void -- ^ pData
-                                                                                 -> IO ()
-vkUpdateDescriptorSetWithTemplateSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkUpdateDescriptorSetWithTemplate)
-
-{-# NOINLINE vkUpdateDescriptorSetWithTemplateSafe #-}
-#endif
-
--- |
--- > void vkUpdateDescriptorSetWithTemplate
--- >     ( VkDevice device
--- >     , VkDescriptorSet descriptorSet
--- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
--- >     , const void* pData
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
---
--- or less efficient:
---
--- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
---
--- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
---           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
---
-vkUpdateDescriptorSetWithTemplate ::
-                                  VkDevice -- ^ device
-                                           ->
-                                    VkDescriptorSet -- ^ descriptorSet
-                                                    ->
-                                      VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                                 -> Ptr Void -- ^ pData
-                                                                             -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkUpdateDescriptorSetWithTemplate
-  = vkUpdateDescriptorSetWithTemplateUnsafe
-#else
-vkUpdateDescriptorSetWithTemplate
-  = vkUpdateDescriptorSetWithTemplateSafe
-
-#endif
-{-# INLINE vkUpdateDescriptorSetWithTemplate #-}
-
--- | > void vkUpdateDescriptorSetWithTemplate
---   >     ( VkDevice device
---   >     , VkDescriptorSet descriptorSet
---   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
---   >     , const void* pData
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
-type HS_vkUpdateDescriptorSetWithTemplate =
-     VkDevice -- ^ device
-              ->
-       VkDescriptorSet -- ^ descriptorSet
-                       -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
-                                                     -> Ptr Void -- ^ pData
-                                                                 -> IO ()
-
-type PFN_vkUpdateDescriptorSetWithTemplate =
-     FunPtr HS_vkUpdateDescriptorSetWithTemplate
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkUpdateDescriptorSetWithTemplateUnsafe ::
-               PFN_vkUpdateDescriptorSetWithTemplate ->
-                 HS_vkUpdateDescriptorSetWithTemplate
-
-foreign import ccall safe "dynamic"
-               unwrapVkUpdateDescriptorSetWithTemplateSafe ::
-               PFN_vkUpdateDescriptorSetWithTemplate ->
-                 HS_vkUpdateDescriptorSetWithTemplate
-
-instance VulkanProc "vkUpdateDescriptorSetWithTemplate" where
-        type VkProcType "vkUpdateDescriptorSetWithTemplate" =
-             HS_vkUpdateDescriptorSetWithTemplate
-        vkProcSymbol = _VkUpdateDescriptorSetWithTemplate
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkUpdateDescriptorSetWithTemplateUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetWithTemplateSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO =
-        VkStructureType 1000085000
-
-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE :: VkObjectType
-
-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE =
-        VkObjectType 1000085000
-
-pattern VkGetPhysicalDeviceExternalBufferProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalBufferProperties <-
-        (is_VkGetPhysicalDeviceExternalBufferProperties -> True)
-  where VkGetPhysicalDeviceExternalBufferProperties
-          = _VkGetPhysicalDeviceExternalBufferProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalBufferProperties #-}
-
-_VkGetPhysicalDeviceExternalBufferProperties :: CString
-_VkGetPhysicalDeviceExternalBufferProperties
-  = Ptr "vkGetPhysicalDeviceExternalBufferProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalBufferProperties #-}
-
-is_VkGetPhysicalDeviceExternalBufferProperties :: CString -> Bool
-is_VkGetPhysicalDeviceExternalBufferProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceExternalBufferProperties
-
-type VkGetPhysicalDeviceExternalBufferProperties =
-     "vkGetPhysicalDeviceExternalBufferProperties"
-
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalBufferProperties"
-               vkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                        ->
-                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                  -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
-                                                  VkPhysicalDevice -- ^ physicalDevice
-                                                                   ->
-                                                    Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                                                           ->
-                                                      Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                                                     -> IO ()
-vkGetPhysicalDeviceExternalBufferPropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalBufferProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalBufferPropertiesUnsafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalBufferProperties"
-               vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                        ->
-                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                  -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
-                                                VkPhysicalDevice -- ^ physicalDevice
-                                                                 ->
-                                                  Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                                                         ->
-                                                    Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                                                   -> IO ()
-vkGetPhysicalDeviceExternalBufferPropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceExternalBufferProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalBufferPropertiesSafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalBufferProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
--- >     , VkExternalBufferProperties* pExternalBufferProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
---
-vkGetPhysicalDeviceExternalBufferProperties ::
-                                            VkPhysicalDevice -- ^ physicalDevice
-                                                             ->
-                                              Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                                                                     ->
-                                                Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                                                               -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceExternalBufferProperties
-  = vkGetPhysicalDeviceExternalBufferPropertiesUnsafe
-#else
-vkGetPhysicalDeviceExternalBufferProperties
-  = vkGetPhysicalDeviceExternalBufferPropertiesSafe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceExternalBufferProperties #-}
-
--- | > void vkGetPhysicalDeviceExternalBufferProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
---   >     , VkExternalBufferProperties* pExternalBufferProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalBufferProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
-                                              ->
-         Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
-                                        -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalBufferProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalBufferProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
-                 HS_vkGetPhysicalDeviceExternalBufferProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe ::
-               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
-                 HS_vkGetPhysicalDeviceExternalBufferProperties
-
-instance VulkanProc "vkGetPhysicalDeviceExternalBufferProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalBufferProperties" =
-             HS_vkGetPhysicalDeviceExternalBufferProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalBufferProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
-        = VkStructureType 1000071000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES =
-        VkStructureType 1000071001
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO =
-        VkStructureType 1000071002
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES =
-        VkStructureType 1000071003
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES =
-        VkStructureType 1000071004
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO =
-        VkStructureType 1000072000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO =
-        VkStructureType 1000072001
-
-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO =
-        VkStructureType 1000072002
-
-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE :: VkResult
-
-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE = VkResult (-1000072003)
-
-pattern VkGetPhysicalDeviceExternalFenceProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalFenceProperties <-
-        (is_VkGetPhysicalDeviceExternalFenceProperties -> True)
-  where VkGetPhysicalDeviceExternalFenceProperties
-          = _VkGetPhysicalDeviceExternalFenceProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalFenceProperties #-}
-
-_VkGetPhysicalDeviceExternalFenceProperties :: CString
-_VkGetPhysicalDeviceExternalFenceProperties
-  = Ptr "vkGetPhysicalDeviceExternalFenceProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalFenceProperties #-}
-
-is_VkGetPhysicalDeviceExternalFenceProperties :: CString -> Bool
-is_VkGetPhysicalDeviceExternalFenceProperties
-  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceExternalFenceProperties
-
-type VkGetPhysicalDeviceExternalFenceProperties =
-     "vkGetPhysicalDeviceExternalFenceProperties"
-
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalFenceProperties"
-               vkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                       ->
-                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                 -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
-                                                 VkPhysicalDevice -- ^ physicalDevice
-                                                                  ->
-                                                   Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                                                         ->
-                                                     Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                                                   -> IO ()
-vkGetPhysicalDeviceExternalFencePropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalFenceProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalFencePropertiesUnsafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalFenceProperties"
-               vkGetPhysicalDeviceExternalFencePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                       ->
-                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                 -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalFencePropertiesSafe ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                                                       ->
-                                                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                                                 -> IO ()
-vkGetPhysicalDeviceExternalFencePropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceExternalFenceProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalFencePropertiesSafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalFenceProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
--- >     , VkExternalFenceProperties* pExternalFenceProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
---
-vkGetPhysicalDeviceExternalFenceProperties ::
-                                           VkPhysicalDevice -- ^ physicalDevice
-                                                            ->
-                                             Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                                                                   ->
-                                               Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                                                             -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceExternalFenceProperties
-  = vkGetPhysicalDeviceExternalFencePropertiesUnsafe
-#else
-vkGetPhysicalDeviceExternalFenceProperties
-  = vkGetPhysicalDeviceExternalFencePropertiesSafe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceExternalFenceProperties #-}
-
--- | > void vkGetPhysicalDeviceExternalFenceProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
---   >     , VkExternalFenceProperties* pExternalFenceProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalFenceProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
-                                             ->
-         Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
-                                       -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalFenceProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalFenceProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
-                 HS_vkGetPhysicalDeviceExternalFenceProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe ::
-               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
-                 HS_vkGetPhysicalDeviceExternalFenceProperties
-
-instance VulkanProc "vkGetPhysicalDeviceExternalFenceProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalFenceProperties" =
-             HS_vkGetPhysicalDeviceExternalFenceProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalFenceProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceExternalFencePropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO =
-        VkStructureType 1000112000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES =
-        VkStructureType 1000112001
-
-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO =
-        VkStructureType 1000113000
-
-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO =
-        VkStructureType 1000077000
-
-pattern VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
-
-pattern VkGetPhysicalDeviceExternalSemaphoreProperties <-
-        (is_VkGetPhysicalDeviceExternalSemaphoreProperties -> True)
-  where VkGetPhysicalDeviceExternalSemaphoreProperties
-          = _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-{-# INLINE _VkGetPhysicalDeviceExternalSemaphoreProperties #-}
-
-_VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
-_VkGetPhysicalDeviceExternalSemaphoreProperties
-  = Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties\NUL"#
-
-{-# INLINE is_VkGetPhysicalDeviceExternalSemaphoreProperties #-}
-
-is_VkGetPhysicalDeviceExternalSemaphoreProperties ::
-                                                  CString -> Bool
-is_VkGetPhysicalDeviceExternalSemaphoreProperties
-  = (EQ ==) .
-      cmpCStrings _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-type VkGetPhysicalDeviceExternalSemaphoreProperties =
-     "vkGetPhysicalDeviceExternalSemaphoreProperties"
-
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe
-               "vkGetPhysicalDeviceExternalSemaphoreProperties"
-               vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                           ->
-                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                     -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
-                                                     VkPhysicalDevice -- ^ physicalDevice
-                                                                      ->
-                                                       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                                                                 ->
-                                                         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                                                           -> IO ()
-vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalSemaphoreProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
-             #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe
-               "vkGetPhysicalDeviceExternalSemaphoreProperties"
-               vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
-               VkPhysicalDevice -- ^ physicalDevice
-                                ->
-                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                           ->
-                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                     -> IO ()
-
-#else
-vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
-                                                   VkPhysicalDevice -- ^ physicalDevice
-                                                                    ->
-                                                     Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                                                               ->
-                                                       Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                                                         -> IO ()
-vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetPhysicalDeviceExternalSemaphoreProperties)
-
-{-# NOINLINE vkGetPhysicalDeviceExternalSemaphorePropertiesSafe #-}
-#endif
-
--- |
--- > void vkGetPhysicalDeviceExternalSemaphoreProperties
--- >     ( VkPhysicalDevice physicalDevice
--- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
--- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
---
--- or less efficient:
---
--- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
---
--- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
---           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
---
-vkGetPhysicalDeviceExternalSemaphoreProperties ::
-                                               VkPhysicalDevice -- ^ physicalDevice
-                                                                ->
-                                                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                                                           ->
-                                                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                                                                     -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetPhysicalDeviceExternalSemaphoreProperties
-  = vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
-#else
-vkGetPhysicalDeviceExternalSemaphoreProperties
-  = vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
-
-#endif
-{-# INLINE vkGetPhysicalDeviceExternalSemaphoreProperties #-}
-
--- | > void vkGetPhysicalDeviceExternalSemaphoreProperties
---   >     ( VkPhysicalDevice physicalDevice
---   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
---   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
-type HS_vkGetPhysicalDeviceExternalSemaphoreProperties =
-     VkPhysicalDevice -- ^ physicalDevice
-                      ->
-       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
-                                                 ->
-         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
-                                           -> IO ()
-
-type PFN_vkGetPhysicalDeviceExternalSemaphoreProperties =
-     FunPtr HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
-               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
-                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
-               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
-                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-
-instance VulkanProc
-           "vkGetPhysicalDeviceExternalSemaphoreProperties"
-         where
-        type VkProcType "vkGetPhysicalDeviceExternalSemaphoreProperties" =
-             HS_vkGetPhysicalDeviceExternalSemaphoreProperties
-        vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphoreProperties
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
-        :: VkStructureType
-
-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO =
-        VkStructureType 1000076000
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES ::
-        VkStructureType
-
-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES =
-        VkStructureType 1000076001
-
-pattern VkGetDescriptorSetLayoutSupport :: CString
-
-pattern VkGetDescriptorSetLayoutSupport <-
-        (is_VkGetDescriptorSetLayoutSupport -> True)
-  where VkGetDescriptorSetLayoutSupport
-          = _VkGetDescriptorSetLayoutSupport
-
-{-# INLINE _VkGetDescriptorSetLayoutSupport #-}
-
-_VkGetDescriptorSetLayoutSupport :: CString
-_VkGetDescriptorSetLayoutSupport
-  = Ptr "vkGetDescriptorSetLayoutSupport\NUL"#
-
-{-# INLINE is_VkGetDescriptorSetLayoutSupport #-}
-
-is_VkGetDescriptorSetLayoutSupport :: CString -> Bool
-is_VkGetDescriptorSetLayoutSupport
-  = (EQ ==) . cmpCStrings _VkGetDescriptorSetLayoutSupport
-
-type VkGetDescriptorSetLayoutSupport =
-     "vkGetDescriptorSetLayoutSupport"
-
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
---
--- or less efficient:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
---
--- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
---           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall unsafe "vkGetDescriptorSetLayoutSupport"
-               vkGetDescriptorSetLayoutSupportUnsafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                    -> IO ()
-
-#else
-vkGetDescriptorSetLayoutSupportUnsafe ::
-                                      VkDevice -- ^ device
-                                               ->
-                                        Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                            ->
-                                          Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                                           -> IO ()
-vkGetDescriptorSetLayoutSupportUnsafe
-  = unsafeDupablePerformIO
-      (vkGetProcUnsafe @VkGetDescriptorSetLayoutSupport)
-
-{-# NOINLINE vkGetDescriptorSetLayoutSupportUnsafe #-}
-#endif
-
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
---
--- or less efficient:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
---
--- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
---           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
---
---
-#ifdef NATIVE_FFI_VK_VERSION_1_1
-foreign import ccall safe "vkGetDescriptorSetLayoutSupport"
-               vkGetDescriptorSetLayoutSupportSafe ::
-               VkDevice -- ^ device
-                        ->
-                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                     ->
-                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                    -> IO ()
-
-#else
-vkGetDescriptorSetLayoutSupportSafe ::
-                                    VkDevice -- ^ device
-                                             ->
-                                      Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                          ->
-                                        Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                                         -> IO ()
-vkGetDescriptorSetLayoutSupportSafe
-  = unsafeDupablePerformIO
-      (vkGetProcSafe @VkGetDescriptorSetLayoutSupport)
-
-{-# NOINLINE vkGetDescriptorSetLayoutSupportSafe #-}
-#endif
-
--- |
--- > void vkGetDescriptorSetLayoutSupport
--- >     ( VkDevice device
--- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
--- >     , VkDescriptorSetLayoutSupport* pSupport
--- >     )
---
--- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
---
--- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
---           as a @foreign import@ call to C Vulkan loader.
---           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
---
--- Independently of the flag setting, you can lookup the function manually at runtime:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
---
--- or less efficient:
---
--- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
---
--- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
---           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
---           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
---           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
---
-vkGetDescriptorSetLayoutSupport ::
-                                VkDevice -- ^ device
-                                         ->
-                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                                                      ->
-                                    Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                                                     -> IO ()
-#ifdef UNSAFE_FFI_DEFAULT
-vkGetDescriptorSetLayoutSupport
-  = vkGetDescriptorSetLayoutSupportUnsafe
-#else
-vkGetDescriptorSetLayoutSupport
-  = vkGetDescriptorSetLayoutSupportSafe
-
-#endif
-{-# INLINE vkGetDescriptorSetLayoutSupport #-}
-
--- | > void vkGetDescriptorSetLayoutSupport
---   >     ( VkDevice device
---   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
---   >     , VkDescriptorSetLayoutSupport* pSupport
---   >     )
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
-type HS_vkGetDescriptorSetLayoutSupport =
-     VkDevice -- ^ device
-              ->
-       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
-                                           ->
-         Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
-                                          -> IO ()
-
-type PFN_vkGetDescriptorSetLayoutSupport =
-     FunPtr HS_vkGetDescriptorSetLayoutSupport
-
-foreign import ccall unsafe "dynamic"
-               unwrapVkGetDescriptorSetLayoutSupportUnsafe ::
-               PFN_vkGetDescriptorSetLayoutSupport ->
-                 HS_vkGetDescriptorSetLayoutSupport
-
-foreign import ccall safe "dynamic"
-               unwrapVkGetDescriptorSetLayoutSupportSafe ::
-               PFN_vkGetDescriptorSetLayoutSupport ->
-                 HS_vkGetDescriptorSetLayoutSupport
-
-instance VulkanProc "vkGetDescriptorSetLayoutSupport" where
-        type VkProcType "vkGetDescriptorSetLayoutSupport" =
-             HS_vkGetDescriptorSetLayoutSupport
-        vkProcSymbol = _VkGetDescriptorSetLayoutSupport
-
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetDescriptorSetLayoutSupportUnsafe
-
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDescriptorSetLayoutSupportSafe
-
-        {-# INLINE unwrapVkProcPtrSafe #-}
+        vkEnumerateInstanceVersionSafe, VkResult(..),
+        -- ** Promoted from VK_KHR_relaxed_block_layout, which has no API
+        --
+
+        -- ** Promoted from VK_KHR_storage_buffer_storage_class, which has no API
+        --
+
+        -- ** Originally based on VK_KHR_subgroup (extension 94), but the actual enum block used was, incorrectly, that of extension 95
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkPhysicalDeviceLimits,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties, VkPhysicalDeviceType(..),
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkShaderInfoTypeAMD(..),
+        VkShaderStageBitmask(..), VkShaderStageFlagBits(),
+        VkShaderStageFlags(), VkStructureType(..),
+        VkSubgroupFeatureBitmask(..), VkSubgroupFeatureFlagBits(),
+        VkSubgroupFeatureFlags(),
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES,
+        -- ** Promoted from VK_KHR_bind_memory2
+        VkBindBufferMemoryInfo, VkBindImageMemoryInfo, -- > #include "vk_platform.h"
+                                                       VkBindBufferMemory2,
+        pattern VkBindBufferMemory2, HS_vkBindBufferMemory2,
+        PFN_vkBindBufferMemory2, vkBindBufferMemory2,
+        vkBindBufferMemory2Unsafe, vkBindBufferMemory2Safe,
+        VkBindImageMemory2, pattern VkBindImageMemory2,
+        HS_vkBindImageMemory2, PFN_vkBindImageMemory2, vkBindImageMemory2,
+        vkBindImageMemory2Unsafe, vkBindImageMemory2Safe, VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkBindBufferMemoryDeviceGroupInfo,
+        VkBindBufferMemoryDeviceGroupInfoKHR, VkBindBufferMemoryInfoKHR,
+        VkBindImageMemoryDeviceGroupInfo,
+        VkBindImageMemoryDeviceGroupInfoKHR, VkBindImageMemoryInfoKHR,
+        VkBindImageMemorySwapchainInfoKHR, VkBindImagePlaneMemoryInfo,
+        VkBindImagePlaneMemoryInfoKHR, VkBindSparseInfo,
+        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
+        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
+        pattern VK_IMAGE_CREATE_ALIAS_BIT,
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkDeviceCreateInfo,
+        VkDeviceEventTypeEXT(..), VkDeviceGroupPresentModeBitmaskKHR(..),
+        VkDeviceCreateFlagBits(..), VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkDeviceQueueCreateInfo, VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures2,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
+        -- ** Promoted from VK_KHR_dedicated_allocation
+        VkMemoryAllocateInfo, VkMemoryDedicatedAllocateInfo,
+        VkMemoryDedicatedRequirements, VkMemoryRequirements,
+        VkMemoryRequirements2,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
+        pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
+        VkClearColorValue, VkClearDepthStencilValue, VkClearValue,
+        VkCommandBufferBeginInfo, VkCommandBufferInheritanceInfo,
+        VkCommandBufferLevel(..), VkCommandBufferResetBitmask(..),
+        VkCommandBufferUsageBitmask(..), VkCommandPoolCreateBitmask(..),
+        VkCommandPoolResetBitmask(..), VkCommandBufferResetFlagBits(),
+        VkCommandBufferResetFlags(), VkCommandBufferUsageFlagBits(),
+        VkCommandBufferUsageFlags(), VkCommandPoolCreateFlagBits(),
+        VkCommandPoolCreateFlags(), VkCommandPoolResetFlagBits(),
+        VkCommandPoolResetFlags(), VkDeviceGroupBindSparseInfo,
+        VkDeviceGroupCommandBufferBeginInfo,
+        VkDeviceGroupRenderPassBeginInfo, VkDeviceGroupSubmitInfo,
+        VkExtent2D, VkExtent3D, VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkImageSubresource,
+        VkMemoryAllocateBitmask(..), VkMemoryHeapBitmask(..),
+        VkMemoryPropertyBitmask(..), VkMemoryAllocateFlagBits(),
+        VkMemoryAllocateFlagBitsKHR(..), VkMemoryAllocateFlags(),
+        VkMemoryHeapFlagBits(), VkMemoryHeapFlags(),
+        VkMemoryPropertyFlagBits(), VkMemoryPropertyFlags(),
+        VkMemoryAllocateFlagsInfo, VkOffset2D, VkOffset3D,
+        VkPeerMemoryFeatureBitmask(..), VkPeerMemoryFeatureFlagBits(),
+        VkPeerMemoryFeatureFlagBitsKHR(..), VkPeerMemoryFeatureFlags(),
+        VkPipelineBindPoint(..), VkPipelineCacheHeaderVersion(..),
+        VkPipelineCreateBitmask(..), VkPipelineStageBitmask(..),
+        VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..),
+        VkQueryControlBitmask(..), VkQueryPipelineStatisticBitmask(..),
+        VkQueryResultBitmask(..), VkQueryType(..),
+        VkQueryControlFlagBits(), VkQueryControlFlags(),
+        VkQueryPipelineStatisticFlagBits(),
+        VkQueryPipelineStatisticFlags(), VkQueryPoolCreateFlagBits(..),
+        VkQueryResultFlagBits(), VkQueryResultFlags(), VkRect2D,
+        VkRenderPassBeginInfo, VkSparseBufferMemoryBindInfo,
+        VkSparseImageMemoryBind, VkSparseImageMemoryBindInfo,
+        VkSparseImageOpaqueMemoryBindInfo, VkSparseMemoryBind,
+        VkSparseImageFormatBitmask(..), VkSparseMemoryBindBitmask(..),
+        VkSparseImageFormatFlagBits(), VkSparseImageFormatFlags(),
+        VkSparseMemoryBindFlagBits(), VkSparseMemoryBindFlags(),
+        VkSubmitInfo, -- > #include "vk_platform.h"
+                      VkGetDeviceGroupPeerMemoryFeatures,
+        pattern VkGetDeviceGroupPeerMemoryFeatures,
+        HS_vkGetDeviceGroupPeerMemoryFeatures,
+        PFN_vkGetDeviceGroupPeerMemoryFeatures,
+        vkGetDeviceGroupPeerMemoryFeatures,
+        vkGetDeviceGroupPeerMemoryFeaturesUnsafe,
+        vkGetDeviceGroupPeerMemoryFeaturesSafe, VkCmdSetDeviceMask,
+        pattern VkCmdSetDeviceMask, HS_vkCmdSetDeviceMask,
+        PFN_vkCmdSetDeviceMask, vkCmdSetDeviceMask,
+        vkCmdSetDeviceMaskUnsafe, vkCmdSetDeviceMaskSafe,
+        VkCmdDispatchBase, pattern VkCmdDispatchBase, HS_vkCmdDispatchBase,
+        PFN_vkCmdDispatchBase, vkCmdDispatchBase, vkCmdDispatchBaseUnsafe,
+        vkCmdDispatchBaseSafe,
+        pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
+        pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
+        pattern VK_PIPELINE_CREATE_DISPATCH_BASE,
+        pattern VK_DEPENDENCY_DEVICE_GROUP_BIT,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
+        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
+        pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
+        VkDeviceGroupDeviceCreateInfo, VkPhysicalDeviceGroupProperties,
+        -- > #include "vk_platform.h"
+        VkEnumeratePhysicalDeviceGroups,
+        pattern VkEnumeratePhysicalDeviceGroups,
+        HS_vkEnumeratePhysicalDeviceGroups,
+        PFN_vkEnumeratePhysicalDeviceGroups,
+        vkEnumeratePhysicalDeviceGroups,
+        vkEnumeratePhysicalDeviceGroupsUnsafe,
+        vkEnumeratePhysicalDeviceGroupsSafe,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceFeatures2KHR, VkPhysicalDeviceGroupPropertiesKHR,
+        VkPhysicalDeviceIDProperties, VkPhysicalDeviceIDPropertiesKHR,
+        VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceImageFormatInfo2KHR,
+        VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkPhysicalDeviceSurfaceInfo2KHR,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
+        pattern VK_MAX_DEVICE_GROUP_SIZE,
+        pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
+        -- ** Promoted from VK_KHR_get_memory_requirements2
+        VkBufferMemoryRequirementsInfo2, VkImageMemoryRequirementsInfo2,
+        VkImageSparseMemoryRequirementsInfo2,
+        VkSparseImageFormatProperties, VkSparseImageMemoryRequirements,
+        VkSparseImageMemoryRequirements2, -- > #include "vk_platform.h"
+                                          VkGetImageMemoryRequirements2,
+        pattern VkGetImageMemoryRequirements2,
+        HS_vkGetImageMemoryRequirements2,
+        PFN_vkGetImageMemoryRequirements2, vkGetImageMemoryRequirements2,
+        vkGetImageMemoryRequirements2Unsafe,
+        vkGetImageMemoryRequirements2Safe, VkGetBufferMemoryRequirements2,
+        pattern VkGetBufferMemoryRequirements2,
+        HS_vkGetBufferMemoryRequirements2,
+        PFN_vkGetBufferMemoryRequirements2, vkGetBufferMemoryRequirements2,
+        vkGetBufferMemoryRequirements2Unsafe,
+        vkGetBufferMemoryRequirements2Safe,
+        VkGetImageSparseMemoryRequirements2,
+        pattern VkGetImageSparseMemoryRequirements2,
+        HS_vkGetImageSparseMemoryRequirements2,
+        PFN_vkGetImageSparseMemoryRequirements2,
+        vkGetImageSparseMemoryRequirements2,
+        vkGetImageSparseMemoryRequirements2Unsafe,
+        vkGetImageSparseMemoryRequirements2Safe, VkBufferCopy,
+        VkBufferCreateInfo, VkBufferImageCopy, VkBufferMemoryBarrier,
+        VkBufferMemoryRequirementsInfo2KHR, VkBufferViewCreateInfo,
+        VkImageBlit, VkImageCopy, VkImageCreateInfo,
+        VkImageFormatListCreateInfoKHR, VkImageFormatProperties,
+        VkImageFormatProperties2, VkImageFormatProperties2KHR,
+        VkImageMemoryBarrier, VkImageMemoryRequirementsInfo2KHR,
+        VkImagePlaneMemoryRequirementsInfo,
+        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
+        VkImageSparseMemoryRequirementsInfo2KHR, VkImageSubresourceLayers,
+        VkImageSubresourceRange, VkImageSwapchainCreateInfoKHR,
+        VkImageViewCreateInfo, VkImageViewUsageCreateInfo,
+        VkImageViewUsageCreateInfoKHR, VkMemoryAllocateFlagsInfoKHR,
+        VkMemoryBarrier, VkMemoryDedicatedAllocateInfoKHR,
+        VkMemoryDedicatedRequirementsKHR, VkMemoryFdPropertiesKHR,
+        VkMemoryGetFdInfoKHR, VkMemoryHeap,
+        VkMemoryHostPointerPropertiesEXT, VkMemoryRequirements2KHR,
+        VkMemoryType, VkSparseImageFormatProperties2,
+        VkSparseImageFormatProperties2KHR,
+        VkSparseImageMemoryRequirements2KHR,
+        pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
+        pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
+        pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
+        pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
+        pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
+        VkFormat(..), VkFormatFeatureBitmask(..),
+        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
+        VkFormatProperties, VkFormatProperties2, VkQueueFamilyProperties,
+        VkQueueFamilyProperties2, VkQueueBitmask(..),
+        VkQueueGlobalPriorityEXT(..), VkQueueFlagBits(), VkQueueFlags(),
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceFeatures2, pattern VkGetPhysicalDeviceFeatures2,
+        HS_vkGetPhysicalDeviceFeatures2, PFN_vkGetPhysicalDeviceFeatures2,
+        vkGetPhysicalDeviceFeatures2, vkGetPhysicalDeviceFeatures2Unsafe,
+        vkGetPhysicalDeviceFeatures2Safe, VkGetPhysicalDeviceProperties2,
+        pattern VkGetPhysicalDeviceProperties2,
+        HS_vkGetPhysicalDeviceProperties2,
+        PFN_vkGetPhysicalDeviceProperties2, vkGetPhysicalDeviceProperties2,
+        vkGetPhysicalDeviceProperties2Unsafe,
+        vkGetPhysicalDeviceProperties2Safe,
+        VkGetPhysicalDeviceFormatProperties2,
+        pattern VkGetPhysicalDeviceFormatProperties2,
+        HS_vkGetPhysicalDeviceFormatProperties2,
+        PFN_vkGetPhysicalDeviceFormatProperties2,
+        vkGetPhysicalDeviceFormatProperties2,
+        vkGetPhysicalDeviceFormatProperties2Unsafe,
+        vkGetPhysicalDeviceFormatProperties2Safe,
+        VkGetPhysicalDeviceImageFormatProperties2,
+        pattern VkGetPhysicalDeviceImageFormatProperties2,
+        HS_vkGetPhysicalDeviceImageFormatProperties2,
+        PFN_vkGetPhysicalDeviceImageFormatProperties2,
+        vkGetPhysicalDeviceImageFormatProperties2,
+        vkGetPhysicalDeviceImageFormatProperties2Unsafe,
+        vkGetPhysicalDeviceImageFormatProperties2Safe,
+        VkGetPhysicalDeviceQueueFamilyProperties2,
+        pattern VkGetPhysicalDeviceQueueFamilyProperties2,
+        HS_vkGetPhysicalDeviceQueueFamilyProperties2,
+        PFN_vkGetPhysicalDeviceQueueFamilyProperties2,
+        vkGetPhysicalDeviceQueueFamilyProperties2,
+        vkGetPhysicalDeviceQueueFamilyProperties2Unsafe,
+        vkGetPhysicalDeviceQueueFamilyProperties2Safe,
+        VkGetPhysicalDeviceMemoryProperties2,
+        pattern VkGetPhysicalDeviceMemoryProperties2,
+        HS_vkGetPhysicalDeviceMemoryProperties2,
+        PFN_vkGetPhysicalDeviceMemoryProperties2,
+        vkGetPhysicalDeviceMemoryProperties2,
+        vkGetPhysicalDeviceMemoryProperties2Unsafe,
+        vkGetPhysicalDeviceMemoryProperties2Safe,
+        VkGetPhysicalDeviceSparseImageFormatProperties2,
+        pattern VkGetPhysicalDeviceSparseImageFormatProperties2,
+        HS_vkGetPhysicalDeviceSparseImageFormatProperties2,
+        PFN_vkGetPhysicalDeviceSparseImageFormatProperties2,
+        vkGetPhysicalDeviceSparseImageFormatProperties2,
+        vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe,
+        vkGetPhysicalDeviceSparseImageFormatProperties2Safe,
+        VkDeviceEventInfoEXT, VkDeviceGeneratedCommandsFeaturesNVX,
+        VkDeviceGeneratedCommandsLimitsNVX, VkDeviceGroupBindSparseInfoKHR,
+        VkDeviceGroupCommandBufferBeginInfoKHR,
+        VkDeviceGroupDeviceCreateInfoKHR,
+        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
+        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfoKHR,
+        VkDeviceGroupSwapchainCreateInfoKHR,
+        VkDeviceQueueGlobalPriorityCreateInfoEXT, VkDeviceQueueInfo2,
+        VkFormatProperties2KHR, VkQueueFamilyProperties2KHR,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
+        pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
+        -- ** Promoted from VK_KHR_maintenance1
+        --
+        -- |
+        -- > #include "vk_platform.h"
+        VkTrimCommandPool, pattern VkTrimCommandPool, HS_vkTrimCommandPool,
+        PFN_vkTrimCommandPool, vkTrimCommandPool, vkTrimCommandPoolUnsafe,
+        vkTrimCommandPoolSafe, pattern VK_ERROR_OUT_OF_POOL_MEMORY,
+        pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
+        pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
+        pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
+        -- ** Promoted from VK_KHR_maintenance2
+        VkAccessBitmask(..), VkAccessFlagBits(), VkAccessFlags(),
+        VkAttachmentDescription, VkAttachmentDescriptionBitmask(..),
+        VkAttachmentLoadOp(..), VkAttachmentStoreOp(..),
+        VkAttachmentDescriptionFlagBits(), VkAttachmentDescriptionFlags(),
+        VkAttachmentReference, VkComponentMapping, VkComponentSwizzle(..),
+        VkDependencyBitmask(..), VkDependencyFlagBits(),
+        VkDependencyFlags(), VkInputAttachmentAspectReference,
+        VkPipelineTessellationDomainOriginStateCreateInfo,
+        VkPipelineTessellationStateCreateInfo, VkPointClippingBehavior(..),
+        VkPointClippingBehaviorKHR(..), VkRenderPassCreateInfo,
+        VkRenderPassInputAttachmentAspectCreateInfo, VkSubpassDependency,
+        VkSubpassDescription, VkSubpassContents(..),
+        VkSubpassDescriptionBitmask(..), VkSubpassDescriptionFlagBits(),
+        VkSubpassDescriptionFlags(), VkTessellationDomainOrigin(..),
+        VkTessellationDomainOriginKHR(..),
+        -- > #include "vk_platform.h"
+        pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
+        pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
+        pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
+        pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
+        VkRenderPassMultiviewCreateInfo,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
+        pattern VK_DEPENDENCY_VIEW_LOCAL_BIT,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
+        VkProtectedSubmitInfo, -- > #include "vk_platform.h"
+                               VkGetDeviceQueue2,
+        pattern VkGetDeviceQueue2, HS_vkGetDeviceQueue2,
+        PFN_vkGetDeviceQueue2, vkGetDeviceQueue2, vkGetDeviceQueue2Unsafe,
+        vkGetDeviceQueue2Safe,
+        pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,
+        pattern VK_QUEUE_PROTECTED_BIT,
+        pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,
+        pattern VK_MEMORY_PROPERTY_PROTECTED_BIT,
+        pattern VK_BUFFER_CREATE_PROTECTED_BIT,
+        pattern VK_IMAGE_CREATE_PROTECTED_BIT,
+        pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT, VkBorderColor(..),
+        VkChromaLocation(..), VkChromaLocationKHR(..), VkCompareOp(..),
+        VkFilter(..), VkSamplerAddressMode(..), VkSamplerMipmapMode(..),
+        VkSamplerReductionModeEXT(..), VkSamplerYcbcrModelConversion(..),
+        VkSamplerYcbcrRange(..), VkSamplerCreateFlagBits(..),
+        VkSamplerYcbcrModelConversionKHR(..), VkSamplerYcbcrRangeKHR(..),
+        VkSamplerCreateInfo, VkSamplerYcbcrConversionCreateInfo,
+        VkSamplerYcbcrConversionImageFormatProperties,
+        VkSamplerYcbcrConversionInfo, -- > #include "vk_platform.h"
+                                      VkCreateSamplerYcbcrConversion,
+        pattern VkCreateSamplerYcbcrConversion,
+        HS_vkCreateSamplerYcbcrConversion,
+        PFN_vkCreateSamplerYcbcrConversion, vkCreateSamplerYcbcrConversion,
+        vkCreateSamplerYcbcrConversionUnsafe,
+        vkCreateSamplerYcbcrConversionSafe,
+        VkDestroySamplerYcbcrConversion,
+        pattern VkDestroySamplerYcbcrConversion,
+        HS_vkDestroySamplerYcbcrConversion,
+        PFN_vkDestroySamplerYcbcrConversion,
+        vkDestroySamplerYcbcrConversion,
+        vkDestroySamplerYcbcrConversionUnsafe,
+        vkDestroySamplerYcbcrConversionSafe, VkInternalAllocationType(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkAllocationCallbacks,
+        VkSamplerReductionModeCreateInfoEXT,
+        VkSamplerYcbcrConversionCreateInfoKHR,
+        VkSamplerYcbcrConversionImageFormatPropertiesKHR,
+        VkSamplerYcbcrConversionInfoKHR,
+        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
+        pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
+        pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
+        pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
+        pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
+        pattern VK_FORMAT_G8B8G8R8_422_UNORM,
+        pattern VK_FORMAT_B8G8R8G8_422_UNORM,
+        pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
+        pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
+        pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
+        pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
+        pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
+        pattern VK_FORMAT_R10X6_UNORM_PACK16,
+        pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
+        pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
+        pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
+        pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
+        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
+        pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
+        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
+        pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
+        pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
+        pattern VK_FORMAT_R12X4_UNORM_PACK16,
+        pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
+        pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
+        pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
+        pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
+        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
+        pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
+        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
+        pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
+        pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
+        pattern VK_FORMAT_G16B16G16R16_422_UNORM,
+        pattern VK_FORMAT_B16G16R16G16_422_UNORM,
+        pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
+        pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
+        pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
+        pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
+        pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
+        pattern VK_IMAGE_ASPECT_PLANE_0_BIT,
+        pattern VK_IMAGE_ASPECT_PLANE_1_BIT,
+        pattern VK_IMAGE_ASPECT_PLANE_2_BIT,
+        pattern VK_IMAGE_CREATE_DISJOINT_BIT,
+        pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
+        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
+        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
+        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
+        pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
+        pattern VK_FORMAT_FEATURE_DISJOINT_BIT,
+        pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
+        -- ** Promoted from VK_KHR_descriptor_update_template
+        VkDescriptorBindingBitmaskEXT(..),
+        VkDescriptorPoolCreateBitmask(..), VkDescriptorType(..),
+        VkDescriptorUpdateTemplateType(..),
+        VkDescriptorBindingFlagBitsEXT(), VkDescriptorBindingFlagsEXT(),
+        VkDescriptorPoolCreateFlagBits(), VkDescriptorPoolCreateFlags(),
+        VkDescriptorSetLayoutCreateBitmask(..),
+        VkDescriptorSetLayoutCreateFlagBits(),
+        VkDescriptorSetLayoutCreateFlags(),
+        VkDescriptorUpdateTemplateTypeKHR(..),
+        VkDescriptorUpdateTemplateCreateInfo,
+        VkDescriptorUpdateTemplateEntry, -- > #include "vk_platform.h"
+                                         VkCreateDescriptorUpdateTemplate,
+        pattern VkCreateDescriptorUpdateTemplate,
+        HS_vkCreateDescriptorUpdateTemplate,
+        PFN_vkCreateDescriptorUpdateTemplate,
+        vkCreateDescriptorUpdateTemplate,
+        vkCreateDescriptorUpdateTemplateUnsafe,
+        vkCreateDescriptorUpdateTemplateSafe,
+        VkDestroyDescriptorUpdateTemplate,
+        pattern VkDestroyDescriptorUpdateTemplate,
+        HS_vkDestroyDescriptorUpdateTemplate,
+        PFN_vkDestroyDescriptorUpdateTemplate,
+        vkDestroyDescriptorUpdateTemplate,
+        vkDestroyDescriptorUpdateTemplateUnsafe,
+        vkDestroyDescriptorUpdateTemplateSafe,
+        VkUpdateDescriptorSetWithTemplate,
+        pattern VkUpdateDescriptorSetWithTemplate,
+        HS_vkUpdateDescriptorSetWithTemplate,
+        PFN_vkUpdateDescriptorSetWithTemplate,
+        vkUpdateDescriptorSetWithTemplate,
+        vkUpdateDescriptorSetWithTemplateUnsafe,
+        vkUpdateDescriptorSetWithTemplateSafe, VkDescriptorBufferInfo,
+        VkDescriptorImageInfo, VkDescriptorPoolCreateInfo,
+        VkDescriptorPoolSize, VkDescriptorSetAllocateInfo,
+        VkDescriptorSetLayoutBinding,
+        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
+        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutSupport,
+        VkDescriptorSetLayoutSupportKHR,
+        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
+        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
+        VkDescriptorUpdateTemplateCreateInfoKHR,
+        VkDescriptorUpdateTemplateEntryKHR,
+        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
+        pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
+        -- ** Promoted from VK_KHR_external_memory_capabilities
+        VkBufferCreateBitmask(..), VkBufferUsageBitmask(..),
+        VkBufferCreateFlagBits(), VkBufferCreateFlags(),
+        VkBufferUsageFlagBits(), VkBufferUsageFlags(),
+        VkBufferViewCreateFlagBits(..), VkExternalBufferProperties,
+        VkExternalImageFormatProperties, VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(), VkExternalMemoryProperties,
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceExternalBufferProperties,
+        pattern VkGetPhysicalDeviceExternalBufferProperties,
+        HS_vkGetPhysicalDeviceExternalBufferProperties,
+        PFN_vkGetPhysicalDeviceExternalBufferProperties,
+        vkGetPhysicalDeviceExternalBufferProperties,
+        vkGetPhysicalDeviceExternalBufferPropertiesUnsafe,
+        vkGetPhysicalDeviceExternalBufferPropertiesSafe,
+        VkExternalBufferPropertiesKHR, VkExternalFenceProperties,
+        VkExternalFencePropertiesKHR, VkExternalImageFormatPropertiesKHR,
+        VkExternalImageFormatPropertiesNV,
+        VkExternalMemoryBufferCreateInfo,
+        VkExternalMemoryBufferCreateInfoKHR,
+        VkExternalMemoryImageCreateInfo,
+        VkExternalMemoryImageCreateInfoKHR,
+        VkExternalMemoryImageCreateInfoNV, VkExternalMemoryPropertiesKHR,
+        VkExternalSemaphoreProperties, VkExternalSemaphorePropertiesKHR,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
+        pattern VK_LUID_SIZE, VkExportMemoryAllocateInfo,
+        VkSharingMode(..),
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
+        pattern VK_ERROR_INVALID_EXTERNAL_HANDLE,
+        pattern VK_QUEUE_FAMILY_EXTERNAL,
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceExternalFenceProperties,
+        pattern VkGetPhysicalDeviceExternalFenceProperties,
+        HS_vkGetPhysicalDeviceExternalFenceProperties,
+        PFN_vkGetPhysicalDeviceExternalFenceProperties,
+        vkGetPhysicalDeviceExternalFenceProperties,
+        vkGetPhysicalDeviceExternalFencePropertiesUnsafe,
+        vkGetPhysicalDeviceExternalFencePropertiesSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
+        -- ** Promoted from VK_KHR_external_fence
+        VkExportFenceCreateInfo, VkFenceCreateBitmask(..),
+        VkFenceImportBitmask(..), VkFenceCreateFlagBits(),
+        VkFenceCreateFlags(), VkFenceImportFlagBits(),
+        VkFenceImportFlagBitsKHR(..), VkFenceImportFlags(),
+        VkFenceCreateInfo,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
+        -- ** Promoted from VK_KHR_external_semaphore
+        VkExportSemaphoreCreateInfo, VkSemaphoreCreateInfo,
+        VkSemaphoreImportBitmask(..), VkSemaphoreImportFlagBits(),
+        VkSemaphoreImportFlagBitsKHR(..), VkSemaphoreImportFlags(),
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
+        -- > #include "vk_platform.h"
+        VkGetPhysicalDeviceExternalSemaphoreProperties,
+        pattern VkGetPhysicalDeviceExternalSemaphoreProperties,
+        HS_vkGetPhysicalDeviceExternalSemaphoreProperties,
+        PFN_vkGetPhysicalDeviceExternalSemaphoreProperties,
+        vkGetPhysicalDeviceExternalSemaphoreProperties,
+        vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe,
+        vkGetPhysicalDeviceExternalSemaphorePropertiesSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
+        pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
+        -- > #include "vk_platform.h"
+        VkGetDescriptorSetLayoutSupport,
+        pattern VkGetDescriptorSetLayoutSupport,
+        HS_vkGetDescriptorSetLayoutSupport,
+        PFN_vkGetDescriptorSetLayoutSupport,
+        vkGetDescriptorSetLayoutSupport,
+        vkGetDescriptorSetLayoutSupportUnsafe,
+        vkGetDescriptorSetLayoutSupportSafe,
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
+        pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
+        -- > #include "vk_platform.h"
+        pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES)
+       where
+import GHC.Ptr                                                     (Ptr (..))
+import Graphics.Vulkan.Constants                                   (pattern VK_LUID_SIZE,
+                                                                    pattern VK_MAX_DEVICE_GROUP_SIZE,
+                                                                    pattern VK_QUEUE_FAMILY_EXTERNAL)
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Proc
+import Graphics.Vulkan.Types.BaseTypes
+import Graphics.Vulkan.Types.Bitmasks
+import Graphics.Vulkan.Types.Enum.AccessFlags
+import Graphics.Vulkan.Types.Enum.Attachment
+import Graphics.Vulkan.Types.Enum.BorderColor
+import Graphics.Vulkan.Types.Enum.Buffer
+import Graphics.Vulkan.Types.Enum.ChromaLocation
+import Graphics.Vulkan.Types.Enum.Command
+import Graphics.Vulkan.Types.Enum.CompareOp
+import Graphics.Vulkan.Types.Enum.ComponentSwizzle
+import Graphics.Vulkan.Types.Enum.DependencyFlags
+import Graphics.Vulkan.Types.Enum.Descriptor
+import Graphics.Vulkan.Types.Enum.Device
+import Graphics.Vulkan.Types.Enum.External
+import Graphics.Vulkan.Types.Enum.Fence
+import Graphics.Vulkan.Types.Enum.Filter
+import Graphics.Vulkan.Types.Enum.Format
+import Graphics.Vulkan.Types.Enum.Image
+import Graphics.Vulkan.Types.Enum.InternalAllocationType
+import Graphics.Vulkan.Types.Enum.Memory
+import Graphics.Vulkan.Types.Enum.Object                           (VkObjectType (..))
+import Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag
+import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
+import Graphics.Vulkan.Types.Enum.Pipeline
+import Graphics.Vulkan.Types.Enum.PointClippingBehavior
+import Graphics.Vulkan.Types.Enum.Query
+import Graphics.Vulkan.Types.Enum.Queue
+import Graphics.Vulkan.Types.Enum.Result
+import Graphics.Vulkan.Types.Enum.SampleCountFlags
+import Graphics.Vulkan.Types.Enum.Sampler
+import Graphics.Vulkan.Types.Enum.SemaphoreImportFlag
+import Graphics.Vulkan.Types.Enum.Shader
+import Graphics.Vulkan.Types.Enum.SharingMode
+import Graphics.Vulkan.Types.Enum.Sparse
+import Graphics.Vulkan.Types.Enum.StructureType
+import Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags
+import Graphics.Vulkan.Types.Enum.Subpass
+import Graphics.Vulkan.Types.Enum.SystemAllocationScope
+import Graphics.Vulkan.Types.Enum.TessellationDomainOrigin
+import Graphics.Vulkan.Types.Funcpointers
+import Graphics.Vulkan.Types.Handles
+import Graphics.Vulkan.Types.Struct.AllocationCallbacks
+import Graphics.Vulkan.Types.Struct.Attachment                     (VkAttachmentDescription,
+                                                                    VkAttachmentReference)
+import Graphics.Vulkan.Types.Struct.Bind
+import Graphics.Vulkan.Types.Struct.Buffer
+import Graphics.Vulkan.Types.Struct.Clear                          (VkClearColorValue,
+                                                                    VkClearDepthStencilValue,
+                                                                    VkClearValue)
+import Graphics.Vulkan.Types.Struct.Command                        (VkCommandBufferBeginInfo,
+                                                                    VkCommandBufferInheritanceInfo)
+import Graphics.Vulkan.Types.Struct.ComponentMapping
+import Graphics.Vulkan.Types.Struct.Descriptor
+import Graphics.Vulkan.Types.Struct.Device
+import Graphics.Vulkan.Types.Struct.Export                         (VkExportFenceCreateInfo,
+                                                                    VkExportMemoryAllocateInfo,
+                                                                    VkExportSemaphoreCreateInfo)
+import Graphics.Vulkan.Types.Struct.Extent
+import Graphics.Vulkan.Types.Struct.External
+import Graphics.Vulkan.Types.Struct.Fence                          (VkFenceCreateInfo)
+import Graphics.Vulkan.Types.Struct.FormatProperties
+import Graphics.Vulkan.Types.Struct.Image
+import Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference (VkInputAttachmentAspectReference)
+import Graphics.Vulkan.Types.Struct.Memory
+import Graphics.Vulkan.Types.Struct.Offset                         (VkOffset2D,
+                                                                    VkOffset3D)
+import Graphics.Vulkan.Types.Struct.PhysicalDevice
+import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
+import Graphics.Vulkan.Types.Struct.Pipeline                       (VkPipelineTessellationDomainOriginStateCreateInfo,
+                                                                    VkPipelineTessellationStateCreateInfo)
+import Graphics.Vulkan.Types.Struct.ProtectedSubmitInfo            (VkProtectedSubmitInfo)
+import Graphics.Vulkan.Types.Struct.QueueFamilyProperties
+import Graphics.Vulkan.Types.Struct.Rect                           (VkRect2D)
+import Graphics.Vulkan.Types.Struct.RenderPass                     (VkRenderPassBeginInfo,
+                                                                    VkRenderPassCreateInfo,
+                                                                    VkRenderPassInputAttachmentAspectCreateInfo,
+                                                                    VkRenderPassMultiviewCreateInfo)
+import Graphics.Vulkan.Types.Struct.Sampler
+import Graphics.Vulkan.Types.Struct.Semaphore                      (VkSemaphoreCreateInfo)
+import Graphics.Vulkan.Types.Struct.Sparse
+import Graphics.Vulkan.Types.Struct.SubmitInfo                     (VkSubmitInfo)
+import Graphics.Vulkan.Types.Struct.Subpass                        (VkSubpassDependency,
+                                                                    VkSubpassDescription)
+import System.IO.Unsafe                                            (unsafeDupablePerformIO)
+
+pattern VkEnumerateInstanceVersion :: CString
+
+pattern VkEnumerateInstanceVersion <-
+        (is_VkEnumerateInstanceVersion -> True)
+  where
+    VkEnumerateInstanceVersion = _VkEnumerateInstanceVersion
+
+{-# INLINE _VkEnumerateInstanceVersion #-}
+
+_VkEnumerateInstanceVersion :: CString
+_VkEnumerateInstanceVersion = Ptr "vkEnumerateInstanceVersion\NUL"#
+
+{-# INLINE is_VkEnumerateInstanceVersion #-}
+
+is_VkEnumerateInstanceVersion :: CString -> Bool
+is_VkEnumerateInstanceVersion
+  = (EQ ==) . cmpCStrings _VkEnumerateInstanceVersion
+
+type VkEnumerateInstanceVersion = "vkEnumerateInstanceVersion"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- > VkResult vkEnumerateInstanceVersion
+-- >     ( uint32_t* pApiVersion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
+--
+-- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
+--           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkEnumerateInstanceVersion"
+               vkEnumerateInstanceVersionUnsafe :: Ptr Word32 -- ^ pApiVersion
+                                                              -> IO VkResult
+
+#else
+vkEnumerateInstanceVersionUnsafe :: Ptr Word32 -- ^ pApiVersion
+                                               -> IO VkResult
+vkEnumerateInstanceVersionUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumerateInstanceVersion)
+
+{-# NOINLINE vkEnumerateInstanceVersionUnsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- > VkResult vkEnumerateInstanceVersion
+-- >     ( uint32_t* pApiVersion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
+--
+-- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
+--           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkEnumerateInstanceVersion"
+               vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
+                                                            -> IO VkResult
+
+#else
+vkEnumerateInstanceVersionSafe :: Ptr Word32 -- ^ pApiVersion
+                                             -> IO VkResult
+vkEnumerateInstanceVersionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumerateInstanceVersion)
+
+{-# NOINLINE vkEnumerateInstanceVersionSafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- > VkResult vkEnumerateInstanceVersion
+-- >     ( uint32_t* pApiVersion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumerateInstanceVersion <- vkGetInstanceProc @VkEnumerateInstanceVersion vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumerateInstanceVersion <- vkGetProc @VkEnumerateInstanceVersion
+--
+-- __Note:__ @vkEnumerateInstanceVersionUnsafe@ and @vkEnumerateInstanceVersionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumerateInstanceVersion@ is an alias
+--           of @vkEnumerateInstanceVersionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumerateInstanceVersionSafe@.
+--
+vkEnumerateInstanceVersion :: Ptr Word32 -- ^ pApiVersion
+                                         -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkEnumerateInstanceVersion = vkEnumerateInstanceVersionUnsafe
+#else
+vkEnumerateInstanceVersion = vkEnumerateInstanceVersionSafe
+
+#endif
+{-# INLINE vkEnumerateInstanceVersion #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   > VkResult vkEnumerateInstanceVersion
+--   >     ( uint32_t* pApiVersion
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumerateInstanceVersion vkEnumerateInstanceVersion registry at www.khronos.org>
+type HS_vkEnumerateInstanceVersion = Ptr Word32 -- ^ pApiVersion
+                                                -> IO VkResult
+
+type PFN_vkEnumerateInstanceVersion =
+     FunPtr HS_vkEnumerateInstanceVersion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumerateInstanceVersionUnsafe ::
+               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumerateInstanceVersionSafe ::
+               PFN_vkEnumerateInstanceVersion -> HS_vkEnumerateInstanceVersion
+
+instance VulkanProc "vkEnumerateInstanceVersion" where
+    type VkProcType "vkEnumerateInstanceVersion" =
+         HS_vkEnumerateInstanceVersion
+    vkProcSymbol = _VkEnumerateInstanceVersion
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkEnumerateInstanceVersionUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkEnumerateInstanceVersionSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES =
+        VkStructureType 1000094000
+
+pattern VkBindBufferMemory2 :: CString
+
+pattern VkBindBufferMemory2 <- (is_VkBindBufferMemory2 -> True)
+  where
+    VkBindBufferMemory2 = _VkBindBufferMemory2
+
+{-# INLINE _VkBindBufferMemory2 #-}
+
+_VkBindBufferMemory2 :: CString
+_VkBindBufferMemory2 = Ptr "vkBindBufferMemory2\NUL"#
+
+{-# INLINE is_VkBindBufferMemory2 #-}
+
+is_VkBindBufferMemory2 :: CString -> Bool
+is_VkBindBufferMemory2 = (EQ ==) . cmpCStrings _VkBindBufferMemory2
+
+type VkBindBufferMemory2 = "vkBindBufferMemory2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindBufferMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
+--
+-- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
+--           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkBindBufferMemory2"
+               vkBindBufferMemory2Unsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+#else
+vkBindBufferMemory2Unsafe ::
+                          VkDevice -- ^ device
+                                   -> Word32 -- ^ bindInfoCount
+                                             -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                           -> IO VkResult
+vkBindBufferMemory2Unsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindBufferMemory2)
+
+{-# NOINLINE vkBindBufferMemory2Unsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindBufferMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
+--
+-- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
+--           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkBindBufferMemory2"
+               vkBindBufferMemory2Safe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                -> IO VkResult
+
+#else
+vkBindBufferMemory2Safe ::
+                        VkDevice -- ^ device
+                                 -> Word32 -- ^ bindInfoCount
+                                           -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                         -> IO VkResult
+vkBindBufferMemory2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindBufferMemory2)
+
+{-# NOINLINE vkBindBufferMemory2Safe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindBufferMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindBufferMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindBufferMemory2 <- vkGetDeviceProc @VkBindBufferMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindBufferMemory2 <- vkGetProc @VkBindBufferMemory2
+--
+-- __Note:__ @vkBindBufferMemory2Unsafe@ and @vkBindBufferMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindBufferMemory2@ is an alias
+--           of @vkBindBufferMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindBufferMemory2Safe@.
+--
+vkBindBufferMemory2 ::
+                    VkDevice -- ^ device
+                             -> Word32 -- ^ bindInfoCount
+                                       -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                                     -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkBindBufferMemory2 = vkBindBufferMemory2Unsafe
+#else
+vkBindBufferMemory2 = vkBindBufferMemory2Safe
+
+#endif
+{-# INLINE vkBindBufferMemory2 #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindBufferMemory2
+--   >     ( VkDevice device
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindBufferMemoryInfo* pBindInfos
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindBufferMemory2 vkBindBufferMemory2 registry at www.khronos.org>
+type HS_vkBindBufferMemory2 =
+     VkDevice -- ^ device
+              -> Word32 -- ^ bindInfoCount
+                        -> Ptr VkBindBufferMemoryInfo -- ^ pBindInfos
+                                                      -> IO VkResult
+
+type PFN_vkBindBufferMemory2 = FunPtr HS_vkBindBufferMemory2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkBindBufferMemory2Unsafe ::
+               PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
+
+foreign import ccall safe "dynamic" unwrapVkBindBufferMemory2Safe
+               :: PFN_vkBindBufferMemory2 -> HS_vkBindBufferMemory2
+
+instance VulkanProc "vkBindBufferMemory2" where
+    type VkProcType "vkBindBufferMemory2" = HS_vkBindBufferMemory2
+    vkProcSymbol = _VkBindBufferMemory2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemory2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkBindImageMemory2 :: CString
+
+pattern VkBindImageMemory2 <- (is_VkBindImageMemory2 -> True)
+  where
+    VkBindImageMemory2 = _VkBindImageMemory2
+
+{-# INLINE _VkBindImageMemory2 #-}
+
+_VkBindImageMemory2 :: CString
+_VkBindImageMemory2 = Ptr "vkBindImageMemory2\NUL"#
+
+{-# INLINE is_VkBindImageMemory2 #-}
+
+is_VkBindImageMemory2 :: CString -> Bool
+is_VkBindImageMemory2 = (EQ ==) . cmpCStrings _VkBindImageMemory2
+
+type VkBindImageMemory2 = "vkBindImageMemory2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindImageMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
+--
+-- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
+--           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkBindImageMemory2"
+               vkBindImageMemory2Unsafe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                               -> IO VkResult
+
+#else
+vkBindImageMemory2Unsafe ::
+                         VkDevice -- ^ device
+                                  -> Word32 -- ^ bindInfoCount
+                                            -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                         -> IO VkResult
+vkBindImageMemory2Unsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkBindImageMemory2)
+
+{-# NOINLINE vkBindImageMemory2Unsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindImageMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
+--
+-- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
+--           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkBindImageMemory2"
+               vkBindImageMemory2Safe ::
+               VkDevice -- ^ device
+                        -> Word32 -- ^ bindInfoCount
+                                  -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                               -> IO VkResult
+
+#else
+vkBindImageMemory2Safe ::
+                       VkDevice -- ^ device
+                                -> Word32 -- ^ bindInfoCount
+                                          -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                       -> IO VkResult
+vkBindImageMemory2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkBindImageMemory2)
+
+{-# NOINLINE vkBindImageMemory2Safe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkBindImageMemory2
+-- >     ( VkDevice device
+-- >     , uint32_t bindInfoCount
+-- >     , const VkBindImageMemoryInfo* pBindInfos
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myBindImageMemory2 <- vkGetDeviceProc @VkBindImageMemory2 vkDevice
+--
+-- or less efficient:
+--
+-- > myBindImageMemory2 <- vkGetProc @VkBindImageMemory2
+--
+-- __Note:__ @vkBindImageMemory2Unsafe@ and @vkBindImageMemory2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkBindImageMemory2@ is an alias
+--           of @vkBindImageMemory2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkBindImageMemory2Safe@.
+--
+vkBindImageMemory2 ::
+                   VkDevice -- ^ device
+                            -> Word32 -- ^ bindInfoCount
+                                      -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                                   -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkBindImageMemory2 = vkBindImageMemory2Unsafe
+#else
+vkBindImageMemory2 = vkBindImageMemory2Safe
+
+#endif
+{-# INLINE vkBindImageMemory2 #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkBindImageMemory2
+--   >     ( VkDevice device
+--   >     , uint32_t bindInfoCount
+--   >     , const VkBindImageMemoryInfo* pBindInfos
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkBindImageMemory2 vkBindImageMemory2 registry at www.khronos.org>
+type HS_vkBindImageMemory2 =
+     VkDevice -- ^ device
+              -> Word32 -- ^ bindInfoCount
+                        -> Ptr VkBindImageMemoryInfo -- ^ pBindInfos
+                                                     -> IO VkResult
+
+type PFN_vkBindImageMemory2 = FunPtr HS_vkBindImageMemory2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkBindImageMemory2Unsafe ::
+               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
+
+foreign import ccall safe "dynamic" unwrapVkBindImageMemory2Safe ::
+               PFN_vkBindImageMemory2 -> HS_vkBindImageMemory2
+
+instance VulkanProc "vkBindImageMemory2" where
+    type VkProcType "vkBindImageMemory2" = HS_vkBindImageMemory2
+    vkProcSymbol = _VkBindImageMemory2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkBindImageMemory2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkBindImageMemory2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO =
+        VkStructureType 1000157000
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO =
+        VkStructureType 1000157001
+
+-- | bitpos = @10@
+pattern VK_IMAGE_CREATE_ALIAS_BIT :: VkImageCreateBitmask a
+
+pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateBitmask 1024
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES =
+        VkStructureType 1000083000
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS =
+        VkStructureType 1000127000
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO =
+        VkStructureType 1000127001
+
+pattern VkGetDeviceGroupPeerMemoryFeatures :: CString
+
+pattern VkGetDeviceGroupPeerMemoryFeatures <-
+        (is_VkGetDeviceGroupPeerMemoryFeatures -> True)
+  where
+    VkGetDeviceGroupPeerMemoryFeatures
+      = _VkGetDeviceGroupPeerMemoryFeatures
+
+{-# INLINE _VkGetDeviceGroupPeerMemoryFeatures #-}
+
+_VkGetDeviceGroupPeerMemoryFeatures :: CString
+_VkGetDeviceGroupPeerMemoryFeatures
+  = Ptr "vkGetDeviceGroupPeerMemoryFeatures\NUL"#
+
+{-# INLINE is_VkGetDeviceGroupPeerMemoryFeatures #-}
+
+is_VkGetDeviceGroupPeerMemoryFeatures :: CString -> Bool
+is_VkGetDeviceGroupPeerMemoryFeatures
+  = (EQ ==) . cmpCStrings _VkGetDeviceGroupPeerMemoryFeatures
+
+type VkGetDeviceGroupPeerMemoryFeatures =
+     "vkGetDeviceGroupPeerMemoryFeatures"
+
+-- |
+-- > void vkGetDeviceGroupPeerMemoryFeatures
+-- >     ( VkDevice device
+-- >     , uint32_t heapIndex
+-- >     , uint32_t localDeviceIndex
+-- >     , uint32_t remoteDeviceIndex
+-- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
+--
+-- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
+--           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+#else
+vkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
+                                         VkDevice -- ^ device
+                                                  ->
+                                           Word32 -- ^ heapIndex
+                                                  ->
+                                             Word32 -- ^ localDeviceIndex
+                                                    ->
+                                               Word32 -- ^ remoteDeviceIndex
+                                                      -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                                      -> IO ()
+vkGetDeviceGroupPeerMemoryFeaturesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetDeviceGroupPeerMemoryFeatures)
+
+{-# NOINLINE vkGetDeviceGroupPeerMemoryFeaturesUnsafe #-}
+#endif
+
+-- |
+-- > void vkGetDeviceGroupPeerMemoryFeatures
+-- >     ( VkDevice device
+-- >     , uint32_t heapIndex
+-- >     , uint32_t localDeviceIndex
+-- >     , uint32_t remoteDeviceIndex
+-- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
+--
+-- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
+--           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDeviceGroupPeerMemoryFeatures"
+               vkGetDeviceGroupPeerMemoryFeaturesSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Word32 -- ^ heapIndex
+                        -> Word32 -- ^ localDeviceIndex
+                                  -> Word32 -- ^ remoteDeviceIndex
+                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                            -> IO ()
+
+#else
+vkGetDeviceGroupPeerMemoryFeaturesSafe ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         Word32 -- ^ heapIndex
+                                                ->
+                                           Word32 -- ^ localDeviceIndex
+                                                  -> Word32 -- ^ remoteDeviceIndex
+                                                            -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                                            -> IO ()
+vkGetDeviceGroupPeerMemoryFeaturesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDeviceGroupPeerMemoryFeatures)
+
+{-# NOINLINE vkGetDeviceGroupPeerMemoryFeaturesSafe #-}
+#endif
+
+-- |
+-- > void vkGetDeviceGroupPeerMemoryFeatures
+-- >     ( VkDevice device
+-- >     , uint32_t heapIndex
+-- >     , uint32_t localDeviceIndex
+-- >     , uint32_t remoteDeviceIndex
+-- >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetDeviceProc @VkGetDeviceGroupPeerMemoryFeatures vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceGroupPeerMemoryFeatures <- vkGetProc @VkGetDeviceGroupPeerMemoryFeatures
+--
+-- __Note:__ @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ and @vkGetDeviceGroupPeerMemoryFeaturesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceGroupPeerMemoryFeatures@ is an alias
+--           of @vkGetDeviceGroupPeerMemoryFeaturesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceGroupPeerMemoryFeaturesSafe@.
+--
+vkGetDeviceGroupPeerMemoryFeatures ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Word32 -- ^ heapIndex
+                                            ->
+                                       Word32 -- ^ localDeviceIndex
+                                              -> Word32 -- ^ remoteDeviceIndex
+                                                        -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                                        -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceGroupPeerMemoryFeatures
+  = vkGetDeviceGroupPeerMemoryFeaturesUnsafe
+#else
+vkGetDeviceGroupPeerMemoryFeatures
+  = vkGetDeviceGroupPeerMemoryFeaturesSafe
+
+#endif
+{-# INLINE vkGetDeviceGroupPeerMemoryFeatures #-}
+
+-- | > void vkGetDeviceGroupPeerMemoryFeatures
+--   >     ( VkDevice device
+--   >     , uint32_t heapIndex
+--   >     , uint32_t localDeviceIndex
+--   >     , uint32_t remoteDeviceIndex
+--   >     , VkPeerMemoryFeatureFlags* pPeerMemoryFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures registry at www.khronos.org>
+type HS_vkGetDeviceGroupPeerMemoryFeatures =
+     VkDevice -- ^ device
+              ->
+       Word32 -- ^ heapIndex
+              -> Word32 -- ^ localDeviceIndex
+                        -> Word32 -- ^ remoteDeviceIndex
+                                  -> Ptr VkPeerMemoryFeatureFlags -- ^ pPeerMemoryFeatures
+                                                                  -> IO ()
+
+type PFN_vkGetDeviceGroupPeerMemoryFeatures =
+     FunPtr HS_vkGetDeviceGroupPeerMemoryFeatures
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDeviceGroupPeerMemoryFeaturesUnsafe ::
+               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
+                 HS_vkGetDeviceGroupPeerMemoryFeatures
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe ::
+               PFN_vkGetDeviceGroupPeerMemoryFeatures ->
+                 HS_vkGetDeviceGroupPeerMemoryFeatures
+
+instance VulkanProc "vkGetDeviceGroupPeerMemoryFeatures" where
+    type VkProcType "vkGetDeviceGroupPeerMemoryFeatures" =
+         HS_vkGetDeviceGroupPeerMemoryFeatures
+    vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeatures
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetDeviceGroupPeerMemoryFeaturesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDeviceGroupPeerMemoryFeaturesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdSetDeviceMask :: CString
+
+pattern VkCmdSetDeviceMask <- (is_VkCmdSetDeviceMask -> True)
+  where
+    VkCmdSetDeviceMask = _VkCmdSetDeviceMask
+
+{-# INLINE _VkCmdSetDeviceMask #-}
+
+_VkCmdSetDeviceMask :: CString
+_VkCmdSetDeviceMask = Ptr "vkCmdSetDeviceMask\NUL"#
+
+{-# INLINE is_VkCmdSetDeviceMask #-}
+
+is_VkCmdSetDeviceMask :: CString -> Bool
+is_VkCmdSetDeviceMask = (EQ ==) . cmpCStrings _VkCmdSetDeviceMask
+
+type VkCmdSetDeviceMask = "vkCmdSetDeviceMask"
+
+-- |
+-- Queues: 'graphics', 'compute', 'transfer'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDeviceMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t deviceMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
+--
+-- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
+--           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCmdSetDeviceMask"
+               vkCmdSetDeviceMaskUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                                           -> Word32 -- ^ deviceMask
+                                                                     -> IO ()
+
+#else
+vkCmdSetDeviceMaskUnsafe :: VkCommandBuffer -- ^ commandBuffer
+                                            -> Word32 -- ^ deviceMask
+                                                      -> IO ()
+vkCmdSetDeviceMaskUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdSetDeviceMask)
+
+{-# NOINLINE vkCmdSetDeviceMaskUnsafe #-}
+#endif
+
+-- |
+-- Queues: 'graphics', 'compute', 'transfer'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDeviceMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t deviceMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
+--
+-- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
+--           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCmdSetDeviceMask"
+               vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
+                                                         -> Word32 -- ^ deviceMask
+                                                                   -> IO ()
+
+#else
+vkCmdSetDeviceMaskSafe :: VkCommandBuffer -- ^ commandBuffer
+                                          -> Word32 -- ^ deviceMask
+                                                    -> IO ()
+vkCmdSetDeviceMaskSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdSetDeviceMask)
+
+{-# NOINLINE vkCmdSetDeviceMaskSafe #-}
+#endif
+
+-- |
+-- Queues: 'graphics', 'compute', 'transfer'.
+--
+-- Renderpass: @both@
+--
+-- > void vkCmdSetDeviceMask
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t deviceMask
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdSetDeviceMask <- vkGetInstanceProc @VkCmdSetDeviceMask vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdSetDeviceMask <- vkGetProc @VkCmdSetDeviceMask
+--
+-- __Note:__ @vkCmdSetDeviceMaskUnsafe@ and @vkCmdSetDeviceMaskSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdSetDeviceMask@ is an alias
+--           of @vkCmdSetDeviceMaskUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdSetDeviceMaskSafe@.
+--
+vkCmdSetDeviceMask :: VkCommandBuffer -- ^ commandBuffer
+                                      -> Word32 -- ^ deviceMask
+                                                -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkCmdSetDeviceMask = vkCmdSetDeviceMaskUnsafe
+#else
+vkCmdSetDeviceMask = vkCmdSetDeviceMaskSafe
+
+#endif
+{-# INLINE vkCmdSetDeviceMask #-}
+
+-- | Queues: 'graphics', 'compute', 'transfer'.
+--
+--   Renderpass: @both@
+--
+--   > void vkCmdSetDeviceMask
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t deviceMask
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdSetDeviceMask vkCmdSetDeviceMask registry at www.khronos.org>
+type HS_vkCmdSetDeviceMask = VkCommandBuffer -- ^ commandBuffer
+                                             -> Word32 -- ^ deviceMask
+                                                       -> IO ()
+
+type PFN_vkCmdSetDeviceMask = FunPtr HS_vkCmdSetDeviceMask
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCmdSetDeviceMaskUnsafe ::
+               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
+
+foreign import ccall safe "dynamic" unwrapVkCmdSetDeviceMaskSafe ::
+               PFN_vkCmdSetDeviceMask -> HS_vkCmdSetDeviceMask
+
+instance VulkanProc "vkCmdSetDeviceMask" where
+    type VkProcType "vkCmdSetDeviceMask" = HS_vkCmdSetDeviceMask
+    vkProcSymbol = _VkCmdSetDeviceMask
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetDeviceMaskUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkCmdDispatchBase :: CString
+
+pattern VkCmdDispatchBase <- (is_VkCmdDispatchBase -> True)
+  where
+    VkCmdDispatchBase = _VkCmdDispatchBase
+
+{-# INLINE _VkCmdDispatchBase #-}
+
+_VkCmdDispatchBase :: CString
+_VkCmdDispatchBase = Ptr "vkCmdDispatchBase\NUL"#
+
+{-# INLINE is_VkCmdDispatchBase #-}
+
+is_VkCmdDispatchBase :: CString -> Bool
+is_VkCmdDispatchBase = (EQ ==) . cmpCStrings _VkCmdDispatchBase
+
+type VkCmdDispatchBase = "vkCmdDispatchBase"
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdDispatchBase
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t baseGroupX
+-- >     , uint32_t baseGroupY
+-- >     , uint32_t baseGroupZ
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
+--
+-- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
+--           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCmdDispatchBase"
+               vkCmdDispatchBaseUnsafe ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+#else
+vkCmdDispatchBaseUnsafe ::
+                        VkCommandBuffer -- ^ commandBuffer
+                                        ->
+                          Word32 -- ^ baseGroupX
+                                 -> Word32 -- ^ baseGroupY
+                                           -> Word32 -- ^ baseGroupZ
+                                                     -> Word32 -- ^ groupCountX
+                                                               -> Word32 -- ^ groupCountY
+                                                                         -> Word32 -- ^ groupCountZ
+                                                                                   -> IO ()
+vkCmdDispatchBaseUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkCmdDispatchBase)
+
+{-# NOINLINE vkCmdDispatchBaseUnsafe #-}
+#endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdDispatchBase
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t baseGroupX
+-- >     , uint32_t baseGroupY
+-- >     , uint32_t baseGroupZ
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
+--
+-- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
+--           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCmdDispatchBase" vkCmdDispatchBaseSafe
+               ::
+               VkCommandBuffer -- ^ commandBuffer
+                               ->
+                 Word32 -- ^ baseGroupX
+                        -> Word32 -- ^ baseGroupY
+                                  -> Word32 -- ^ baseGroupZ
+                                            -> Word32 -- ^ groupCountX
+                                                      -> Word32 -- ^ groupCountY
+                                                                -> Word32 -- ^ groupCountZ
+                                                                          -> IO ()
+
+#else
+vkCmdDispatchBaseSafe ::
+                      VkCommandBuffer -- ^ commandBuffer
+                                      ->
+                        Word32 -- ^ baseGroupX
+                               -> Word32 -- ^ baseGroupY
+                                         -> Word32 -- ^ baseGroupZ
+                                                   -> Word32 -- ^ groupCountX
+                                                             -> Word32 -- ^ groupCountY
+                                                                       -> Word32 -- ^ groupCountZ
+                                                                                 -> IO ()
+vkCmdDispatchBaseSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkCmdDispatchBase)
+
+{-# NOINLINE vkCmdDispatchBaseSafe #-}
+#endif
+
+-- |
+-- Queues: 'compute'.
+--
+-- Renderpass: @outside@
+--
+-- > void vkCmdDispatchBase
+-- >     ( VkCommandBuffer commandBuffer
+-- >     , uint32_t baseGroupX
+-- >     , uint32_t baseGroupY
+-- >     , uint32_t baseGroupZ
+-- >     , uint32_t groupCountX
+-- >     , uint32_t groupCountY
+-- >     , uint32_t groupCountZ
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCmdDispatchBase <- vkGetInstanceProc @VkCmdDispatchBase vkInstance
+--
+-- or less efficient:
+--
+-- > myCmdDispatchBase <- vkGetProc @VkCmdDispatchBase
+--
+-- __Note:__ @vkCmdDispatchBaseUnsafe@ and @vkCmdDispatchBaseSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCmdDispatchBase@ is an alias
+--           of @vkCmdDispatchBaseUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCmdDispatchBaseSafe@.
+--
+vkCmdDispatchBase ::
+                  VkCommandBuffer -- ^ commandBuffer
+                                  ->
+                    Word32 -- ^ baseGroupX
+                           -> Word32 -- ^ baseGroupY
+                                     -> Word32 -- ^ baseGroupZ
+                                               -> Word32 -- ^ groupCountX
+                                                         -> Word32 -- ^ groupCountY
+                                                                   -> Word32 -- ^ groupCountZ
+                                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkCmdDispatchBase = vkCmdDispatchBaseUnsafe
+#else
+vkCmdDispatchBase = vkCmdDispatchBaseSafe
+
+#endif
+{-# INLINE vkCmdDispatchBase #-}
+
+-- | Queues: 'compute'.
+--
+--   Renderpass: @outside@
+--
+--   > void vkCmdDispatchBase
+--   >     ( VkCommandBuffer commandBuffer
+--   >     , uint32_t baseGroupX
+--   >     , uint32_t baseGroupY
+--   >     , uint32_t baseGroupZ
+--   >     , uint32_t groupCountX
+--   >     , uint32_t groupCountY
+--   >     , uint32_t groupCountZ
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCmdDispatchBase vkCmdDispatchBase registry at www.khronos.org>
+type HS_vkCmdDispatchBase =
+     VkCommandBuffer -- ^ commandBuffer
+                     ->
+       Word32 -- ^ baseGroupX
+              -> Word32 -- ^ baseGroupY
+                        -> Word32 -- ^ baseGroupZ
+                                  -> Word32 -- ^ groupCountX
+                                            -> Word32 -- ^ groupCountY
+                                                      -> Word32 -- ^ groupCountZ
+                                                                -> IO ()
+
+type PFN_vkCmdDispatchBase = FunPtr HS_vkCmdDispatchBase
+
+foreign import ccall unsafe "dynamic" unwrapVkCmdDispatchBaseUnsafe
+               :: PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
+
+foreign import ccall safe "dynamic" unwrapVkCmdDispatchBaseSafe ::
+               PFN_vkCmdDispatchBase -> HS_vkCmdDispatchBase
+
+instance VulkanProc "vkCmdDispatchBase" where
+    type VkProcType "vkCmdDispatchBase" = HS_vkCmdDispatchBase
+    vkProcSymbol = _VkCmdDispatchBase
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchBaseUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO =
+        VkStructureType 1000060000
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO =
+        VkStructureType 1000060003
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO =
+        VkStructureType 1000060004
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO =
+        VkStructureType 1000060005
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO =
+        VkStructureType 1000060006
+
+-- | bitpos = @3@
+pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT ::
+        VkPipelineCreateBitmask a
+
+pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT =
+        VkPipelineCreateBitmask 8
+
+-- | bitpos = @4@
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE ::
+        VkPipelineCreateBitmask a
+
+pattern VK_PIPELINE_CREATE_DISPATCH_BASE =
+        VkPipelineCreateBitmask 16
+
+-- | Dependency is across devices
+--
+--   bitpos = @2@
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyBitmask a
+
+pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyBitmask 4
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO =
+        VkStructureType 1000060013
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO =
+        VkStructureType 1000060014
+
+-- | Allows using VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions when binding memory to the image
+--
+--   bitpos = @6@
+pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT ::
+        VkImageCreateBitmask a
+
+pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT =
+        VkImageCreateBitmask 64
+
+pattern VkEnumeratePhysicalDeviceGroups :: CString
+
+pattern VkEnumeratePhysicalDeviceGroups <-
+        (is_VkEnumeratePhysicalDeviceGroups -> True)
+  where
+    VkEnumeratePhysicalDeviceGroups = _VkEnumeratePhysicalDeviceGroups
+
+{-# INLINE _VkEnumeratePhysicalDeviceGroups #-}
+
+_VkEnumeratePhysicalDeviceGroups :: CString
+_VkEnumeratePhysicalDeviceGroups
+  = Ptr "vkEnumeratePhysicalDeviceGroups\NUL"#
+
+{-# INLINE is_VkEnumeratePhysicalDeviceGroups #-}
+
+is_VkEnumeratePhysicalDeviceGroups :: CString -> Bool
+is_VkEnumeratePhysicalDeviceGroups
+  = (EQ ==) . cmpCStrings _VkEnumeratePhysicalDeviceGroups
+
+type VkEnumeratePhysicalDeviceGroups =
+     "vkEnumeratePhysicalDeviceGroups"
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDeviceGroups
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceGroupCount
+-- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
+--
+-- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
+--           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroupsUnsafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+#else
+vkEnumeratePhysicalDeviceGroupsUnsafe ::
+                                      VkInstance -- ^ instance
+                                                 ->
+                                        Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                                                   ->
+                                          Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                              -> IO VkResult
+vkEnumeratePhysicalDeviceGroupsUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkEnumeratePhysicalDeviceGroups)
+
+{-# NOINLINE vkEnumeratePhysicalDeviceGroupsUnsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDeviceGroups
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceGroupCount
+-- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
+--
+-- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
+--           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkEnumeratePhysicalDeviceGroups"
+               vkEnumeratePhysicalDeviceGroupsSafe ::
+               VkInstance -- ^ instance
+                          ->
+                 Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                            -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                   -> IO VkResult
+
+#else
+vkEnumeratePhysicalDeviceGroupsSafe ::
+                                    VkInstance -- ^ instance
+                                               ->
+                                      Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                                                 ->
+                                        Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                            -> IO VkResult
+vkEnumeratePhysicalDeviceGroupsSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkEnumeratePhysicalDeviceGroups)
+
+{-# NOINLINE vkEnumeratePhysicalDeviceGroupsSafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+-- > VkResult vkEnumeratePhysicalDeviceGroups
+-- >     ( VkInstance instance
+-- >     , uint32_t* pPhysicalDeviceGroupCount
+-- >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetInstanceProc @VkEnumeratePhysicalDeviceGroups vkInstance
+--
+-- or less efficient:
+--
+-- > myEnumeratePhysicalDeviceGroups <- vkGetProc @VkEnumeratePhysicalDeviceGroups
+--
+-- __Note:__ @vkEnumeratePhysicalDeviceGroupsUnsafe@ and @vkEnumeratePhysicalDeviceGroupsSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkEnumeratePhysicalDeviceGroups@ is an alias
+--           of @vkEnumeratePhysicalDeviceGroupsUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkEnumeratePhysicalDeviceGroupsSafe@.
+--
+vkEnumeratePhysicalDeviceGroups ::
+                                VkInstance -- ^ instance
+                                           ->
+                                  Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                                             -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                                                    -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkEnumeratePhysicalDeviceGroups
+  = vkEnumeratePhysicalDeviceGroupsUnsafe
+#else
+vkEnumeratePhysicalDeviceGroups
+  = vkEnumeratePhysicalDeviceGroupsSafe
+
+#endif
+{-# INLINE vkEnumeratePhysicalDeviceGroups #-}
+
+-- | Success codes: 'VK_SUCCESS', 'VK_INCOMPLETE'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED'.
+--
+--   > VkResult vkEnumeratePhysicalDeviceGroups
+--   >     ( VkInstance instance
+--   >     , uint32_t* pPhysicalDeviceGroupCount
+--   >     , VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups registry at www.khronos.org>
+type HS_vkEnumeratePhysicalDeviceGroups =
+     VkInstance -- ^ instance
+                ->
+       Ptr Word32 -- ^ pPhysicalDeviceGroupCount
+                  -> Ptr VkPhysicalDeviceGroupProperties -- ^ pPhysicalDeviceGroupProperties
+                                                         -> IO VkResult
+
+type PFN_vkEnumeratePhysicalDeviceGroups =
+     FunPtr HS_vkEnumeratePhysicalDeviceGroups
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkEnumeratePhysicalDeviceGroupsUnsafe ::
+               PFN_vkEnumeratePhysicalDeviceGroups ->
+                 HS_vkEnumeratePhysicalDeviceGroups
+
+foreign import ccall safe "dynamic"
+               unwrapVkEnumeratePhysicalDeviceGroupsSafe ::
+               PFN_vkEnumeratePhysicalDeviceGroups ->
+                 HS_vkEnumeratePhysicalDeviceGroups
+
+instance VulkanProc "vkEnumeratePhysicalDeviceGroups" where
+    type VkProcType "vkEnumeratePhysicalDeviceGroups" =
+         HS_vkEnumeratePhysicalDeviceGroups
+    vkProcSymbol = _VkEnumeratePhysicalDeviceGroups
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkEnumeratePhysicalDeviceGroupsUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES =
+        VkStructureType 1000070000
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO =
+        VkStructureType 1000070001
+
+-- | If set, heap allocations allocate multiple instances by default
+--
+--   bitpos = @1@
+pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT :: VkMemoryHeapBitmask a
+
+pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapBitmask 2
+
+pattern VkGetImageMemoryRequirements2 :: CString
+
+pattern VkGetImageMemoryRequirements2 <-
+        (is_VkGetImageMemoryRequirements2 -> True)
+  where
+    VkGetImageMemoryRequirements2 = _VkGetImageMemoryRequirements2
+
+{-# INLINE _VkGetImageMemoryRequirements2 #-}
+
+_VkGetImageMemoryRequirements2 :: CString
+_VkGetImageMemoryRequirements2
+  = Ptr "vkGetImageMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetImageMemoryRequirements2 #-}
+
+is_VkGetImageMemoryRequirements2 :: CString -> Bool
+is_VkGetImageMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetImageMemoryRequirements2
+
+type VkGetImageMemoryRequirements2 =
+     "vkGetImageMemoryRequirements2"
+
+-- |
+-- > void vkGetImageMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
+--
+-- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
+--           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2Unsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetImageMemoryRequirements2Unsafe ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                                         ->
+                                        Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                  -> IO ()
+vkGetImageMemoryRequirements2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageMemoryRequirements2)
+
+{-# NOINLINE vkGetImageMemoryRequirements2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetImageMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
+--
+-- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
+--           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetImageMemoryRequirements2"
+               vkGetImageMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                    ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetImageMemoryRequirements2Safe ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                                       ->
+                                      Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                -> IO ()
+vkGetImageMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageMemoryRequirements2)
+
+{-# NOINLINE vkGetImageMemoryRequirements2Safe #-}
+#endif
+
+-- |
+-- > void vkGetImageMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetDeviceProc @VkGetImageMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageMemoryRequirements2 <- vkGetProc @VkGetImageMemoryRequirements2
+--
+-- __Note:__ @vkGetImageMemoryRequirements2Unsafe@ and @vkGetImageMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageMemoryRequirements2@ is an alias
+--           of @vkGetImageMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageMemoryRequirements2Safe@.
+--
+vkGetImageMemoryRequirements2 ::
+                              VkDevice -- ^ device
+                                       ->
+                                Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                                                   ->
+                                  Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                            -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2Unsafe
+#else
+vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2Safe
+
+#endif
+{-# INLINE vkGetImageMemoryRequirements2 #-}
+
+-- | > void vkGetImageMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetImageMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageMemoryRequirementsInfo2 -- ^ pInfo
+                                          ->
+         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                   -> IO ()
+
+type PFN_vkGetImageMemoryRequirements2 =
+     FunPtr HS_vkGetImageMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageMemoryRequirements2Unsafe ::
+               PFN_vkGetImageMemoryRequirements2 ->
+                 HS_vkGetImageMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageMemoryRequirements2Safe ::
+               PFN_vkGetImageMemoryRequirements2 ->
+                 HS_vkGetImageMemoryRequirements2
+
+instance VulkanProc "vkGetImageMemoryRequirements2" where
+    type VkProcType "vkGetImageMemoryRequirements2" =
+         HS_vkGetImageMemoryRequirements2
+    vkProcSymbol = _VkGetImageMemoryRequirements2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetImageMemoryRequirements2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetBufferMemoryRequirements2 :: CString
+
+pattern VkGetBufferMemoryRequirements2 <-
+        (is_VkGetBufferMemoryRequirements2 -> True)
+  where
+    VkGetBufferMemoryRequirements2 = _VkGetBufferMemoryRequirements2
+
+{-# INLINE _VkGetBufferMemoryRequirements2 #-}
+
+_VkGetBufferMemoryRequirements2 :: CString
+_VkGetBufferMemoryRequirements2
+  = Ptr "vkGetBufferMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetBufferMemoryRequirements2 #-}
+
+is_VkGetBufferMemoryRequirements2 :: CString -> Bool
+is_VkGetBufferMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetBufferMemoryRequirements2
+
+type VkGetBufferMemoryRequirements2 =
+     "vkGetBufferMemoryRequirements2"
+
+-- |
+-- > void vkGetBufferMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkBufferMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
+--
+-- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
+--           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2Unsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetBufferMemoryRequirements2Unsafe ::
+                                     VkDevice -- ^ device
+                                              ->
+                                       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                                           ->
+                                         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                   -> IO ()
+vkGetBufferMemoryRequirements2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetBufferMemoryRequirements2)
+
+{-# NOINLINE vkGetBufferMemoryRequirements2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkBufferMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
+--
+-- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
+--           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetBufferMemoryRequirements2"
+               vkGetBufferMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                     ->
+                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                             -> IO ()
+
+#else
+vkGetBufferMemoryRequirements2Safe ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                                         ->
+                                       Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                                 -> IO ()
+vkGetBufferMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetBufferMemoryRequirements2)
+
+{-# NOINLINE vkGetBufferMemoryRequirements2Safe #-}
+#endif
+
+-- |
+-- > void vkGetBufferMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkBufferMemoryRequirementsInfo2* pInfo
+-- >     , VkMemoryRequirements2* pMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetDeviceProc @VkGetBufferMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetBufferMemoryRequirements2 <- vkGetProc @VkGetBufferMemoryRequirements2
+--
+-- __Note:__ @vkGetBufferMemoryRequirements2Unsafe@ and @vkGetBufferMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetBufferMemoryRequirements2@ is an alias
+--           of @vkGetBufferMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetBufferMemoryRequirements2Safe@.
+--
+vkGetBufferMemoryRequirements2 ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                                                     ->
+                                   Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetBufferMemoryRequirements2
+  = vkGetBufferMemoryRequirements2Unsafe
+#else
+vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2Safe
+
+#endif
+{-# INLINE vkGetBufferMemoryRequirements2 #-}
+
+-- | > void vkGetBufferMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkBufferMemoryRequirementsInfo2* pInfo
+--   >     , VkMemoryRequirements2* pMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetBufferMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkBufferMemoryRequirementsInfo2 -- ^ pInfo
+                                           ->
+         Ptr VkMemoryRequirements2 -- ^ pMemoryRequirements
+                                   -> IO ()
+
+type PFN_vkGetBufferMemoryRequirements2 =
+     FunPtr HS_vkGetBufferMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetBufferMemoryRequirements2Unsafe ::
+               PFN_vkGetBufferMemoryRequirements2 ->
+                 HS_vkGetBufferMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetBufferMemoryRequirements2Safe ::
+               PFN_vkGetBufferMemoryRequirements2 ->
+                 HS_vkGetBufferMemoryRequirements2
+
+instance VulkanProc "vkGetBufferMemoryRequirements2" where
+    type VkProcType "vkGetBufferMemoryRequirements2" =
+         HS_vkGetBufferMemoryRequirements2
+    vkProcSymbol = _VkGetBufferMemoryRequirements2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetBufferMemoryRequirements2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetImageSparseMemoryRequirements2 :: CString
+
+pattern VkGetImageSparseMemoryRequirements2 <-
+        (is_VkGetImageSparseMemoryRequirements2 -> True)
+  where
+    VkGetImageSparseMemoryRequirements2
+      = _VkGetImageSparseMemoryRequirements2
+
+{-# INLINE _VkGetImageSparseMemoryRequirements2 #-}
+
+_VkGetImageSparseMemoryRequirements2 :: CString
+_VkGetImageSparseMemoryRequirements2
+  = Ptr "vkGetImageSparseMemoryRequirements2\NUL"#
+
+{-# INLINE is_VkGetImageSparseMemoryRequirements2 #-}
+
+is_VkGetImageSparseMemoryRequirements2 :: CString -> Bool
+is_VkGetImageSparseMemoryRequirements2
+  = (EQ ==) . cmpCStrings _VkGetImageSparseMemoryRequirements2
+
+type VkGetImageSparseMemoryRequirements2 =
+     "vkGetImageSparseMemoryRequirements2"
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
+--           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2Unsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
+#else
+vkGetImageSparseMemoryRequirements2Unsafe ::
+                                          VkDevice -- ^ device
+                                                   ->
+                                            Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                                                     ->
+                                              Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                         ->
+                                                Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                                     -> IO ()
+vkGetImageSparseMemoryRequirements2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetImageSparseMemoryRequirements2)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirements2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
+--           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetImageSparseMemoryRequirements2"
+               vkGetImageSparseMemoryRequirements2Safe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                          ->
+                   Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                              -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                      -> IO ()
+
+#else
+vkGetImageSparseMemoryRequirements2Safe ::
+                                        VkDevice -- ^ device
+                                                 ->
+                                          Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                                                   ->
+                                            Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                       ->
+                                              Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                                   -> IO ()
+vkGetImageSparseMemoryRequirements2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetImageSparseMemoryRequirements2)
+
+{-# NOINLINE vkGetImageSparseMemoryRequirements2Safe #-}
+#endif
+
+-- |
+-- > void vkGetImageSparseMemoryRequirements2
+-- >     ( VkDevice device
+-- >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+-- >     , uint32_t* pSparseMemoryRequirementCount
+-- >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetDeviceProc @VkGetImageSparseMemoryRequirements2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetImageSparseMemoryRequirements2 <- vkGetProc @VkGetImageSparseMemoryRequirements2
+--
+-- __Note:__ @vkGetImageSparseMemoryRequirements2Unsafe@ and @vkGetImageSparseMemoryRequirements2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetImageSparseMemoryRequirements2@ is an alias
+--           of @vkGetImageSparseMemoryRequirements2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetImageSparseMemoryRequirements2Safe@.
+--
+vkGetImageSparseMemoryRequirements2 ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                                               ->
+                                        Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                                                   -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                                                           -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetImageSparseMemoryRequirements2
+  = vkGetImageSparseMemoryRequirements2Unsafe
+#else
+vkGetImageSparseMemoryRequirements2
+  = vkGetImageSparseMemoryRequirements2Safe
+
+#endif
+{-# INLINE vkGetImageSparseMemoryRequirements2 #-}
+
+-- | > void vkGetImageSparseMemoryRequirements2
+--   >     ( VkDevice device
+--   >     , const VkImageSparseMemoryRequirementsInfo2* pInfo
+--   >     , uint32_t* pSparseMemoryRequirementCount
+--   >     , VkSparseImageMemoryRequirements2* pSparseMemoryRequirements
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 registry at www.khronos.org>
+type HS_vkGetImageSparseMemoryRequirements2 =
+     VkDevice -- ^ device
+              ->
+       Ptr VkImageSparseMemoryRequirementsInfo2 -- ^ pInfo
+                                                ->
+         Ptr Word32 -- ^ pSparseMemoryRequirementCount
+                    -> Ptr VkSparseImageMemoryRequirements2 -- ^ pSparseMemoryRequirements
+                                                            -> IO ()
+
+type PFN_vkGetImageSparseMemoryRequirements2 =
+     FunPtr HS_vkGetImageSparseMemoryRequirements2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirements2Unsafe ::
+               PFN_vkGetImageSparseMemoryRequirements2 ->
+                 HS_vkGetImageSparseMemoryRequirements2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetImageSparseMemoryRequirements2Safe ::
+               PFN_vkGetImageSparseMemoryRequirements2 ->
+                 HS_vkGetImageSparseMemoryRequirements2
+
+instance VulkanProc "vkGetImageSparseMemoryRequirements2" where
+    type VkProcType "vkGetImageSparseMemoryRequirements2" =
+         HS_vkGetImageSparseMemoryRequirements2
+    vkProcSymbol = _VkGetImageSparseMemoryRequirements2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetImageSparseMemoryRequirements2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetImageSparseMemoryRequirements2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146000
+
+pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146001
+
+pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 =
+        VkStructureType 1000146002
+
+pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 =
+        VkStructureType 1000146003
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 =
+        VkStructureType 1000146004
+
+pattern VkGetPhysicalDeviceFeatures2 :: CString
+
+pattern VkGetPhysicalDeviceFeatures2 <-
+        (is_VkGetPhysicalDeviceFeatures2 -> True)
+  where
+    VkGetPhysicalDeviceFeatures2 = _VkGetPhysicalDeviceFeatures2
+
+{-# INLINE _VkGetPhysicalDeviceFeatures2 #-}
+
+_VkGetPhysicalDeviceFeatures2 :: CString
+_VkGetPhysicalDeviceFeatures2
+  = Ptr "vkGetPhysicalDeviceFeatures2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceFeatures2 #-}
+
+is_VkGetPhysicalDeviceFeatures2 :: CString -> Bool
+is_VkGetPhysicalDeviceFeatures2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFeatures2
+
+type VkGetPhysicalDeviceFeatures2 = "vkGetPhysicalDeviceFeatures2"
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures2* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
+--
+-- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
+--           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceFeatures2Unsafe ::
+                                   VkPhysicalDevice -- ^ physicalDevice
+                                                    -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                                     -> IO ()
+vkGetPhysicalDeviceFeatures2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceFeatures2)
+
+{-# NOINLINE vkGetPhysicalDeviceFeatures2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures2* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
+--
+-- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
+--           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceFeatures2"
+               vkGetPhysicalDeviceFeatures2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceFeatures2Safe ::
+                                 VkPhysicalDevice -- ^ physicalDevice
+                                                  -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                                   -> IO ()
+vkGetPhysicalDeviceFeatures2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFeatures2)
+
+{-# NOINLINE vkGetPhysicalDeviceFeatures2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFeatures2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceFeatures2* pFeatures
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetInstanceProc @VkGetPhysicalDeviceFeatures2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFeatures2 <- vkGetProc @VkGetPhysicalDeviceFeatures2
+--
+-- __Note:__ @vkGetPhysicalDeviceFeatures2Unsafe@ and @vkGetPhysicalDeviceFeatures2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFeatures2@ is an alias
+--           of @vkGetPhysicalDeviceFeatures2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFeatures2Safe@.
+--
+vkGetPhysicalDeviceFeatures2 ::
+                             VkPhysicalDevice -- ^ physicalDevice
+                                              -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                                               -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2Unsafe
+#else
+vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceFeatures2 #-}
+
+-- | > void vkGetPhysicalDeviceFeatures2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceFeatures2* pFeatures
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFeatures2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceFeatures2 -- ^ pFeatures
+                                                       -> IO ()
+
+type PFN_vkGetPhysicalDeviceFeatures2 =
+     FunPtr HS_vkGetPhysicalDeviceFeatures2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFeatures2Unsafe ::
+               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFeatures2Safe ::
+               PFN_vkGetPhysicalDeviceFeatures2 -> HS_vkGetPhysicalDeviceFeatures2
+
+instance VulkanProc "vkGetPhysicalDeviceFeatures2" where
+    type VkProcType "vkGetPhysicalDeviceFeatures2" =
+         HS_vkGetPhysicalDeviceFeatures2
+    vkProcSymbol = _VkGetPhysicalDeviceFeatures2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeatures2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceProperties2 :: CString
+
+pattern VkGetPhysicalDeviceProperties2 <-
+        (is_VkGetPhysicalDeviceProperties2 -> True)
+  where
+    VkGetPhysicalDeviceProperties2 = _VkGetPhysicalDeviceProperties2
+
+{-# INLINE _VkGetPhysicalDeviceProperties2 #-}
+
+_VkGetPhysicalDeviceProperties2 :: CString
+_VkGetPhysicalDeviceProperties2
+  = Ptr "vkGetPhysicalDeviceProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceProperties2 #-}
+
+is_VkGetPhysicalDeviceProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceProperties2
+
+type VkGetPhysicalDeviceProperties2 =
+     "vkGetPhysicalDeviceProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
+--           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+#else
+vkGetPhysicalDeviceProperties2Unsafe ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceProperties2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
+--           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceProperties2"
+               vkGetPhysicalDeviceProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                   -> IO ()
+
+#else
+vkGetPhysicalDeviceProperties2Safe ::
+                                   VkPhysicalDevice -- ^ physicalDevice
+                                                    -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                                       -> IO ()
+vkGetPhysicalDeviceProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceProperties2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceProperties2 <- vkGetProc @VkGetPhysicalDeviceProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceProperties2Unsafe@ and @vkGetPhysicalDeviceProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceProperties2@ is an alias
+--           of @vkGetPhysicalDeviceProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceProperties2Safe@.
+--
+vkGetPhysicalDeviceProperties2 ::
+                               VkPhysicalDevice -- ^ physicalDevice
+                                                -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                                                   -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceProperties2
+  = vkGetPhysicalDeviceProperties2Unsafe
+#else
+vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceProperties2 -- ^ pProperties
+                                                         -> IO ()
+
+type PFN_vkGetPhysicalDeviceProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceProperties2 ->
+                 HS_vkGetPhysicalDeviceProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceProperties2Safe ::
+               PFN_vkGetPhysicalDeviceProperties2 ->
+                 HS_vkGetPhysicalDeviceProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceProperties2" where
+    type VkProcType "vkGetPhysicalDeviceProperties2" =
+         HS_vkGetPhysicalDeviceProperties2
+    vkProcSymbol = _VkGetPhysicalDeviceProperties2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceProperties2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceFormatProperties2 <-
+        (is_VkGetPhysicalDeviceFormatProperties2 -> True)
+  where
+    VkGetPhysicalDeviceFormatProperties2
+      = _VkGetPhysicalDeviceFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceFormatProperties2 #-}
+
+_VkGetPhysicalDeviceFormatProperties2 :: CString
+_VkGetPhysicalDeviceFormatProperties2
+  = Ptr "vkGetPhysicalDeviceFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceFormatProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceFormatProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceFormatProperties2
+
+type VkGetPhysicalDeviceFormatProperties2 =
+     "vkGetPhysicalDeviceFormatProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties2* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+#else
+vkGetPhysicalDeviceFormatProperties2Unsafe ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             VkFormat -- ^ format
+                                                      -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceFormatProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatProperties2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties2* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceFormatProperties2"
+               vkGetPhysicalDeviceFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> VkFormat -- ^ format
+                                            -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                       -> IO ()
+
+#else
+vkGetPhysicalDeviceFormatProperties2Safe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           VkFormat -- ^ format
+                                                    -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                               -> IO ()
+vkGetPhysicalDeviceFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceFormatProperties2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkFormat format
+-- >     , VkFormatProperties2* pFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceFormatProperties2Unsafe@ and @vkGetPhysicalDeviceFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceFormatProperties2Safe@.
+--
+vkGetPhysicalDeviceFormatProperties2 ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       VkFormat -- ^ format
+                                                -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                                           -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceFormatProperties2
+  = vkGetPhysicalDeviceFormatProperties2Unsafe
+#else
+vkGetPhysicalDeviceFormatProperties2
+  = vkGetPhysicalDeviceFormatProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceFormatProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkFormat format
+--   >     , VkFormatProperties2* pFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> VkFormat -- ^ format
+                                  -> Ptr VkFormatProperties2 -- ^ pFormatProperties
+                                                             -> IO ()
+
+type PFN_vkGetPhysicalDeviceFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceFormatProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceFormatProperties2" where
+    type VkProcType "vkGetPhysicalDeviceFormatProperties2" =
+         HS_vkGetPhysicalDeviceFormatProperties2
+    vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceFormatProperties2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceFormatProperties2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceImageFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceImageFormatProperties2 <-
+        (is_VkGetPhysicalDeviceImageFormatProperties2 -> True)
+  where
+    VkGetPhysicalDeviceImageFormatProperties2
+      = _VkGetPhysicalDeviceImageFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceImageFormatProperties2 #-}
+
+_VkGetPhysicalDeviceImageFormatProperties2 :: CString
+_VkGetPhysicalDeviceImageFormatProperties2
+  = Ptr "vkGetPhysicalDeviceImageFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceImageFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceImageFormatProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceImageFormatProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceImageFormatProperties2
+
+type VkGetPhysicalDeviceImageFormatProperties2 =
+     "vkGetPhysicalDeviceImageFormatProperties2"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+-- >     , VkImageFormatProperties2* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+#else
+vkGetPhysicalDeviceImageFormatProperties2Unsafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                                                       ->
+                                                    Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                                                 -> IO VkResult
+vkGetPhysicalDeviceImageFormatProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2Unsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+-- >     , VkImageFormatProperties2* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceImageFormatProperties2"
+               vkGetPhysicalDeviceImageFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                      ->
+                   Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                -> IO VkResult
+
+#else
+vkGetPhysicalDeviceImageFormatProperties2Safe ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                                                     ->
+                                                  Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                                               -> IO VkResult
+vkGetPhysicalDeviceImageFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceImageFormatProperties2Safe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+-- > VkResult vkGetPhysicalDeviceImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+-- >     , VkImageFormatProperties2* pImageFormatProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceImageFormatProperties2Safe@.
+--
+vkGetPhysicalDeviceImageFormatProperties2 ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                                                                 ->
+                                              Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                                                           -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceImageFormatProperties2
+  = vkGetPhysicalDeviceImageFormatProperties2Unsafe
+#else
+vkGetPhysicalDeviceImageFormatProperties2
+  = vkGetPhysicalDeviceImageFormatProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceImageFormatProperties2 #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_FORMAT_NOT_SUPPORTED'.
+--
+--   > VkResult vkGetPhysicalDeviceImageFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo
+--   >     , VkImageFormatProperties2* pImageFormatProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceImageFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceImageFormatInfo2 -- ^ pImageFormatInfo
+                                            ->
+         Ptr VkImageFormatProperties2 -- ^ pImageFormatProperties
+                                      -> IO VkResult
+
+type PFN_vkGetPhysicalDeviceImageFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceImageFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceImageFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceImageFormatProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties2"
+         where
+    type VkProcType "vkGetPhysicalDeviceImageFormatProperties2" =
+         HS_vkGetPhysicalDeviceImageFormatProperties2
+    vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceImageFormatProperties2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceImageFormatProperties2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
+
+pattern VkGetPhysicalDeviceQueueFamilyProperties2 <-
+        (is_VkGetPhysicalDeviceQueueFamilyProperties2 -> True)
+  where
+    VkGetPhysicalDeviceQueueFamilyProperties2
+      = _VkGetPhysicalDeviceQueueFamilyProperties2
+
+{-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties2 #-}
+
+_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString
+_VkGetPhysicalDeviceQueueFamilyProperties2
+  = Ptr "vkGetPhysicalDeviceQueueFamilyProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceQueueFamilyProperties2 #-}
+
+is_VkGetPhysicalDeviceQueueFamilyProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceQueueFamilyProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceQueueFamilyProperties2
+
+type VkGetPhysicalDeviceQueueFamilyProperties2 =
+     "vkGetPhysicalDeviceQueueFamilyProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
+
+#else
+vkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                             ->
+                                                    Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceQueueFamilyProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceQueueFamilyProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceQueueFamilyProperties2"
+               vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                            -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                            -> IO ()
+
+#else
+vkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+                                              VkPhysicalDevice -- ^ physicalDevice
+                                                               ->
+                                                Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                           -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                                                           -> IO ()
+vkGetPhysicalDeviceQueueFamilyProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceQueueFamilyProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceQueueFamilyProperties2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceQueueFamilyProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , uint32_t* pQueueFamilyPropertyCount
+-- >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceQueueFamilyProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceQueueFamilyProperties2 <- vkGetProc @VkGetPhysicalDeviceQueueFamilyProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ and @vkGetPhysicalDeviceQueueFamilyProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceQueueFamilyProperties2@ is an alias
+--           of @vkGetPhysicalDeviceQueueFamilyProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceQueueFamilyProperties2Safe@.
+--
+vkGetPhysicalDeviceQueueFamilyProperties2 ::
+                                          VkPhysicalDevice -- ^ physicalDevice
+                                                           ->
+                                            Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                                                       -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                                                       -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceQueueFamilyProperties2
+  = vkGetPhysicalDeviceQueueFamilyProperties2Unsafe
+#else
+vkGetPhysicalDeviceQueueFamilyProperties2
+  = vkGetPhysicalDeviceQueueFamilyProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceQueueFamilyProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceQueueFamilyProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , uint32_t* pQueueFamilyPropertyCount
+--   >     , VkQueueFamilyProperties2* pQueueFamilyProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceQueueFamilyProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr Word32 -- ^ pQueueFamilyPropertyCount
+                  -> Ptr VkQueueFamilyProperties2 -- ^ pQueueFamilyProperties
+                                                  -> IO ()
+
+type PFN_vkGetPhysicalDeviceQueueFamilyProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe ::
+               PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ->
+                 HS_vkGetPhysicalDeviceQueueFamilyProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties2"
+         where
+    type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2" =
+         HS_vkGetPhysicalDeviceQueueFamilyProperties2
+    vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceQueueFamilyProperties2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceQueueFamilyProperties2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceMemoryProperties2 :: CString
+
+pattern VkGetPhysicalDeviceMemoryProperties2 <-
+        (is_VkGetPhysicalDeviceMemoryProperties2 -> True)
+  where
+    VkGetPhysicalDeviceMemoryProperties2
+      = _VkGetPhysicalDeviceMemoryProperties2
+
+{-# INLINE _VkGetPhysicalDeviceMemoryProperties2 #-}
+
+_VkGetPhysicalDeviceMemoryProperties2 :: CString
+_VkGetPhysicalDeviceMemoryProperties2
+  = Ptr "vkGetPhysicalDeviceMemoryProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceMemoryProperties2 #-}
+
+is_VkGetPhysicalDeviceMemoryProperties2 :: CString -> Bool
+is_VkGetPhysicalDeviceMemoryProperties2
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceMemoryProperties2
+
+type VkGetPhysicalDeviceMemoryProperties2 =
+     "vkGetPhysicalDeviceMemoryProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
+--           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+#else
+vkGetPhysicalDeviceMemoryProperties2Unsafe ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                                   -> IO ()
+vkGetPhysicalDeviceMemoryProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceMemoryProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
+--           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetPhysicalDeviceMemoryProperties2"
+               vkGetPhysicalDeviceMemoryProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                         -> IO ()
+
+#else
+vkGetPhysicalDeviceMemoryProperties2Safe ::
+                                         VkPhysicalDevice -- ^ physicalDevice
+                                                          ->
+                                           Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceMemoryProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceMemoryProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceMemoryProperties2Safe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceMemoryProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceMemoryProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceMemoryProperties2 <- vkGetProc @VkGetPhysicalDeviceMemoryProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceMemoryProperties2Unsafe@ and @vkGetPhysicalDeviceMemoryProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceMemoryProperties2@ is an alias
+--           of @vkGetPhysicalDeviceMemoryProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceMemoryProperties2Safe@.
+--
+vkGetPhysicalDeviceMemoryProperties2 ::
+                                     VkPhysicalDevice -- ^ physicalDevice
+                                                      ->
+                                       Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceMemoryProperties2
+  = vkGetPhysicalDeviceMemoryProperties2Unsafe
+#else
+vkGetPhysicalDeviceMemoryProperties2
+  = vkGetPhysicalDeviceMemoryProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceMemoryProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceMemoryProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , VkPhysicalDeviceMemoryProperties2* pMemoryProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceMemoryProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      -> Ptr VkPhysicalDeviceMemoryProperties2 -- ^ pMemoryProperties
+                                                               -> IO ()
+
+type PFN_vkGetPhysicalDeviceMemoryProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceMemoryProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
+                 HS_vkGetPhysicalDeviceMemoryProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceMemoryProperties2Safe ::
+               PFN_vkGetPhysicalDeviceMemoryProperties2 ->
+                 HS_vkGetPhysicalDeviceMemoryProperties2
+
+instance VulkanProc "vkGetPhysicalDeviceMemoryProperties2" where
+    type VkProcType "vkGetPhysicalDeviceMemoryProperties2" =
+         HS_vkGetPhysicalDeviceMemoryProperties2
+    vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceMemoryProperties2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceMemoryProperties2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
+
+pattern VkGetPhysicalDeviceSparseImageFormatProperties2 <-
+        (is_VkGetPhysicalDeviceSparseImageFormatProperties2 -> True)
+  where
+    VkGetPhysicalDeviceSparseImageFormatProperties2
+      = _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+{-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+
+_VkGetPhysicalDeviceSparseImageFormatProperties2 :: CString
+_VkGetPhysicalDeviceSparseImageFormatProperties2
+  = Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+
+is_VkGetPhysicalDeviceSparseImageFormatProperties2 ::
+                                                   CString -> Bool
+is_VkGetPhysicalDeviceSparseImageFormatProperties2
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+type VkGetPhysicalDeviceSparseImageFormatProperties2 =
+     "vkGetPhysicalDeviceSparseImageFormatProperties2"
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
+#else
+vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
+                                                      VkPhysicalDevice -- ^ physicalDevice
+                                                                       ->
+                                                        Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                          ->
+                                                          Ptr Word32 -- ^ pPropertyCount
+                                                                     ->
+                                                            Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                                               ->
+                                                              IO ()
+vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceSparseImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
+             #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceSparseImageFormatProperties2"
+               vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                            ->
+                   Ptr Word32 -- ^ pPropertyCount
+                              -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                    -> IO ()
+
+#else
+vkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+                                                    VkPhysicalDevice -- ^ physicalDevice
+                                                                     ->
+                                                      Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                                                                 ->
+                                                        Ptr Word32 -- ^ pPropertyCount
+                                                                   ->
+                                                          Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                                             ->
+                                                            IO ()
+vkGetPhysicalDeviceSparseImageFormatProperties2Safe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceSparseImageFormatProperties2)
+
+{-# NOINLINE vkGetPhysicalDeviceSparseImageFormatProperties2Safe
+             #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceSparseImageFormatProperties2
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+-- >     , uint32_t* pPropertyCount
+-- >     , VkSparseImageFormatProperties2* pProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetInstanceProc @VkGetPhysicalDeviceSparseImageFormatProperties2 vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceSparseImageFormatProperties2 <- vkGetProc @VkGetPhysicalDeviceSparseImageFormatProperties2
+--
+-- __Note:__ @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ and @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceSparseImageFormatProperties2@ is an alias
+--           of @vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceSparseImageFormatProperties2Safe@.
+--
+vkGetPhysicalDeviceSparseImageFormatProperties2 ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                                                             ->
+                                                    Ptr Word32 -- ^ pPropertyCount
+                                                               ->
+                                                      Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                                                         -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceSparseImageFormatProperties2
+  = vkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
+#else
+vkGetPhysicalDeviceSparseImageFormatProperties2
+  = vkGetPhysicalDeviceSparseImageFormatProperties2Safe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceSparseImageFormatProperties2 #-}
+
+-- | > void vkGetPhysicalDeviceSparseImageFormatProperties2
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo
+--   >     , uint32_t* pPropertyCount
+--   >     , VkSparseImageFormatProperties2* pProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceSparseImageFormatProperties2 =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceSparseImageFormatInfo2 -- ^ pFormatInfo
+                                                  ->
+         Ptr Word32 -- ^ pPropertyCount
+                    -> Ptr VkSparseImageFormatProperties2 -- ^ pProperties
+                                                          -> IO ()
+
+type PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 =
+     FunPtr HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Unsafe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe ::
+               PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ->
+                 HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+
+instance VulkanProc
+           "vkGetPhysicalDeviceSparseImageFormatProperties2"
+         where
+    type VkProcType "vkGetPhysicalDeviceSparseImageFormatProperties2" =
+         HS_vkGetPhysicalDeviceSparseImageFormatProperties2
+    vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 =
+        VkStructureType 1000059000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 =
+        VkStructureType 1000059001
+
+pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059002
+
+pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 =
+        VkStructureType 1000059004
+
+pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 =
+        VkStructureType 1000059005
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 =
+        VkStructureType 1000059006
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 =
+        VkStructureType 1000059007
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
+        = VkStructureType 1000059008
+
+pattern VkTrimCommandPool :: CString
+
+pattern VkTrimCommandPool <- (is_VkTrimCommandPool -> True)
+  where
+    VkTrimCommandPool = _VkTrimCommandPool
+
+{-# INLINE _VkTrimCommandPool #-}
+
+_VkTrimCommandPool :: CString
+_VkTrimCommandPool = Ptr "vkTrimCommandPool\NUL"#
+
+{-# INLINE is_VkTrimCommandPool #-}
+
+is_VkTrimCommandPool :: CString -> Bool
+is_VkTrimCommandPool = (EQ ==) . cmpCStrings _VkTrimCommandPool
+
+type VkTrimCommandPool = "vkTrimCommandPool"
+
+-- |
+-- > void vkTrimCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolTrimFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
+--
+-- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
+--           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkTrimCommandPool"
+               vkTrimCommandPoolUnsafe ::
+               VkDevice -- ^ device
+                        -> VkCommandPool -- ^ commandPool
+                                         -> VkCommandPoolTrimFlags -- ^ flags
+                                                                   -> IO ()
+
+#else
+vkTrimCommandPoolUnsafe ::
+                        VkDevice -- ^ device
+                                 -> VkCommandPool -- ^ commandPool
+                                                  -> VkCommandPoolTrimFlags -- ^ flags
+                                                                            -> IO ()
+vkTrimCommandPoolUnsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkTrimCommandPool)
+
+{-# NOINLINE vkTrimCommandPoolUnsafe #-}
+#endif
+
+-- |
+-- > void vkTrimCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolTrimFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
+--
+-- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
+--           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkTrimCommandPool" vkTrimCommandPoolSafe
+               :: VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+
+#else
+vkTrimCommandPoolSafe ::
+                      VkDevice -- ^ device
+                               -> VkCommandPool -- ^ commandPool
+                                                -> VkCommandPoolTrimFlags -- ^ flags
+                                                                          -> IO ()
+vkTrimCommandPoolSafe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkTrimCommandPool)
+
+{-# NOINLINE vkTrimCommandPoolSafe #-}
+#endif
+
+-- |
+-- > void vkTrimCommandPool
+-- >     ( VkDevice device
+-- >     , VkCommandPool commandPool
+-- >     , VkCommandPoolTrimFlags flags
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myTrimCommandPool <- vkGetDeviceProc @VkTrimCommandPool vkDevice
+--
+-- or less efficient:
+--
+-- > myTrimCommandPool <- vkGetProc @VkTrimCommandPool
+--
+-- __Note:__ @vkTrimCommandPoolUnsafe@ and @vkTrimCommandPoolSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkTrimCommandPool@ is an alias
+--           of @vkTrimCommandPoolUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkTrimCommandPoolSafe@.
+--
+vkTrimCommandPool ::
+                  VkDevice -- ^ device
+                           -> VkCommandPool -- ^ commandPool
+                                            -> VkCommandPoolTrimFlags -- ^ flags
+                                                                      -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkTrimCommandPool = vkTrimCommandPoolUnsafe
+#else
+vkTrimCommandPool = vkTrimCommandPoolSafe
+
+#endif
+{-# INLINE vkTrimCommandPool #-}
+
+-- | > void vkTrimCommandPool
+--   >     ( VkDevice device
+--   >     , VkCommandPool commandPool
+--   >     , VkCommandPoolTrimFlags flags
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkTrimCommandPool vkTrimCommandPool registry at www.khronos.org>
+type HS_vkTrimCommandPool =
+     VkDevice -- ^ device
+              -> VkCommandPool -- ^ commandPool
+                               -> VkCommandPoolTrimFlags -- ^ flags
+                                                         -> IO ()
+
+type PFN_vkTrimCommandPool = FunPtr HS_vkTrimCommandPool
+
+foreign import ccall unsafe "dynamic" unwrapVkTrimCommandPoolUnsafe
+               :: PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
+
+foreign import ccall safe "dynamic" unwrapVkTrimCommandPoolSafe ::
+               PFN_vkTrimCommandPool -> HS_vkTrimCommandPool
+
+instance VulkanProc "vkTrimCommandPool" where
+    type VkProcType "vkTrimCommandPool" = HS_vkTrimCommandPool
+    vkProcSymbol = _VkTrimCommandPool
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkTrimCommandPoolUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_ERROR_OUT_OF_POOL_MEMORY :: VkResult
+
+pattern VK_ERROR_OUT_OF_POOL_MEMORY = VkResult (-1000069000)
+
+-- | Format can be used as the source image of image transfer commands
+--
+--   bitpos = @14@
+pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT ::
+        VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT =
+        VkFormatFeatureBitmask 16384
+
+-- | Format can be used as the destination image of image transfer commands
+--
+--   bitpos = @15@
+pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT ::
+        VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT =
+        VkFormatFeatureBitmask 32768
+
+-- | The 3D image can be viewed as a 2D or 2D array image
+--
+--   bitpos = @5@
+pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT ::
+        VkImageCreateBitmask a
+
+pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT =
+        VkImageCreateBitmask 32
+
+-- | bitpos = @7@
+pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT ::
+        VkImageCreateBitmask a
+
+pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT =
+        VkImageCreateBitmask 128
+
+-- | bitpos = @8@
+pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT ::
+        VkImageCreateBitmask a
+
+pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT =
+        VkImageCreateBitmask 256
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
+        = VkStructureType 1000117000
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
+        = VkStructureType 1000117001
+
+pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO =
+        VkStructureType 1000117002
+
+pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
+        = VkStructureType 1000117003
+
+pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
+        :: VkImageLayout
+
+pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
+        = VkImageLayout 1000117000
+
+pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
+        :: VkImageLayout
+
+pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
+        = VkImageLayout 1000117001
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO =
+        VkStructureType 1000053000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES =
+        VkStructureType 1000053001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES =
+        VkStructureType 1000053002
+
+-- | bitpos = @1@
+pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyBitmask a
+
+pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyBitmask 2
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES
+        = VkStructureType 1000120000
+
+pattern VkGetDeviceQueue2 :: CString
+
+pattern VkGetDeviceQueue2 <- (is_VkGetDeviceQueue2 -> True)
+  where
+    VkGetDeviceQueue2 = _VkGetDeviceQueue2
+
+{-# INLINE _VkGetDeviceQueue2 #-}
+
+_VkGetDeviceQueue2 :: CString
+_VkGetDeviceQueue2 = Ptr "vkGetDeviceQueue2\NUL"#
+
+{-# INLINE is_VkGetDeviceQueue2 #-}
+
+is_VkGetDeviceQueue2 :: CString -> Bool
+is_VkGetDeviceQueue2 = (EQ ==) . cmpCStrings _VkGetDeviceQueue2
+
+type VkGetDeviceQueue2 = "vkGetDeviceQueue2"
+
+-- |
+-- > void vkGetDeviceQueue2
+-- >     ( VkDevice device
+-- >     , const VkDeviceQueueInfo2* pQueueInfo
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
+--
+-- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
+--           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDeviceQueue2"
+               vkGetDeviceQueue2Unsafe ::
+               VkDevice -- ^ device
+                        -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                  -> Ptr VkQueue -- ^ pQueue
+                                                                 -> IO ()
+
+#else
+vkGetDeviceQueue2Unsafe ::
+                        VkDevice -- ^ device
+                                 -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                           -> Ptr VkQueue -- ^ pQueue
+                                                                          -> IO ()
+vkGetDeviceQueue2Unsafe
+  = unsafeDupablePerformIO (vkGetProcUnsafe @VkGetDeviceQueue2)
+
+{-# NOINLINE vkGetDeviceQueue2Unsafe #-}
+#endif
+
+-- |
+-- > void vkGetDeviceQueue2
+-- >     ( VkDevice device
+-- >     , const VkDeviceQueueInfo2* pQueueInfo
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
+--
+-- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
+--           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDeviceQueue2" vkGetDeviceQueue2Safe
+               :: VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+
+#else
+vkGetDeviceQueue2Safe ::
+                      VkDevice -- ^ device
+                               -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                         -> Ptr VkQueue -- ^ pQueue
+                                                                        -> IO ()
+vkGetDeviceQueue2Safe
+  = unsafeDupablePerformIO (vkGetProcSafe @VkGetDeviceQueue2)
+
+{-# NOINLINE vkGetDeviceQueue2Safe #-}
+#endif
+
+-- |
+-- > void vkGetDeviceQueue2
+-- >     ( VkDevice device
+-- >     , const VkDeviceQueueInfo2* pQueueInfo
+-- >     , VkQueue* pQueue
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDeviceQueue2 <- vkGetDeviceProc @VkGetDeviceQueue2 vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDeviceQueue2 <- vkGetProc @VkGetDeviceQueue2
+--
+-- __Note:__ @vkGetDeviceQueue2Unsafe@ and @vkGetDeviceQueue2Safe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDeviceQueue2@ is an alias
+--           of @vkGetDeviceQueue2Unsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDeviceQueue2Safe@.
+--
+vkGetDeviceQueue2 ::
+                  VkDevice -- ^ device
+                           -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                                     -> Ptr VkQueue -- ^ pQueue
+                                                                    -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDeviceQueue2 = vkGetDeviceQueue2Unsafe
+#else
+vkGetDeviceQueue2 = vkGetDeviceQueue2Safe
+
+#endif
+{-# INLINE vkGetDeviceQueue2 #-}
+
+-- | > void vkGetDeviceQueue2
+--   >     ( VkDevice device
+--   >     , const VkDeviceQueueInfo2* pQueueInfo
+--   >     , VkQueue* pQueue
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDeviceQueue2 vkGetDeviceQueue2 registry at www.khronos.org>
+type HS_vkGetDeviceQueue2 =
+     VkDevice -- ^ device
+              -> Ptr VkDeviceQueueInfo2 -- ^ pQueueInfo
+                                        -> Ptr VkQueue -- ^ pQueue
+                                                       -> IO ()
+
+type PFN_vkGetDeviceQueue2 = FunPtr HS_vkGetDeviceQueue2
+
+foreign import ccall unsafe "dynamic" unwrapVkGetDeviceQueue2Unsafe
+               :: PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
+
+foreign import ccall safe "dynamic" unwrapVkGetDeviceQueue2Safe ::
+               PFN_vkGetDeviceQueue2 -> HS_vkGetDeviceQueue2
+
+instance VulkanProc "vkGetDeviceQueue2" where
+    type VkProcType "vkGetDeviceQueue2" = HS_vkGetDeviceQueue2
+    vkProcSymbol = _VkGetDeviceQueue2
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetDeviceQueue2Unsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDeviceQueue2Safe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO =
+        VkStructureType 1000145000
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
+        = VkStructureType 1000145001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
+        = VkStructureType 1000145002
+
+pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 =
+        VkStructureType 1000145003
+
+-- | Queues may support protected operations
+--
+--   bitpos = @4@
+pattern VK_QUEUE_PROTECTED_BIT :: VkQueueBitmask a
+
+pattern VK_QUEUE_PROTECTED_BIT = VkQueueBitmask 16
+
+-- | Queue is a protected-capable device queue
+--
+--   bitpos = @0@
+pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT ::
+        VkDeviceQueueCreateBitmask a
+
+pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT =
+        VkDeviceQueueCreateBitmask 1
+
+-- | Memory is protected
+--
+--   bitpos = @5@
+pattern VK_MEMORY_PROPERTY_PROTECTED_BIT ::
+        VkMemoryPropertyBitmask a
+
+pattern VK_MEMORY_PROPERTY_PROTECTED_BIT =
+        VkMemoryPropertyBitmask 32
+
+-- | Buffer requires protected memory
+--
+--   bitpos = @3@
+pattern VK_BUFFER_CREATE_PROTECTED_BIT :: VkBufferCreateBitmask a
+
+pattern VK_BUFFER_CREATE_PROTECTED_BIT = VkBufferCreateBitmask 8
+
+-- | Image requires protected memory
+--
+--   bitpos = @11@
+pattern VK_IMAGE_CREATE_PROTECTED_BIT :: VkImageCreateBitmask a
+
+pattern VK_IMAGE_CREATE_PROTECTED_BIT = VkImageCreateBitmask 2048
+
+-- | Command buffers allocated from pool are protected command buffers
+--
+--   bitpos = @2@
+pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT ::
+        VkCommandPoolCreateBitmask a
+
+pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT =
+        VkCommandPoolCreateBitmask 4
+
+pattern VkCreateSamplerYcbcrConversion :: CString
+
+pattern VkCreateSamplerYcbcrConversion <-
+        (is_VkCreateSamplerYcbcrConversion -> True)
+  where
+    VkCreateSamplerYcbcrConversion = _VkCreateSamplerYcbcrConversion
+
+{-# INLINE _VkCreateSamplerYcbcrConversion #-}
+
+_VkCreateSamplerYcbcrConversion :: CString
+_VkCreateSamplerYcbcrConversion
+  = Ptr "vkCreateSamplerYcbcrConversion\NUL"#
+
+{-# INLINE is_VkCreateSamplerYcbcrConversion #-}
+
+is_VkCreateSamplerYcbcrConversion :: CString -> Bool
+is_VkCreateSamplerYcbcrConversion
+  = (EQ ==) . cmpCStrings _VkCreateSamplerYcbcrConversion
+
+type VkCreateSamplerYcbcrConversion =
+     "vkCreateSamplerYcbcrConversion"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSamplerYcbcrConversion* pYcbcrConversion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
+--
+-- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
+--           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversionUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+#else
+vkCreateSamplerYcbcrConversionUnsafe ::
+                                     VkDevice -- ^ device
+                                              ->
+                                       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                                              ->
+                                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   ->
+                                           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                                        -> IO VkResult
+vkCreateSamplerYcbcrConversionUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateSamplerYcbcrConversion)
+
+{-# NOINLINE vkCreateSamplerYcbcrConversionUnsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSamplerYcbcrConversion* pYcbcrConversion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
+--
+-- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
+--           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCreateSamplerYcbcrConversion"
+               vkCreateSamplerYcbcrConversionSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                        ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                  -> IO VkResult
+
+#else
+vkCreateSamplerYcbcrConversionSafe ::
+                                   VkDevice -- ^ device
+                                            ->
+                                     Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                                            ->
+                                       Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                 ->
+                                         Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                                      -> IO VkResult
+vkCreateSamplerYcbcrConversionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateSamplerYcbcrConversion)
+
+{-# NOINLINE vkCreateSamplerYcbcrConversionSafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateSamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkSamplerYcbcrConversion* pYcbcrConversion
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetDeviceProc @VkCreateSamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateSamplerYcbcrConversion <- vkGetProc @VkCreateSamplerYcbcrConversion
+--
+-- __Note:__ @vkCreateSamplerYcbcrConversionUnsafe@ and @vkCreateSamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateSamplerYcbcrConversion@ is an alias
+--           of @vkCreateSamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateSamplerYcbcrConversionSafe@.
+--
+vkCreateSamplerYcbcrConversion ::
+                               VkDevice -- ^ device
+                                        ->
+                                 Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                                                        ->
+                                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             ->
+                                     Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                                                  -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateSamplerYcbcrConversion
+  = vkCreateSamplerYcbcrConversionUnsafe
+#else
+vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionSafe
+
+#endif
+{-# INLINE vkCreateSamplerYcbcrConversion #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateSamplerYcbcrConversion
+--   >     ( VkDevice device
+--   >     , const VkSamplerYcbcrConversionCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkSamplerYcbcrConversion* pYcbcrConversion
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion registry at www.khronos.org>
+type HS_vkCreateSamplerYcbcrConversion =
+     VkDevice -- ^ device
+              ->
+       Ptr VkSamplerYcbcrConversionCreateInfo -- ^ pCreateInfo
+                                              ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkSamplerYcbcrConversion -- ^ pYcbcrConversion
+                                        -> IO VkResult
+
+type PFN_vkCreateSamplerYcbcrConversion =
+     FunPtr HS_vkCreateSamplerYcbcrConversion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateSamplerYcbcrConversionUnsafe ::
+               PFN_vkCreateSamplerYcbcrConversion ->
+                 HS_vkCreateSamplerYcbcrConversion
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateSamplerYcbcrConversionSafe ::
+               PFN_vkCreateSamplerYcbcrConversion ->
+                 HS_vkCreateSamplerYcbcrConversion
+
+instance VulkanProc "vkCreateSamplerYcbcrConversion" where
+    type VkProcType "vkCreateSamplerYcbcrConversion" =
+         HS_vkCreateSamplerYcbcrConversion
+    vkProcSymbol = _VkCreateSamplerYcbcrConversion
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateSamplerYcbcrConversionUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroySamplerYcbcrConversion :: CString
+
+pattern VkDestroySamplerYcbcrConversion <-
+        (is_VkDestroySamplerYcbcrConversion -> True)
+  where
+    VkDestroySamplerYcbcrConversion = _VkDestroySamplerYcbcrConversion
+
+{-# INLINE _VkDestroySamplerYcbcrConversion #-}
+
+_VkDestroySamplerYcbcrConversion :: CString
+_VkDestroySamplerYcbcrConversion
+  = Ptr "vkDestroySamplerYcbcrConversion\NUL"#
+
+{-# INLINE is_VkDestroySamplerYcbcrConversion #-}
+
+is_VkDestroySamplerYcbcrConversion :: CString -> Bool
+is_VkDestroySamplerYcbcrConversion
+  = (EQ ==) . cmpCStrings _VkDestroySamplerYcbcrConversion
+
+type VkDestroySamplerYcbcrConversion =
+     "vkDestroySamplerYcbcrConversion"
+
+-- |
+-- > void vkDestroySamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , VkSamplerYcbcrConversion ycbcrConversion
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
+--
+-- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
+--           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversionUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
+vkDestroySamplerYcbcrConversionUnsafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                                                 ->
+                                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroySamplerYcbcrConversionUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkDestroySamplerYcbcrConversion)
+
+{-# NOINLINE vkDestroySamplerYcbcrConversionUnsafe #-}
+#endif
+
+-- |
+-- > void vkDestroySamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , VkSamplerYcbcrConversion ycbcrConversion
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
+--
+-- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
+--           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkDestroySamplerYcbcrConversion"
+               vkDestroySamplerYcbcrConversionSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                          -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                       -> IO ()
+
+#else
+vkDestroySamplerYcbcrConversionSafe ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                            -> IO ()
+vkDestroySamplerYcbcrConversionSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroySamplerYcbcrConversion)
+
+{-# NOINLINE vkDestroySamplerYcbcrConversionSafe #-}
+#endif
+
+-- |
+-- > void vkDestroySamplerYcbcrConversion
+-- >     ( VkDevice device
+-- >     , VkSamplerYcbcrConversion ycbcrConversion
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetDeviceProc @VkDestroySamplerYcbcrConversion vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroySamplerYcbcrConversion <- vkGetProc @VkDestroySamplerYcbcrConversion
+--
+-- __Note:__ @vkDestroySamplerYcbcrConversionUnsafe@ and @vkDestroySamplerYcbcrConversionSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroySamplerYcbcrConversion@ is an alias
+--           of @vkDestroySamplerYcbcrConversionUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroySamplerYcbcrConversionSafe@.
+--
+vkDestroySamplerYcbcrConversion ::
+                                VkDevice -- ^ device
+                                         ->
+                                  VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                                           -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                        -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkDestroySamplerYcbcrConversion
+  = vkDestroySamplerYcbcrConversionUnsafe
+#else
+vkDestroySamplerYcbcrConversion
+  = vkDestroySamplerYcbcrConversionSafe
+
+#endif
+{-# INLINE vkDestroySamplerYcbcrConversion #-}
+
+-- | > void vkDestroySamplerYcbcrConversion
+--   >     ( VkDevice device
+--   >     , VkSamplerYcbcrConversion ycbcrConversion
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion registry at www.khronos.org>
+type HS_vkDestroySamplerYcbcrConversion =
+     VkDevice -- ^ device
+              ->
+       VkSamplerYcbcrConversion -- ^ ycbcrConversion
+                                -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                             -> IO ()
+
+type PFN_vkDestroySamplerYcbcrConversion =
+     FunPtr HS_vkDestroySamplerYcbcrConversion
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroySamplerYcbcrConversionUnsafe ::
+               PFN_vkDestroySamplerYcbcrConversion ->
+                 HS_vkDestroySamplerYcbcrConversion
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroySamplerYcbcrConversionSafe ::
+               PFN_vkDestroySamplerYcbcrConversion ->
+                 HS_vkDestroySamplerYcbcrConversion
+
+instance VulkanProc "vkDestroySamplerYcbcrConversion" where
+    type VkProcType "vkDestroySamplerYcbcrConversion" =
+         HS_vkDestroySamplerYcbcrConversion
+    vkProcSymbol = _VkDestroySamplerYcbcrConversion
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroySamplerYcbcrConversionUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO =
+        VkStructureType 1000156000
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO =
+        VkStructureType 1000156001
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO =
+        VkStructureType 1000156002
+
+pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO =
+        VkStructureType 1000156003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
+        = VkStructureType 1000156004
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
+        = VkStructureType 1000156005
+
+pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: VkObjectType
+
+pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION =
+        VkObjectType 1000156000
+
+pattern VK_FORMAT_G8B8G8R8_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8B8G8R8_422_UNORM = VkFormat 1000156000
+
+pattern VK_FORMAT_B8G8R8G8_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_B8G8R8G8_422_UNORM = VkFormat 1000156001
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = VkFormat 1000156002
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = VkFormat 1000156003
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = VkFormat 1000156004
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = VkFormat 1000156005
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM :: VkFormat
+
+pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = VkFormat 1000156006
+
+pattern VK_FORMAT_R10X6_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6_UNORM_PACK16 = VkFormat 1000156007
+
+pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = VkFormat 1000156008
+
+pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 :: VkFormat
+
+pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 =
+        VkFormat 1000156009
+
+pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 =
+        VkFormat 1000156010
+
+pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 =
+        VkFormat 1000156011
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156012
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156013
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156014
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156015
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 =
+        VkFormat 1000156016
+
+pattern VK_FORMAT_R12X4_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4_UNORM_PACK16 = VkFormat 1000156017
+
+pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = VkFormat 1000156018
+
+pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 :: VkFormat
+
+pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 =
+        VkFormat 1000156019
+
+pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 =
+        VkFormat 1000156020
+
+pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 =
+        VkFormat 1000156021
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156022
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 =
+        VkFormat 1000156023
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156024
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 =
+        VkFormat 1000156025
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 ::
+        VkFormat
+
+pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 =
+        VkFormat 1000156026
+
+pattern VK_FORMAT_G16B16G16R16_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16B16G16R16_422_UNORM = VkFormat 1000156027
+
+pattern VK_FORMAT_B16G16R16G16_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_B16G16R16G16_422_UNORM = VkFormat 1000156028
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM =
+        VkFormat 1000156029
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = VkFormat 1000156030
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM =
+        VkFormat 1000156031
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = VkFormat 1000156032
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM :: VkFormat
+
+pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM =
+        VkFormat 1000156033
+
+-- | bitpos = @4@
+pattern VK_IMAGE_ASPECT_PLANE_0_BIT :: VkImageAspectBitmask a
+
+pattern VK_IMAGE_ASPECT_PLANE_0_BIT = VkImageAspectBitmask 16
+
+-- | bitpos = @5@
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT :: VkImageAspectBitmask a
+
+pattern VK_IMAGE_ASPECT_PLANE_1_BIT = VkImageAspectBitmask 32
+
+-- | bitpos = @6@
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT :: VkImageAspectBitmask a
+
+pattern VK_IMAGE_ASPECT_PLANE_2_BIT = VkImageAspectBitmask 64
+
+-- | bitpos = @9@
+pattern VK_IMAGE_CREATE_DISJOINT_BIT :: VkImageCreateBitmask a
+
+pattern VK_IMAGE_CREATE_DISJOINT_BIT = VkImageCreateBitmask 512
+
+-- | Format can have midpoint rather than cosited chroma samples
+--
+--   bitpos = @17@
+pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT ::
+        VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT =
+        VkFormatFeatureBitmask 131072
+
+-- | Format can be used with linear filtering whilst color conversion is enabled
+--
+--   bitpos = @18@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+        :: VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+        = VkFormatFeatureBitmask 262144
+
+-- | Format can have different chroma, min and mag filters
+--
+--   bitpos = @19@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+        :: VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+        = VkFormatFeatureBitmask 524288
+
+-- | bitpos = @20@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+        :: VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+        = VkFormatFeatureBitmask 1048576
+
+-- | bitpos = @21@
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+        :: VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+        = VkFormatFeatureBitmask 2097152
+
+-- | Format supports disjoint planes
+--
+--   bitpos = @22@
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT :: VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_DISJOINT_BIT =
+        VkFormatFeatureBitmask 4194304
+
+-- | Format can have cosited rather than midpoint chroma samples
+--
+--   bitpos = @23@
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT ::
+        VkFormatFeatureBitmask a
+
+pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT =
+        VkFormatFeatureBitmask 8388608
+
+pattern VkCreateDescriptorUpdateTemplate :: CString
+
+pattern VkCreateDescriptorUpdateTemplate <-
+        (is_VkCreateDescriptorUpdateTemplate -> True)
+  where
+    VkCreateDescriptorUpdateTemplate
+      = _VkCreateDescriptorUpdateTemplate
+
+{-# INLINE _VkCreateDescriptorUpdateTemplate #-}
+
+_VkCreateDescriptorUpdateTemplate :: CString
+_VkCreateDescriptorUpdateTemplate
+  = Ptr "vkCreateDescriptorUpdateTemplate\NUL"#
+
+{-# INLINE is_VkCreateDescriptorUpdateTemplate #-}
+
+is_VkCreateDescriptorUpdateTemplate :: CString -> Bool
+is_VkCreateDescriptorUpdateTemplate
+  = (EQ ==) . cmpCStrings _VkCreateDescriptorUpdateTemplate
+
+type VkCreateDescriptorUpdateTemplate =
+     "vkCreateDescriptorUpdateTemplate"
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
+--
+-- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
+--           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplateUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+#else
+vkCreateDescriptorUpdateTemplateUnsafe ::
+                                       VkDevice -- ^ device
+                                                ->
+                                         Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                                                  ->
+                                           Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                     ->
+                                             Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                                            -> IO VkResult
+vkCreateDescriptorUpdateTemplateUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkCreateDescriptorUpdateTemplate)
+
+{-# NOINLINE vkCreateDescriptorUpdateTemplateUnsafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
+--
+-- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
+--           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkCreateDescriptorUpdateTemplate"
+               vkCreateDescriptorUpdateTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                          ->
+                   Ptr VkAllocationCallbacks -- ^ pAllocator
+                                             ->
+                     Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                    -> IO VkResult
+
+#else
+vkCreateDescriptorUpdateTemplateSafe ::
+                                     VkDevice -- ^ device
+                                              ->
+                                       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                                                ->
+                                         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                   ->
+                                           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                                          -> IO VkResult
+vkCreateDescriptorUpdateTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkCreateDescriptorUpdateTemplate)
+
+{-# NOINLINE vkCreateDescriptorUpdateTemplateSafe #-}
+#endif
+
+-- |
+-- Success codes: 'VK_SUCCESS'.
+--
+-- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+-- > VkResult vkCreateDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetDeviceProc @VkCreateDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myCreateDescriptorUpdateTemplate <- vkGetProc @VkCreateDescriptorUpdateTemplate
+--
+-- __Note:__ @vkCreateDescriptorUpdateTemplateUnsafe@ and @vkCreateDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkCreateDescriptorUpdateTemplate@ is an alias
+--           of @vkCreateDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkCreateDescriptorUpdateTemplateSafe@.
+--
+vkCreateDescriptorUpdateTemplate ::
+                                 VkDevice -- ^ device
+                                          ->
+                                   Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                                            ->
+                                     Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               ->
+                                       Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                                                      -> IO VkResult
+#ifdef UNSAFE_FFI_DEFAULT
+vkCreateDescriptorUpdateTemplate
+  = vkCreateDescriptorUpdateTemplateUnsafe
+#else
+vkCreateDescriptorUpdateTemplate
+  = vkCreateDescriptorUpdateTemplateSafe
+
+#endif
+{-# INLINE vkCreateDescriptorUpdateTemplate #-}
+
+-- | Success codes: 'VK_SUCCESS'.
+--
+--   Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'.
+--
+--   > VkResult vkCreateDescriptorUpdateTemplate
+--   >     ( VkDevice device
+--   >     , const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     , VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate registry at www.khronos.org>
+type HS_vkCreateDescriptorUpdateTemplate =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorUpdateTemplateCreateInfo -- ^ pCreateInfo
+                                                ->
+         Ptr VkAllocationCallbacks -- ^ pAllocator
+                                   ->
+           Ptr VkDescriptorUpdateTemplate -- ^ pDescriptorUpdateTemplate
+                                          -> IO VkResult
+
+type PFN_vkCreateDescriptorUpdateTemplate =
+     FunPtr HS_vkCreateDescriptorUpdateTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkCreateDescriptorUpdateTemplateUnsafe ::
+               PFN_vkCreateDescriptorUpdateTemplate ->
+                 HS_vkCreateDescriptorUpdateTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkCreateDescriptorUpdateTemplateSafe ::
+               PFN_vkCreateDescriptorUpdateTemplate ->
+                 HS_vkCreateDescriptorUpdateTemplate
+
+instance VulkanProc "vkCreateDescriptorUpdateTemplate" where
+    type VkProcType "vkCreateDescriptorUpdateTemplate" =
+         HS_vkCreateDescriptorUpdateTemplate
+    vkProcSymbol = _VkCreateDescriptorUpdateTemplate
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkCreateDescriptorUpdateTemplateUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkDestroyDescriptorUpdateTemplate :: CString
+
+pattern VkDestroyDescriptorUpdateTemplate <-
+        (is_VkDestroyDescriptorUpdateTemplate -> True)
+  where
+    VkDestroyDescriptorUpdateTemplate
+      = _VkDestroyDescriptorUpdateTemplate
+
+{-# INLINE _VkDestroyDescriptorUpdateTemplate #-}
+
+_VkDestroyDescriptorUpdateTemplate :: CString
+_VkDestroyDescriptorUpdateTemplate
+  = Ptr "vkDestroyDescriptorUpdateTemplate\NUL"#
+
+{-# INLINE is_VkDestroyDescriptorUpdateTemplate #-}
+
+is_VkDestroyDescriptorUpdateTemplate :: CString -> Bool
+is_VkDestroyDescriptorUpdateTemplate
+  = (EQ ==) . cmpCStrings _VkDestroyDescriptorUpdateTemplate
+
+type VkDestroyDescriptorUpdateTemplate =
+     "vkDestroyDescriptorUpdateTemplate"
+
+-- |
+-- > void vkDestroyDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
+--
+-- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
+--           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplateUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+#else
+vkDestroyDescriptorUpdateTemplateUnsafe ::
+                                        VkDevice -- ^ device
+                                                 ->
+                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                     ->
+                                            Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                      -> IO ()
+vkDestroyDescriptorUpdateTemplateUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkDestroyDescriptorUpdateTemplate)
+
+{-# NOINLINE vkDestroyDescriptorUpdateTemplateUnsafe #-}
+#endif
+
+-- |
+-- > void vkDestroyDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
+--
+-- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
+--           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkDestroyDescriptorUpdateTemplate"
+               vkDestroyDescriptorUpdateTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                            -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                         -> IO ()
+
+#else
+vkDestroyDescriptorUpdateTemplateSafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                   ->
+                                          Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                    -> IO ()
+vkDestroyDescriptorUpdateTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkDestroyDescriptorUpdateTemplate)
+
+{-# NOINLINE vkDestroyDescriptorUpdateTemplateSafe #-}
+#endif
+
+-- |
+-- > void vkDestroyDescriptorUpdateTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const VkAllocationCallbacks* pAllocator
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetDeviceProc @VkDestroyDescriptorUpdateTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myDestroyDescriptorUpdateTemplate <- vkGetProc @VkDestroyDescriptorUpdateTemplate
+--
+-- __Note:__ @vkDestroyDescriptorUpdateTemplateUnsafe@ and @vkDestroyDescriptorUpdateTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkDestroyDescriptorUpdateTemplate@ is an alias
+--           of @vkDestroyDescriptorUpdateTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkDestroyDescriptorUpdateTemplateSafe@.
+--
+vkDestroyDescriptorUpdateTemplate ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                                                            -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkDestroyDescriptorUpdateTemplate
+  = vkDestroyDescriptorUpdateTemplateUnsafe
+#else
+vkDestroyDescriptorUpdateTemplate
+  = vkDestroyDescriptorUpdateTemplateSafe
+
+#endif
+{-# INLINE vkDestroyDescriptorUpdateTemplate #-}
+
+-- | > void vkDestroyDescriptorUpdateTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const VkAllocationCallbacks* pAllocator
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate registry at www.khronos.org>
+type HS_vkDestroyDescriptorUpdateTemplate =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                  -> Ptr VkAllocationCallbacks -- ^ pAllocator
+                                                               -> IO ()
+
+type PFN_vkDestroyDescriptorUpdateTemplate =
+     FunPtr HS_vkDestroyDescriptorUpdateTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkDestroyDescriptorUpdateTemplateUnsafe ::
+               PFN_vkDestroyDescriptorUpdateTemplate ->
+                 HS_vkDestroyDescriptorUpdateTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkDestroyDescriptorUpdateTemplateSafe ::
+               PFN_vkDestroyDescriptorUpdateTemplate ->
+                 HS_vkDestroyDescriptorUpdateTemplate
+
+instance VulkanProc "vkDestroyDescriptorUpdateTemplate" where
+    type VkProcType "vkDestroyDescriptorUpdateTemplate" =
+         HS_vkDestroyDescriptorUpdateTemplate
+    vkProcSymbol = _VkDestroyDescriptorUpdateTemplate
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkDestroyDescriptorUpdateTemplateUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyDescriptorUpdateTemplateSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VkUpdateDescriptorSetWithTemplate :: CString
+
+pattern VkUpdateDescriptorSetWithTemplate <-
+        (is_VkUpdateDescriptorSetWithTemplate -> True)
+  where
+    VkUpdateDescriptorSetWithTemplate
+      = _VkUpdateDescriptorSetWithTemplate
+
+{-# INLINE _VkUpdateDescriptorSetWithTemplate #-}
+
+_VkUpdateDescriptorSetWithTemplate :: CString
+_VkUpdateDescriptorSetWithTemplate
+  = Ptr "vkUpdateDescriptorSetWithTemplate\NUL"#
+
+{-# INLINE is_VkUpdateDescriptorSetWithTemplate #-}
+
+is_VkUpdateDescriptorSetWithTemplate :: CString -> Bool
+is_VkUpdateDescriptorSetWithTemplate
+  = (EQ ==) . cmpCStrings _VkUpdateDescriptorSetWithTemplate
+
+type VkUpdateDescriptorSetWithTemplate =
+     "vkUpdateDescriptorSetWithTemplate"
+
+-- |
+-- > void vkUpdateDescriptorSetWithTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorSet descriptorSet
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
+--
+-- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
+--           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplateUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
+
+#else
+vkUpdateDescriptorSetWithTemplateUnsafe ::
+                                        VkDevice -- ^ device
+                                                 ->
+                                          VkDescriptorSet -- ^ descriptorSet
+                                                          ->
+                                            VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                       -> Ptr Void -- ^ pData
+                                                                                   -> IO ()
+vkUpdateDescriptorSetWithTemplateUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkUpdateDescriptorSetWithTemplate)
+
+{-# NOINLINE vkUpdateDescriptorSetWithTemplateUnsafe #-}
+#endif
+
+-- |
+-- > void vkUpdateDescriptorSetWithTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorSet descriptorSet
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
+--
+-- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
+--           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkUpdateDescriptorSetWithTemplate"
+               vkUpdateDescriptorSetWithTemplateSafe ::
+               VkDevice -- ^ device
+                        ->
+                 VkDescriptorSet -- ^ descriptorSet
+                                 -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                               -> Ptr Void -- ^ pData
+                                                                           -> IO ()
+
+#else
+vkUpdateDescriptorSetWithTemplateSafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        VkDescriptorSet -- ^ descriptorSet
+                                                        ->
+                                          VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                     -> Ptr Void -- ^ pData
+                                                                                 -> IO ()
+vkUpdateDescriptorSetWithTemplateSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkUpdateDescriptorSetWithTemplate)
+
+{-# NOINLINE vkUpdateDescriptorSetWithTemplateSafe #-}
+#endif
+
+-- |
+-- > void vkUpdateDescriptorSetWithTemplate
+-- >     ( VkDevice device
+-- >     , VkDescriptorSet descriptorSet
+-- >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+-- >     , const void* pData
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetDeviceProc @VkUpdateDescriptorSetWithTemplate vkDevice
+--
+-- or less efficient:
+--
+-- > myUpdateDescriptorSetWithTemplate <- vkGetProc @VkUpdateDescriptorSetWithTemplate
+--
+-- __Note:__ @vkUpdateDescriptorSetWithTemplateUnsafe@ and @vkUpdateDescriptorSetWithTemplateSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkUpdateDescriptorSetWithTemplate@ is an alias
+--           of @vkUpdateDescriptorSetWithTemplateUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkUpdateDescriptorSetWithTemplateSafe@.
+--
+vkUpdateDescriptorSetWithTemplate ::
+                                  VkDevice -- ^ device
+                                           ->
+                                    VkDescriptorSet -- ^ descriptorSet
+                                                    ->
+                                      VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                                 -> Ptr Void -- ^ pData
+                                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkUpdateDescriptorSetWithTemplate
+  = vkUpdateDescriptorSetWithTemplateUnsafe
+#else
+vkUpdateDescriptorSetWithTemplate
+  = vkUpdateDescriptorSetWithTemplateSafe
+
+#endif
+{-# INLINE vkUpdateDescriptorSetWithTemplate #-}
+
+-- | > void vkUpdateDescriptorSetWithTemplate
+--   >     ( VkDevice device
+--   >     , VkDescriptorSet descriptorSet
+--   >     , VkDescriptorUpdateTemplate descriptorUpdateTemplate
+--   >     , const void* pData
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate registry at www.khronos.org>
+type HS_vkUpdateDescriptorSetWithTemplate =
+     VkDevice -- ^ device
+              ->
+       VkDescriptorSet -- ^ descriptorSet
+                       -> VkDescriptorUpdateTemplate -- ^ descriptorUpdateTemplate
+                                                     -> Ptr Void -- ^ pData
+                                                                 -> IO ()
+
+type PFN_vkUpdateDescriptorSetWithTemplate =
+     FunPtr HS_vkUpdateDescriptorSetWithTemplate
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkUpdateDescriptorSetWithTemplateUnsafe ::
+               PFN_vkUpdateDescriptorSetWithTemplate ->
+                 HS_vkUpdateDescriptorSetWithTemplate
+
+foreign import ccall safe "dynamic"
+               unwrapVkUpdateDescriptorSetWithTemplateSafe ::
+               PFN_vkUpdateDescriptorSetWithTemplate ->
+                 HS_vkUpdateDescriptorSetWithTemplate
+
+instance VulkanProc "vkUpdateDescriptorSetWithTemplate" where
+    type VkProcType "vkUpdateDescriptorSetWithTemplate" =
+         HS_vkUpdateDescriptorSetWithTemplate
+    vkProcSymbol = _VkUpdateDescriptorSetWithTemplate
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkUpdateDescriptorSetWithTemplateUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkUpdateDescriptorSetWithTemplateSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO =
+        VkStructureType 1000085000
+
+pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE :: VkObjectType
+
+pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE =
+        VkObjectType 1000085000
+
+pattern VkGetPhysicalDeviceExternalBufferProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalBufferProperties <-
+        (is_VkGetPhysicalDeviceExternalBufferProperties -> True)
+  where
+    VkGetPhysicalDeviceExternalBufferProperties
+      = _VkGetPhysicalDeviceExternalBufferProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalBufferProperties #-}
+
+_VkGetPhysicalDeviceExternalBufferProperties :: CString
+_VkGetPhysicalDeviceExternalBufferProperties
+  = Ptr "vkGetPhysicalDeviceExternalBufferProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalBufferProperties #-}
+
+is_VkGetPhysicalDeviceExternalBufferProperties :: CString -> Bool
+is_VkGetPhysicalDeviceExternalBufferProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceExternalBufferProperties
+
+type VkGetPhysicalDeviceExternalBufferProperties =
+     "vkGetPhysicalDeviceExternalBufferProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalBufferProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+-- >     , VkExternalBufferProperties* pExternalBufferProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
+                                                  VkPhysicalDevice -- ^ physicalDevice
+                                                                   ->
+                                                    Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                                                           ->
+                                                      Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                                                     -> IO ()
+vkGetPhysicalDeviceExternalBufferPropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalBufferProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalBufferPropertiesUnsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalBufferProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+-- >     , VkExternalBufferProperties* pExternalBufferProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalBufferProperties"
+               vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                        ->
+                   Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                  -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+                                                VkPhysicalDevice -- ^ physicalDevice
+                                                                 ->
+                                                  Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                                                         ->
+                                                    Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                                                   -> IO ()
+vkGetPhysicalDeviceExternalBufferPropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalBufferProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalBufferPropertiesSafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalBufferProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+-- >     , VkExternalBufferProperties* pExternalBufferProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalBufferProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalBufferProperties <- vkGetProc @VkGetPhysicalDeviceExternalBufferProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ and @vkGetPhysicalDeviceExternalBufferPropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalBufferProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalBufferPropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalBufferPropertiesSafe@.
+--
+vkGetPhysicalDeviceExternalBufferProperties ::
+                                            VkPhysicalDevice -- ^ physicalDevice
+                                                             ->
+                                              Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                                                                     ->
+                                                Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                                                               -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceExternalBufferProperties
+  = vkGetPhysicalDeviceExternalBufferPropertiesUnsafe
+#else
+vkGetPhysicalDeviceExternalBufferProperties
+  = vkGetPhysicalDeviceExternalBufferPropertiesSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceExternalBufferProperties #-}
+
+-- | > void vkGetPhysicalDeviceExternalBufferProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo
+--   >     , VkExternalBufferProperties* pExternalBufferProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalBufferProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalBufferInfo -- ^ pExternalBufferInfo
+                                              ->
+         Ptr VkExternalBufferProperties -- ^ pExternalBufferProperties
+                                        -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalBufferProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalBufferProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalBufferPropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
+                 HS_vkGetPhysicalDeviceExternalBufferProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalBufferProperties ->
+                 HS_vkGetPhysicalDeviceExternalBufferProperties
+
+instance VulkanProc "vkGetPhysicalDeviceExternalBufferProperties"
+         where
+    type VkProcType "vkGetPhysicalDeviceExternalBufferProperties" =
+         HS_vkGetPhysicalDeviceExternalBufferProperties
+    vkProcSymbol = _VkGetPhysicalDeviceExternalBufferProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceExternalBufferPropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceExternalBufferPropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
+        = VkStructureType 1000071000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES =
+        VkStructureType 1000071001
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO =
+        VkStructureType 1000071002
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES =
+        VkStructureType 1000071003
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES =
+        VkStructureType 1000071004
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO =
+        VkStructureType 1000072000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO =
+        VkStructureType 1000072001
+
+pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO =
+        VkStructureType 1000072002
+
+pattern VK_ERROR_INVALID_EXTERNAL_HANDLE :: VkResult
+
+pattern VK_ERROR_INVALID_EXTERNAL_HANDLE = VkResult (-1000072003)
+
+pattern VkGetPhysicalDeviceExternalFenceProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalFenceProperties <-
+        (is_VkGetPhysicalDeviceExternalFenceProperties -> True)
+  where
+    VkGetPhysicalDeviceExternalFenceProperties
+      = _VkGetPhysicalDeviceExternalFenceProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalFenceProperties #-}
+
+_VkGetPhysicalDeviceExternalFenceProperties :: CString
+_VkGetPhysicalDeviceExternalFenceProperties
+  = Ptr "vkGetPhysicalDeviceExternalFenceProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalFenceProperties #-}
+
+is_VkGetPhysicalDeviceExternalFenceProperties :: CString -> Bool
+is_VkGetPhysicalDeviceExternalFenceProperties
+  = (EQ ==) . cmpCStrings _VkGetPhysicalDeviceExternalFenceProperties
+
+type VkGetPhysicalDeviceExternalFenceProperties =
+     "vkGetPhysicalDeviceExternalFenceProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalFenceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+-- >     , VkExternalFenceProperties* pExternalFenceProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
+                                                 VkPhysicalDevice -- ^ physicalDevice
+                                                                  ->
+                                                   Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                                                         ->
+                                                     Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                                                   -> IO ()
+vkGetPhysicalDeviceExternalFencePropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalFenceProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalFencePropertiesUnsafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalFenceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+-- >     , VkExternalFenceProperties* pExternalFenceProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalFenceProperties"
+               vkGetPhysicalDeviceExternalFencePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                       ->
+                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                 -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalFencePropertiesSafe ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                                                       ->
+                                                   Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                                                 -> IO ()
+vkGetPhysicalDeviceExternalFencePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalFenceProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalFencePropertiesSafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalFenceProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+-- >     , VkExternalFenceProperties* pExternalFenceProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalFenceProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalFenceProperties <- vkGetProc @VkGetPhysicalDeviceExternalFenceProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalFencePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalFenceProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalFencePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalFencePropertiesSafe@.
+--
+vkGetPhysicalDeviceExternalFenceProperties ::
+                                           VkPhysicalDevice -- ^ physicalDevice
+                                                            ->
+                                             Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                                                                   ->
+                                               Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                                                             -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceExternalFenceProperties
+  = vkGetPhysicalDeviceExternalFencePropertiesUnsafe
+#else
+vkGetPhysicalDeviceExternalFenceProperties
+  = vkGetPhysicalDeviceExternalFencePropertiesSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceExternalFenceProperties #-}
+
+-- | > void vkGetPhysicalDeviceExternalFenceProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo
+--   >     , VkExternalFenceProperties* pExternalFenceProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalFenceProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalFenceInfo -- ^ pExternalFenceInfo
+                                             ->
+         Ptr VkExternalFenceProperties -- ^ pExternalFenceProperties
+                                       -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalFenceProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalFenceProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalFencePropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
+                 HS_vkGetPhysicalDeviceExternalFenceProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalFenceProperties ->
+                 HS_vkGetPhysicalDeviceExternalFenceProperties
+
+instance VulkanProc "vkGetPhysicalDeviceExternalFenceProperties"
+         where
+    type VkProcType "vkGetPhysicalDeviceExternalFenceProperties" =
+         HS_vkGetPhysicalDeviceExternalFenceProperties
+    vkProcSymbol = _VkGetPhysicalDeviceExternalFenceProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceExternalFencePropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceExternalFencePropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO =
+        VkStructureType 1000112000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES =
+        VkStructureType 1000112001
+
+pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO =
+        VkStructureType 1000113000
+
+pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO =
+        VkStructureType 1000077000
+
+pattern VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
+
+pattern VkGetPhysicalDeviceExternalSemaphoreProperties <-
+        (is_VkGetPhysicalDeviceExternalSemaphoreProperties -> True)
+  where
+    VkGetPhysicalDeviceExternalSemaphoreProperties
+      = _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+{-# INLINE _VkGetPhysicalDeviceExternalSemaphoreProperties #-}
+
+_VkGetPhysicalDeviceExternalSemaphoreProperties :: CString
+_VkGetPhysicalDeviceExternalSemaphoreProperties
+  = Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties\NUL"#
+
+{-# INLINE is_VkGetPhysicalDeviceExternalSemaphoreProperties #-}
+
+is_VkGetPhysicalDeviceExternalSemaphoreProperties ::
+                                                  CString -> Bool
+is_VkGetPhysicalDeviceExternalSemaphoreProperties
+  = (EQ ==) .
+      cmpCStrings _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+type VkGetPhysicalDeviceExternalSemaphoreProperties =
+     "vkGetPhysicalDeviceExternalSemaphoreProperties"
+
+-- |
+-- > void vkGetPhysicalDeviceExternalSemaphoreProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+-- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
+                                                     VkPhysicalDevice -- ^ physicalDevice
+                                                                      ->
+                                                       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                                                                 ->
+                                                         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                                                           -> IO ()
+vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetPhysicalDeviceExternalSemaphoreProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
+             #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalSemaphoreProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+-- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe
+               "vkGetPhysicalDeviceExternalSemaphoreProperties"
+               vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+               VkPhysicalDevice -- ^ physicalDevice
+                                ->
+                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                           ->
+                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                     -> IO ()
+
+#else
+vkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+                                                   VkPhysicalDevice -- ^ physicalDevice
+                                                                    ->
+                                                     Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                                                               ->
+                                                       Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                                                         -> IO ()
+vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetPhysicalDeviceExternalSemaphoreProperties)
+
+{-# NOINLINE vkGetPhysicalDeviceExternalSemaphorePropertiesSafe #-}
+#endif
+
+-- |
+-- > void vkGetPhysicalDeviceExternalSemaphoreProperties
+-- >     ( VkPhysicalDevice physicalDevice
+-- >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+-- >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetInstanceProc @VkGetPhysicalDeviceExternalSemaphoreProperties vkInstance
+--
+-- or less efficient:
+--
+-- > myGetPhysicalDeviceExternalSemaphoreProperties <- vkGetProc @VkGetPhysicalDeviceExternalSemaphoreProperties
+--
+-- __Note:__ @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ and @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetPhysicalDeviceExternalSemaphoreProperties@ is an alias
+--           of @vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetPhysicalDeviceExternalSemaphorePropertiesSafe@.
+--
+vkGetPhysicalDeviceExternalSemaphoreProperties ::
+                                               VkPhysicalDevice -- ^ physicalDevice
+                                                                ->
+                                                 Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                                                           ->
+                                                   Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                                                                     -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetPhysicalDeviceExternalSemaphoreProperties
+  = vkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
+#else
+vkGetPhysicalDeviceExternalSemaphoreProperties
+  = vkGetPhysicalDeviceExternalSemaphorePropertiesSafe
+
+#endif
+{-# INLINE vkGetPhysicalDeviceExternalSemaphoreProperties #-}
+
+-- | > void vkGetPhysicalDeviceExternalSemaphoreProperties
+--   >     ( VkPhysicalDevice physicalDevice
+--   >     , const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo
+--   >     , VkExternalSemaphoreProperties* pExternalSemaphoreProperties
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties registry at www.khronos.org>
+type HS_vkGetPhysicalDeviceExternalSemaphoreProperties =
+     VkPhysicalDevice -- ^ physicalDevice
+                      ->
+       Ptr VkPhysicalDeviceExternalSemaphoreInfo -- ^ pExternalSemaphoreInfo
+                                                 ->
+         Ptr VkExternalSemaphoreProperties -- ^ pExternalSemaphoreProperties
+                                           -> IO ()
+
+type PFN_vkGetPhysicalDeviceExternalSemaphoreProperties =
+     FunPtr HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe ::
+               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
+                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe ::
+               PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ->
+                 HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+
+instance VulkanProc
+           "vkGetPhysicalDeviceExternalSemaphoreProperties"
+         where
+    type VkProcType "vkGetPhysicalDeviceExternalSemaphoreProperties" =
+         HS_vkGetPhysicalDeviceExternalSemaphoreProperties
+    vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphoreProperties
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
+        :: VkStructureType
+
+pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO =
+        VkStructureType 1000076000
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES ::
+        VkStructureType
+
+pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES =
+        VkStructureType 1000076001
+
+pattern VkGetDescriptorSetLayoutSupport :: CString
+
+pattern VkGetDescriptorSetLayoutSupport <-
+        (is_VkGetDescriptorSetLayoutSupport -> True)
+  where
+    VkGetDescriptorSetLayoutSupport = _VkGetDescriptorSetLayoutSupport
+
+{-# INLINE _VkGetDescriptorSetLayoutSupport #-}
+
+_VkGetDescriptorSetLayoutSupport :: CString
+_VkGetDescriptorSetLayoutSupport
+  = Ptr "vkGetDescriptorSetLayoutSupport\NUL"#
+
+{-# INLINE is_VkGetDescriptorSetLayoutSupport #-}
+
+is_VkGetDescriptorSetLayoutSupport :: CString -> Bool
+is_VkGetDescriptorSetLayoutSupport
+  = (EQ ==) . cmpCStrings _VkGetDescriptorSetLayoutSupport
+
+type VkGetDescriptorSetLayoutSupport =
+     "vkGetDescriptorSetLayoutSupport"
+
+-- |
+-- > void vkGetDescriptorSetLayoutSupport
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , VkDescriptorSetLayoutSupport* pSupport
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
+--
+-- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
+--           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall unsafe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupportUnsafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+#else
+vkGetDescriptorSetLayoutSupportUnsafe ::
+                                      VkDevice -- ^ device
+                                               ->
+                                        Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                            ->
+                                          Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                                           -> IO ()
+vkGetDescriptorSetLayoutSupportUnsafe
+  = unsafeDupablePerformIO
+      (vkGetProcUnsafe @VkGetDescriptorSetLayoutSupport)
+
+{-# NOINLINE vkGetDescriptorSetLayoutSupportUnsafe #-}
+#endif
+
+-- |
+-- > void vkGetDescriptorSetLayoutSupport
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , VkDescriptorSetLayoutSupport* pSupport
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
+--
+-- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
+--           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
+--
+--
+#ifdef NATIVE_FFI_VK_VERSION_1_1
+foreign import ccall safe "vkGetDescriptorSetLayoutSupport"
+               vkGetDescriptorSetLayoutSupportSafe ::
+               VkDevice -- ^ device
+                        ->
+                 Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                     ->
+                   Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                    -> IO ()
+
+#else
+vkGetDescriptorSetLayoutSupportSafe ::
+                                    VkDevice -- ^ device
+                                             ->
+                                      Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                          ->
+                                        Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                                         -> IO ()
+vkGetDescriptorSetLayoutSupportSafe
+  = unsafeDupablePerformIO
+      (vkGetProcSafe @VkGetDescriptorSetLayoutSupport)
+
+{-# NOINLINE vkGetDescriptorSetLayoutSupportSafe #-}
+#endif
+
+-- |
+-- > void vkGetDescriptorSetLayoutSupport
+-- >     ( VkDevice device
+-- >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+-- >     , VkDescriptorSetLayoutSupport* pSupport
+-- >     )
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+--
+-- __Note:__ When @useNativeFFI-1-1@ cabal flag is enabled, this function is linked statically
+--           as a @foreign import@ call to C Vulkan loader.
+--           Otherwise, it is looked up dynamically at runtime using dlsym-like machinery (platform-dependent).
+--
+-- Independently of the flag setting, you can lookup the function manually at runtime:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetDeviceProc @VkGetDescriptorSetLayoutSupport vkDevice
+--
+-- or less efficient:
+--
+-- > myGetDescriptorSetLayoutSupport <- vkGetProc @VkGetDescriptorSetLayoutSupport
+--
+-- __Note:__ @vkGetDescriptorSetLayoutSupportUnsafe@ and @vkGetDescriptorSetLayoutSupportSafe@ are the @unsafe@ and @safe@
+--           FFI imports of this function, respectively. @vkGetDescriptorSetLayoutSupport@ is an alias
+--           of @vkGetDescriptorSetLayoutSupportUnsafe@ when the @useUnsafeFFIDefault@ cabal flag
+--           is enabled; otherwise, it is an alias of @vkGetDescriptorSetLayoutSupportSafe@.
+--
+vkGetDescriptorSetLayoutSupport ::
+                                VkDevice -- ^ device
+                                         ->
+                                  Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                                                      ->
+                                    Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                                                     -> IO ()
+#ifdef UNSAFE_FFI_DEFAULT
+vkGetDescriptorSetLayoutSupport
+  = vkGetDescriptorSetLayoutSupportUnsafe
+#else
+vkGetDescriptorSetLayoutSupport
+  = vkGetDescriptorSetLayoutSupportSafe
+
+#endif
+{-# INLINE vkGetDescriptorSetLayoutSupport #-}
+
+-- | > void vkGetDescriptorSetLayoutSupport
+--   >     ( VkDevice device
+--   >     , const VkDescriptorSetLayoutCreateInfo* pCreateInfo
+--   >     , VkDescriptorSetLayoutSupport* pSupport
+--   >     )
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport registry at www.khronos.org>
+type HS_vkGetDescriptorSetLayoutSupport =
+     VkDevice -- ^ device
+              ->
+       Ptr VkDescriptorSetLayoutCreateInfo -- ^ pCreateInfo
+                                           ->
+         Ptr VkDescriptorSetLayoutSupport -- ^ pSupport
+                                          -> IO ()
+
+type PFN_vkGetDescriptorSetLayoutSupport =
+     FunPtr HS_vkGetDescriptorSetLayoutSupport
+
+foreign import ccall unsafe "dynamic"
+               unwrapVkGetDescriptorSetLayoutSupportUnsafe ::
+               PFN_vkGetDescriptorSetLayoutSupport ->
+                 HS_vkGetDescriptorSetLayoutSupport
+
+foreign import ccall safe "dynamic"
+               unwrapVkGetDescriptorSetLayoutSupportSafe ::
+               PFN_vkGetDescriptorSetLayoutSupport ->
+                 HS_vkGetDescriptorSetLayoutSupport
+
+instance VulkanProc "vkGetDescriptorSetLayoutSupport" where
+    type VkProcType "vkGetDescriptorSetLayoutSupport" =
+         HS_vkGetDescriptorSetLayoutSupport
+    vkProcSymbol = _VkGetDescriptorSetLayoutSupport
+
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetDescriptorSetLayoutSupportUnsafe
+
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDescriptorSetLayoutSupportSafe
+
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
         :: VkStructureType
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_buffer_marker.hs
@@ -25,10 +25,47 @@
         -- Extension number: @180@
         VkCmdWriteBufferMarkerAMD, pattern VkCmdWriteBufferMarkerAMD,
         HS_vkCmdWriteBufferMarkerAMD, PFN_vkCmdWriteBufferMarkerAMD,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkPipelineBindPoint(..),
+        VkPipelineCacheHeaderVersion(..), VkPipelineCreateBitmask(..),
+        VkPipelineStageBitmask(..), VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..), VkBuffer, VkBufferView,
+        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_AMD_BUFFER_MARKER_SPEC_VERSION,
         pattern VK_AMD_BUFFER_MARKER_SPEC_VERSION,
         VK_AMD_BUFFER_MARKER_EXTENSION_NAME,
@@ -45,7 +82,8 @@
 
 pattern VkCmdWriteBufferMarkerAMD <-
         (is_VkCmdWriteBufferMarkerAMD -> True)
-  where VkCmdWriteBufferMarkerAMD = _VkCmdWriteBufferMarkerAMD
+  where
+    VkCmdWriteBufferMarkerAMD = _VkCmdWriteBufferMarkerAMD
 
 {-# INLINE _VkCmdWriteBufferMarkerAMD #-}
 
@@ -97,17 +135,17 @@
                PFN_vkCmdWriteBufferMarkerAMD -> HS_vkCmdWriteBufferMarkerAMD
 
 instance VulkanProc "vkCmdWriteBufferMarkerAMD" where
-        type VkProcType "vkCmdWriteBufferMarkerAMD" =
-             HS_vkCmdWriteBufferMarkerAMD
-        vkProcSymbol = _VkCmdWriteBufferMarkerAMD
+    type VkProcType "vkCmdWriteBufferMarkerAMD" =
+         HS_vkCmdWriteBufferMarkerAMD
+    vkProcSymbol = _VkCmdWriteBufferMarkerAMD
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdWriteBufferMarkerAMDUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdWriteBufferMarkerAMDUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdWriteBufferMarkerAMDSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdWriteBufferMarkerAMDSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_AMD_BUFFER_MARKER_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -119,8 +157,9 @@
 
 pattern VK_AMD_BUFFER_MARKER_EXTENSION_NAME <-
         (is_VK_AMD_BUFFER_MARKER_EXTENSION_NAME -> True)
-  where VK_AMD_BUFFER_MARKER_EXTENSION_NAME
-          = _VK_AMD_BUFFER_MARKER_EXTENSION_NAME
+  where
+    VK_AMD_BUFFER_MARKER_EXTENSION_NAME
+      = _VK_AMD_BUFFER_MARKER_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_BUFFER_MARKER_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_draw_indirect_count.hs
@@ -28,9 +28,32 @@
         pattern VkCmdDrawIndexedIndirectCountAMD,
         HS_vkCmdDrawIndexedIndirectCountAMD,
         PFN_vkCmdDrawIndexedIndirectCountAMD,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkBuffer, VkBufferView,
+        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION,
         pattern VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION,
         VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME,
@@ -46,7 +69,8 @@
 
 pattern VkCmdDrawIndirectCountAMD <-
         (is_VkCmdDrawIndirectCountAMD -> True)
-  where VkCmdDrawIndirectCountAMD = _VkCmdDrawIndirectCountAMD
+  where
+    VkCmdDrawIndirectCountAMD = _VkCmdDrawIndirectCountAMD
 
 {-# INLINE _VkCmdDrawIndirectCountAMD #-}
 
@@ -103,24 +127,25 @@
                PFN_vkCmdDrawIndirectCountAMD -> HS_vkCmdDrawIndirectCountAMD
 
 instance VulkanProc "vkCmdDrawIndirectCountAMD" where
-        type VkProcType "vkCmdDrawIndirectCountAMD" =
-             HS_vkCmdDrawIndirectCountAMD
-        vkProcSymbol = _VkCmdDrawIndirectCountAMD
+    type VkProcType "vkCmdDrawIndirectCountAMD" =
+         HS_vkCmdDrawIndirectCountAMD
+    vkProcSymbol = _VkCmdDrawIndirectCountAMD
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectCountAMDUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectCountAMDUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectCountAMDSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectCountAMDSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdDrawIndexedIndirectCountAMD :: CString
 
 pattern VkCmdDrawIndexedIndirectCountAMD <-
         (is_VkCmdDrawIndexedIndirectCountAMD -> True)
-  where VkCmdDrawIndexedIndirectCountAMD
-          = _VkCmdDrawIndexedIndirectCountAMD
+  where
+    VkCmdDrawIndexedIndirectCountAMD
+      = _VkCmdDrawIndexedIndirectCountAMD
 
 {-# INLINE _VkCmdDrawIndexedIndirectCountAMD #-}
 
@@ -181,18 +206,18 @@
                  HS_vkCmdDrawIndexedIndirectCountAMD
 
 instance VulkanProc "vkCmdDrawIndexedIndirectCountAMD" where
-        type VkProcType "vkCmdDrawIndexedIndirectCountAMD" =
-             HS_vkCmdDrawIndexedIndirectCountAMD
-        vkProcSymbol = _VkCmdDrawIndexedIndirectCountAMD
+    type VkProcType "vkCmdDrawIndexedIndirectCountAMD" =
+         HS_vkCmdDrawIndexedIndirectCountAMD
+    vkProcSymbol = _VkCmdDrawIndexedIndirectCountAMD
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkCmdDrawIndexedIndirectCountAMDUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkCmdDrawIndexedIndirectCountAMDUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectCountAMDSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectCountAMDSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -205,8 +230,9 @@
 
 pattern VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME <-
         (is_VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME -> True)
-  where VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME
-          = _VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+  where
+    VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+      = _VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gcn_shader.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gcn_shader.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gcn_shader.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gcn_shader.hs
@@ -35,8 +35,9 @@
 
 pattern VK_AMD_GCN_SHADER_EXTENSION_NAME <-
         (is_VK_AMD_GCN_SHADER_EXTENSION_NAME -> True)
-  where VK_AMD_GCN_SHADER_EXTENSION_NAME
-          = _VK_AMD_GCN_SHADER_EXTENSION_NAME
+  where
+    VK_AMD_GCN_SHADER_EXTENSION_NAME
+      = _VK_AMD_GCN_SHADER_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_GCN_SHADER_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_half_float.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_half_float.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_half_float.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_half_float.hs
@@ -36,8 +36,9 @@
 
 pattern VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME <-
         (is_VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME -> True)
-  where VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
-          = _VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
+  where
+    VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
+      = _VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_int16.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_int16.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_int16.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_gpu_shader_int16.hs
@@ -35,8 +35,9 @@
 
 pattern VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME <-
         (is_VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME -> True)
-  where VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME
-          = _VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME
+  where
+    VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME
+      = _VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_mixed_attachment_samples.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_mixed_attachment_samples.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_mixed_attachment_samples.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_mixed_attachment_samples.hs
@@ -36,8 +36,9 @@
 
 pattern VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME <-
         (is_VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME -> True)
-  where VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME
-          = _VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME
+  where
+    VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME
+      = _VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_negative_viewport_height.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_negative_viewport_height.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_negative_viewport_height.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_negative_viewport_height.hs
@@ -36,8 +36,9 @@
 
 pattern VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME <-
         (is_VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME -> True)
-  where VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME
-          = _VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME
+  where
+    VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME
+      = _VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_rasterization_order.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_rasterization_order.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_rasterization_order.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_rasterization_order.hs
@@ -5,31 +5,58 @@
 {-# LANGUAGE Strict          #-}
 {-# LANGUAGE ViewPatterns    #-}
 module Graphics.Vulkan.Ext.VK_AMD_rasterization_order
-       (-- * Vulkan extension: @VK_AMD_rasterization_order@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Daniel Rakos @drakos-amd@
-        --
-        -- author: @AMD@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @19@
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.CullModeFlags,
-        module Graphics.Vulkan.Types.Enum.FrontFace,
-        module Graphics.Vulkan.Types.Bitmasks,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkCullModeBitmask(..), VkCullModeFlagBits(), VkCullModeFlags(),
+        VkFrontFace(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
         VkPipelineRasterizationStateCreateInfo,
-        VkPipelineRasterizationStateCreateInfo',
         VkPipelineRasterizationStateRasterizationOrderAMD,
-        VkPipelineRasterizationStateRasterizationOrderAMD',
-        module Graphics.Vulkan.Types.Enum.PolygonMode,
-        module Graphics.Vulkan.Types.Enum.RasterizationOrderAMD,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION,
+        VkPolygonMode(..), VkRasterizationOrderAMD(..),
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION,
         pattern VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION,
         VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME,
         pattern VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME,
@@ -45,9 +72,7 @@
 import Graphics.Vulkan.Types.Enum.RasterizationOrderAMD
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Struct.Pipeline            (VkPipelineRasterizationStateCreateInfo,
-                                                         VkPipelineRasterizationStateCreateInfo',
-                                                         VkPipelineRasterizationStateRasterizationOrderAMD,
-                                                         VkPipelineRasterizationStateRasterizationOrderAMD')
+                                                         VkPipelineRasterizationStateRasterizationOrderAMD)
 
 pattern VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -60,8 +85,9 @@
 
 pattern VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME <-
         (is_VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME -> True)
-  where VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME
-          = _VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME
+  where
+    VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME
+      = _VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_ballot.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_ballot.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_ballot.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_ballot.hs
@@ -35,8 +35,9 @@
 
 pattern VK_AMD_SHADER_BALLOT_EXTENSION_NAME <-
         (is_VK_AMD_SHADER_BALLOT_EXTENSION_NAME -> True)
-  where VK_AMD_SHADER_BALLOT_EXTENSION_NAME
-          = _VK_AMD_SHADER_BALLOT_EXTENSION_NAME
+  where
+    VK_AMD_SHADER_BALLOT_EXTENSION_NAME
+      = _VK_AMD_SHADER_BALLOT_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_SHADER_BALLOT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_core_properties.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_core_properties.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_core_properties.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_core_properties.hs
@@ -22,18 +22,13 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes, VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2',
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkPhysicalDeviceLimits,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
         VkPhysicalDeviceShaderCorePropertiesAMD,
-        VkPhysicalDeviceShaderCorePropertiesAMD',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType(..),
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION,
         pattern VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION,
@@ -48,15 +43,10 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Struct.PhysicalDevice   (VkPhysicalDeviceLimits,
-                                                      VkPhysicalDeviceLimits',
                                                       VkPhysicalDeviceProperties,
-                                                      VkPhysicalDeviceProperties',
                                                       VkPhysicalDeviceProperties2,
-                                                      VkPhysicalDeviceProperties2',
                                                       VkPhysicalDeviceShaderCorePropertiesAMD,
-                                                      VkPhysicalDeviceShaderCorePropertiesAMD',
-                                                      VkPhysicalDeviceSparseProperties,
-                                                      VkPhysicalDeviceSparseProperties')
+                                                      VkPhysicalDeviceSparseProperties)
 
 pattern VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -69,8 +59,9 @@
 
 pattern VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME <-
         (is_VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME -> True)
-  where VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME
-          = _VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME
+  where
+    VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME
+      = _VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_explicit_vertex_parameter.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_explicit_vertex_parameter.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_explicit_vertex_parameter.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_explicit_vertex_parameter.hs
@@ -37,8 +37,9 @@
 
 pattern VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME <-
         (is_VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME -> True)
-  where VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
-          = _VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
+  where
+    VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
+      = _VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME
            #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_fragment_mask.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_fragment_mask.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_fragment_mask.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_fragment_mask.hs
@@ -36,8 +36,9 @@
 
 pattern VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME <-
         (is_VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME -> True)
-  where VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
-          = _VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
+  where
+    VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
+      = _VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_image_load_store_lod.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_image_load_store_lod.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_image_load_store_lod.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_image_load_store_lod.hs
@@ -37,8 +37,9 @@
 
 pattern VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME <-
         (is_VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME -> True)
-  where VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
-          = _VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
+  where
+    VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
+      = _VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_info.hs
@@ -23,15 +23,38 @@
         -- type: @device@
         --
         -- Extension number: @43@
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Shader, VkShaderResourceUsageAMD,
-        VkShaderResourceUsageAMD', VkShaderStatisticsInfoAMD,
-        VkShaderStatisticsInfoAMD', -- > #include "vk_platform.h"
-                                    VkGetShaderInfoAMD,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkShaderInfoTypeAMD(..),
+        VkShaderStageBitmask(..), VkShaderStageFlagBits(),
+        VkShaderStageFlags(), VkShaderResourceUsageAMD,
+        VkShaderStatisticsInfoAMD, -- > #include "vk_platform.h"
+                                   VkGetShaderInfoAMD,
         pattern VkGetShaderInfoAMD, HS_vkGetShaderInfoAMD,
-        PFN_vkGetShaderInfoAMD, module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
+        PFN_vkGetShaderInfoAMD, VkResult(..), VkBuffer, VkBufferView,
+        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_AMD_SHADER_INFO_SPEC_VERSION,
         pattern VK_AMD_SHADER_INFO_SPEC_VERSION,
         VK_AMD_SHADER_INFO_EXTENSION_NAME,
@@ -45,14 +68,13 @@
 import Graphics.Vulkan.Types.Enum.Shader
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Struct.Shader (VkShaderResourceUsageAMD,
-                                            VkShaderResourceUsageAMD',
-                                            VkShaderStatisticsInfoAMD,
-                                            VkShaderStatisticsInfoAMD')
+                                            VkShaderStatisticsInfoAMD)
 
 pattern VkGetShaderInfoAMD :: CString
 
 pattern VkGetShaderInfoAMD <- (is_VkGetShaderInfoAMD -> True)
-  where VkGetShaderInfoAMD = _VkGetShaderInfoAMD
+  where
+    VkGetShaderInfoAMD = _VkGetShaderInfoAMD
 
 {-# INLINE _VkGetShaderInfoAMD #-}
 
@@ -102,16 +124,16 @@
                PFN_vkGetShaderInfoAMD -> HS_vkGetShaderInfoAMD
 
 instance VulkanProc "vkGetShaderInfoAMD" where
-        type VkProcType "vkGetShaderInfoAMD" = HS_vkGetShaderInfoAMD
-        vkProcSymbol = _VkGetShaderInfoAMD
+    type VkProcType "vkGetShaderInfoAMD" = HS_vkGetShaderInfoAMD
+    vkProcSymbol = _VkGetShaderInfoAMD
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetShaderInfoAMDUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetShaderInfoAMDUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetShaderInfoAMDSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetShaderInfoAMDSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_AMD_SHADER_INFO_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -123,8 +145,9 @@
 
 pattern VK_AMD_SHADER_INFO_EXTENSION_NAME <-
         (is_VK_AMD_SHADER_INFO_EXTENSION_NAME -> True)
-  where VK_AMD_SHADER_INFO_EXTENSION_NAME
-          = _VK_AMD_SHADER_INFO_EXTENSION_NAME
+  where
+    VK_AMD_SHADER_INFO_EXTENSION_NAME
+      = _VK_AMD_SHADER_INFO_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_SHADER_INFO_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_trinary_minmax.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_trinary_minmax.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_trinary_minmax.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_shader_trinary_minmax.hs
@@ -36,8 +36,9 @@
 
 pattern VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME <-
         (is_VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME -> True)
-  where VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
-          = _VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
+  where
+    VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
+      = _VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_AMD_texture_gather_bias_lod.hs b/src-gen/Graphics/Vulkan/Ext/VK_AMD_texture_gather_bias_lod.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_AMD_texture_gather_bias_lod.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_AMD_texture_gather_bias_lod.hs
@@ -5,30 +5,11 @@
 {-# LANGUAGE Strict          #-}
 {-# LANGUAGE ViewPatterns    #-}
 module Graphics.Vulkan.Ext.VK_AMD_texture_gather_bias_lod
-       (-- * Vulkan extension: @VK_AMD_texture_gather_bias_lod@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Rex Xu @amdrexu@
-        --
-        -- author: @AMD@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @42@
-        --
-        -- Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Types.BaseTypes, VkExtent3D, VkExtent3D',
-        VkImageFormatProperties, VkImageFormatProperties',
-        VkImageFormatProperties2, VkImageFormatProperties2',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkExtent3D, VkImageFormatProperties, VkImageFormatProperties2,
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkStructureType(..),
         VkTextureLODGatherFormatPropertiesAMD,
-        VkTextureLODGatherFormatPropertiesAMD',
         -- > #include "vk_platform.h"
         VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION,
         pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION,
@@ -41,14 +22,10 @@
 import Graphics.Vulkan.Types.BaseTypes
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.Extent                              (VkExtent3D,
-                                                                         VkExtent3D')
+import Graphics.Vulkan.Types.Struct.Extent                              (VkExtent3D)
 import Graphics.Vulkan.Types.Struct.Image                               (VkImageFormatProperties,
-                                                                         VkImageFormatProperties',
-                                                                         VkImageFormatProperties2,
-                                                                         VkImageFormatProperties2')
-import Graphics.Vulkan.Types.Struct.TextureLODGatherFormatPropertiesAMD (VkTextureLODGatherFormatPropertiesAMD,
-                                                                         VkTextureLODGatherFormatPropertiesAMD')
+                                                                         VkImageFormatProperties2)
+import Graphics.Vulkan.Types.Struct.TextureLODGatherFormatPropertiesAMD (VkTextureLODGatherFormatPropertiesAMD)
 
 pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -61,8 +38,9 @@
 
 pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME <-
         (is_VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME -> True)
-  where VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
-          = _VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
+  where
+    VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
+      = _VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME
 
 {-# INLINE _VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs b/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_ANDROID_external_memory_android_hardware_buffer.hs
@@ -30,32 +30,29 @@
 
         -- ** Required extensions: 'VK_KHR_sampler_ycbcr_conversion', 'VK_KHR_external_memory', 'VK_EXT_queue_family_foreign'.
         VkAndroidHardwareBufferFormatPropertiesANDROID,
-        VkAndroidHardwareBufferFormatPropertiesANDROID',
         VkAndroidHardwareBufferPropertiesANDROID,
-        VkAndroidHardwareBufferPropertiesANDROID',
-        VkAndroidHardwareBufferUsageANDROID,
-        VkAndroidHardwareBufferUsageANDROID',
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.ChromaLocation,
-        VkComponentMapping, VkComponentMapping',
-        module Graphics.Vulkan.Types.Enum.ComponentSwizzle, VkExtent3D,
-        VkExtent3D', VkExternalFormatANDROID, VkExternalFormatANDROID',
-        module Graphics.Vulkan.Types.Enum.Filter,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image, VkImageCreateInfo,
-        VkImageCreateInfo', VkImageFormatProperties,
-        VkImageFormatProperties', VkImageFormatProperties2,
-        VkImageFormatProperties2',
-        VkImportAndroidHardwareBufferInfoANDROID,
-        VkImportAndroidHardwareBufferInfoANDROID', VkMemoryAllocateInfo,
-        VkMemoryAllocateInfo', VkMemoryGetAndroidHardwareBufferInfoANDROID,
-        VkMemoryGetAndroidHardwareBufferInfoANDROID',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        VkSamplerYcbcrConversionCreateInfo,
-        VkSamplerYcbcrConversionCreateInfo',
-        module Graphics.Vulkan.Types.Enum.Sampler,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkAndroidHardwareBufferUsageANDROID, VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkChromaLocation(..), VkChromaLocationKHR(..), VkComponentMapping,
+        VkComponentSwizzle(..), VkExtent3D, VkExternalFormatANDROID,
+        VkFilter(..), VkFormat(..), VkFormatFeatureBitmask(..),
+        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkImageCreateInfo,
+        VkImageFormatProperties, VkImageFormatProperties2,
+        VkImportAndroidHardwareBufferInfoANDROID, VkMemoryAllocateInfo,
+        VkMemoryGetAndroidHardwareBufferInfoANDROID,
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkSamplerYcbcrConversionCreateInfo,
+        VkSamplerAddressMode(..), VkSamplerMipmapMode(..),
+        VkSamplerReductionModeEXT(..), VkSamplerYcbcrModelConversion(..),
+        VkSamplerYcbcrRange(..), VkSamplerCreateFlagBits(..),
+        VkSamplerYcbcrModelConversionKHR(..), VkSamplerYcbcrRangeKHR(..),
+        VkSharingMode(..), VkStructureType(..),
         -- > #include "vk_platform.h"
         VkGetAndroidHardwareBufferPropertiesANDROID,
         pattern VkGetAndroidHardwareBufferPropertiesANDROID,
@@ -65,10 +62,32 @@
         pattern VkGetMemoryAndroidHardwareBufferANDROID,
         HS_vkGetMemoryAndroidHardwareBufferANDROID,
         PFN_vkGetMemoryAndroidHardwareBufferANDROID,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.PlatformAndroidKhr,
+        module Graphics.Vulkan.Marshal, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAndroidSurfaceCreateInfoKHR,
         VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION,
         pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION,
         VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME,
@@ -88,8 +107,7 @@
 import Graphics.Vulkan.Types.Defines                   (AHardwareBuffer)
 import Graphics.Vulkan.Types.Enum.ChromaLocation
 import Graphics.Vulkan.Types.Enum.ComponentSwizzle
-import Graphics.Vulkan.Types.Enum.External             (VkExternalMemoryHandleTypeBitmask (..),
-                                                        VkExternalMemoryHandleTypeFlagBits)
+import Graphics.Vulkan.Types.Enum.External             (VkExternalMemoryHandleTypeBitmask (..))
 import Graphics.Vulkan.Types.Enum.Filter
 import Graphics.Vulkan.Types.Enum.Format
 import Graphics.Vulkan.Types.Enum.Image
@@ -99,27 +117,22 @@
 import Graphics.Vulkan.Types.Enum.SharingMode
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.ComponentMapping   (VkComponentMapping,
-                                                        VkComponentMapping')
-import Graphics.Vulkan.Types.Struct.Extent             (VkExtent3D, VkExtent3D')
+import Graphics.Vulkan.Types.Struct.ComponentMapping   (VkComponentMapping)
+import Graphics.Vulkan.Types.Struct.Extent             (VkExtent3D)
 import Graphics.Vulkan.Types.Struct.Image              (VkImageCreateInfo,
-                                                        VkImageCreateInfo',
                                                         VkImageFormatProperties,
-                                                        VkImageFormatProperties',
-                                                        VkImageFormatProperties2,
-                                                        VkImageFormatProperties2')
-import Graphics.Vulkan.Types.Struct.Memory             (VkMemoryAllocateInfo,
-                                                        VkMemoryAllocateInfo')
+                                                        VkImageFormatProperties2)
+import Graphics.Vulkan.Types.Struct.Memory             (VkMemoryAllocateInfo)
 import Graphics.Vulkan.Types.Struct.PlatformAndroidKhr
-import Graphics.Vulkan.Types.Struct.Sampler            (VkSamplerYcbcrConversionCreateInfo,
-                                                        VkSamplerYcbcrConversionCreateInfo')
+import Graphics.Vulkan.Types.Struct.Sampler            (VkSamplerYcbcrConversionCreateInfo)
 
 pattern VkGetAndroidHardwareBufferPropertiesANDROID :: CString
 
 pattern VkGetAndroidHardwareBufferPropertiesANDROID <-
         (is_VkGetAndroidHardwareBufferPropertiesANDROID -> True)
-  where VkGetAndroidHardwareBufferPropertiesANDROID
-          = _VkGetAndroidHardwareBufferPropertiesANDROID
+  where
+    VkGetAndroidHardwareBufferPropertiesANDROID
+      = _VkGetAndroidHardwareBufferPropertiesANDROID
 
 {-# INLINE _VkGetAndroidHardwareBufferPropertiesANDROID #-}
 
@@ -171,26 +184,27 @@
 
 instance VulkanProc "vkGetAndroidHardwareBufferPropertiesANDROID"
          where
-        type VkProcType "vkGetAndroidHardwareBufferPropertiesANDROID" =
-             HS_vkGetAndroidHardwareBufferPropertiesANDROID
-        vkProcSymbol = _VkGetAndroidHardwareBufferPropertiesANDROID
+    type VkProcType "vkGetAndroidHardwareBufferPropertiesANDROID" =
+         HS_vkGetAndroidHardwareBufferPropertiesANDROID
+    vkProcSymbol = _VkGetAndroidHardwareBufferPropertiesANDROID
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetAndroidHardwareBufferPropertiesANDROIDUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetAndroidHardwareBufferPropertiesANDROIDUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetAndroidHardwareBufferPropertiesANDROIDSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetAndroidHardwareBufferPropertiesANDROIDSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetMemoryAndroidHardwareBufferANDROID :: CString
 
 pattern VkGetMemoryAndroidHardwareBufferANDROID <-
         (is_VkGetMemoryAndroidHardwareBufferANDROID -> True)
-  where VkGetMemoryAndroidHardwareBufferANDROID
-          = _VkGetMemoryAndroidHardwareBufferANDROID
+  where
+    VkGetMemoryAndroidHardwareBufferANDROID
+      = _VkGetMemoryAndroidHardwareBufferANDROID
 
 {-# INLINE _VkGetMemoryAndroidHardwareBufferANDROID #-}
 
@@ -240,19 +254,19 @@
                  HS_vkGetMemoryAndroidHardwareBufferANDROID
 
 instance VulkanProc "vkGetMemoryAndroidHardwareBufferANDROID" where
-        type VkProcType "vkGetMemoryAndroidHardwareBufferANDROID" =
-             HS_vkGetMemoryAndroidHardwareBufferANDROID
-        vkProcSymbol = _VkGetMemoryAndroidHardwareBufferANDROID
+    type VkProcType "vkGetMemoryAndroidHardwareBufferANDROID" =
+         HS_vkGetMemoryAndroidHardwareBufferANDROID
+    vkProcSymbol = _VkGetMemoryAndroidHardwareBufferANDROID
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetMemoryAndroidHardwareBufferANDROIDUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetMemoryAndroidHardwareBufferANDROIDUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetMemoryAndroidHardwareBufferANDROIDSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetMemoryAndroidHardwareBufferANDROIDSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION
         :: (Num a, Eq a) => a
@@ -270,8 +284,9 @@
         <-
         (is_VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
            -> True)
-  where VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
-          = _VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+  where
+    VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
+      = _VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
 
 {-# INLINE _VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
            #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_acquire_xlib_display.hs
@@ -33,8 +33,31 @@
         HS_vkAcquireXlibDisplayEXT, PFN_vkAcquireXlibDisplayEXT,
         VkGetRandROutputDisplayEXT, pattern VkGetRandROutputDisplayEXT,
         HS_vkGetRandROutputDisplayEXT, PFN_vkGetRandROutputDisplayEXT,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
+        VkResult(..), VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION,
         pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION,
         VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME,
@@ -51,7 +74,8 @@
 
 pattern VkAcquireXlibDisplayEXT <-
         (is_VkAcquireXlibDisplayEXT -> True)
-  where VkAcquireXlibDisplayEXT = _VkAcquireXlibDisplayEXT
+  where
+    VkAcquireXlibDisplayEXT = _VkAcquireXlibDisplayEXT
 
 {-# INLINE _VkAcquireXlibDisplayEXT #-}
 
@@ -95,23 +119,24 @@
                PFN_vkAcquireXlibDisplayEXT -> HS_vkAcquireXlibDisplayEXT
 
 instance VulkanProc "vkAcquireXlibDisplayEXT" where
-        type VkProcType "vkAcquireXlibDisplayEXT" =
-             HS_vkAcquireXlibDisplayEXT
-        vkProcSymbol = _VkAcquireXlibDisplayEXT
+    type VkProcType "vkAcquireXlibDisplayEXT" =
+         HS_vkAcquireXlibDisplayEXT
+    vkProcSymbol = _VkAcquireXlibDisplayEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkAcquireXlibDisplayEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkAcquireXlibDisplayEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkAcquireXlibDisplayEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkAcquireXlibDisplayEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetRandROutputDisplayEXT :: CString
 
 pattern VkGetRandROutputDisplayEXT <-
         (is_VkGetRandROutputDisplayEXT -> True)
-  where VkGetRandROutputDisplayEXT = _VkGetRandROutputDisplayEXT
+  where
+    VkGetRandROutputDisplayEXT = _VkGetRandROutputDisplayEXT
 
 {-# INLINE _VkGetRandROutputDisplayEXT #-}
 
@@ -156,17 +181,17 @@
                PFN_vkGetRandROutputDisplayEXT -> HS_vkGetRandROutputDisplayEXT
 
 instance VulkanProc "vkGetRandROutputDisplayEXT" where
-        type VkProcType "vkGetRandROutputDisplayEXT" =
-             HS_vkGetRandROutputDisplayEXT
-        vkProcSymbol = _VkGetRandROutputDisplayEXT
+    type VkProcType "vkGetRandROutputDisplayEXT" =
+         HS_vkGetRandROutputDisplayEXT
+    vkProcSymbol = _VkGetRandROutputDisplayEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetRandROutputDisplayEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetRandROutputDisplayEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetRandROutputDisplayEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetRandROutputDisplayEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -179,8 +204,9 @@
 
 pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME <-
         (is_VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME -> True)
-  where VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
-          = _VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
+  where
+    VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
+      = _VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_blend_operation_advanced.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_blend_operation_advanced.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_blend_operation_advanced.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_blend_operation_advanced.hs
@@ -17,34 +17,69 @@
         -- type: @device@
         --
         -- Extension number: @149@
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Blend,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Bitmasks, VkDeviceCreateInfo,
-        VkDeviceCreateInfo', module Graphics.Vulkan.Types.Enum.Device,
-        VkDeviceQueueCreateInfo, VkDeviceQueueCreateInfo',
-        module Graphics.Vulkan.Types.Enum.LogicOp,
+        module Graphics.Vulkan.Marshal, VkBlendFactor(..), VkBlendOp(..),
+        VkBlendOverlapEXT(..), VkBool32(..), VkDeviceSize(..), VkFlags(..),
+        VkSampleMask(..), VkColorComponentBitmask(..), VkColorSpaceKHR(..),
+        VkColorComponentFlagBits(), VkColorComponentFlags(),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkDeviceCreateInfo,
+        VkDeviceEventTypeEXT(..), VkDeviceGroupPresentModeBitmaskKHR(..),
+        VkDeviceCreateFlagBits(..), VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkDeviceQueueCreateInfo, VkLogicOp(..),
         VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
-        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',
         VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
-        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT',
-        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures',
-        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2',
-        VkPhysicalDeviceLimits, VkPhysicalDeviceLimits',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
+        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures2,
+        VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
+        VkPhysicalDeviceProperties2, VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceType(..),
         VkPipelineColorBlendAdvancedStateCreateInfoEXT,
-        VkPipelineColorBlendAdvancedStateCreateInfoEXT',
         VkPipelineColorBlendAttachmentState,
-        VkPipelineColorBlendAttachmentState',
-        VkPipelineColorBlendStateCreateInfo,
-        VkPipelineColorBlendStateCreateInfo',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPipelineColorBlendStateCreateInfo, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION,
         pattern VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION,
@@ -91,8 +126,7 @@
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Types.BaseTypes
 import Graphics.Vulkan.Types.Bitmasks
-import Graphics.Vulkan.Types.Enum.AccessFlags              (VkAccessBitmask (..),
-                                                            VkAccessFlagBits)
+import Graphics.Vulkan.Types.Enum.AccessFlags              (VkAccessBitmask (..))
 import Graphics.Vulkan.Types.Enum.Blend
 import Graphics.Vulkan.Types.Enum.Color
 import Graphics.Vulkan.Types.Enum.Device
@@ -100,32 +134,18 @@
 import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.Device                 (VkDeviceCreateInfo,
-                                                            VkDeviceCreateInfo',
-                                                            VkDeviceQueueCreateInfo,
-                                                            VkDeviceQueueCreateInfo')
+import Graphics.Vulkan.Types.Struct.Device                 (VkDeviceCreateInfo, VkDeviceQueueCreateInfo)
 import Graphics.Vulkan.Types.Struct.PhysicalDevice         (VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
-                                                            VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',
                                                             VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
-                                                            VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT',
                                                             VkPhysicalDeviceFeatures2,
-                                                            VkPhysicalDeviceFeatures2',
                                                             VkPhysicalDeviceLimits,
-                                                            VkPhysicalDeviceLimits',
                                                             VkPhysicalDeviceProperties,
-                                                            VkPhysicalDeviceProperties',
                                                             VkPhysicalDeviceProperties2,
-                                                            VkPhysicalDeviceProperties2',
-                                                            VkPhysicalDeviceSparseProperties,
-                                                            VkPhysicalDeviceSparseProperties')
-import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures,
-                                                            VkPhysicalDeviceFeatures')
+                                                            VkPhysicalDeviceSparseProperties)
+import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
 import Graphics.Vulkan.Types.Struct.Pipeline               (VkPipelineColorBlendAdvancedStateCreateInfoEXT,
-                                                            VkPipelineColorBlendAdvancedStateCreateInfoEXT',
                                                             VkPipelineColorBlendAttachmentState,
-                                                            VkPipelineColorBlendAttachmentState',
-                                                            VkPipelineColorBlendStateCreateInfo,
-                                                            VkPipelineColorBlendStateCreateInfo')
+                                                            VkPipelineColorBlendStateCreateInfo)
 
 pattern VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -138,8 +158,9 @@
 
 pattern VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME <-
         (is_VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME -> True)
-  where VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME
-          = _VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME
+  where
+    VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME
+      = _VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_conservative_rasterization.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_conservative_rasterization.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_conservative_rasterization.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_conservative_rasterization.hs
@@ -22,27 +22,62 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.ConservativeRasterizationModeEXT,
-        module Graphics.Vulkan.Types.Enum.CullModeFlags,
-        module Graphics.Vulkan.Types.Enum.FrontFace,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..),
+        VkConservativeRasterizationModeEXT(..), VkCullModeBitmask(..),
+        VkCullModeFlagBits(), VkCullModeFlags(), VkFrontFace(..),
         VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
-        VkPhysicalDeviceConservativeRasterizationPropertiesEXT',
-        VkPhysicalDeviceLimits, VkPhysicalDeviceLimits',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Bitmasks,
+        VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
+        VkPhysicalDeviceProperties2, VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceType(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
         VkPipelineRasterizationConservativeStateCreateInfoEXT,
-        VkPipelineRasterizationConservativeStateCreateInfoEXT',
-        VkPipelineRasterizationStateCreateInfo,
-        VkPipelineRasterizationStateCreateInfo',
-        module Graphics.Vulkan.Types.Enum.PolygonMode,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPipelineRasterizationStateCreateInfo, VkPolygonMode(..),
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION,
         pattern VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION,
@@ -63,19 +98,12 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Struct.PhysicalDevice                 (VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
-                                                                    VkPhysicalDeviceConservativeRasterizationPropertiesEXT',
                                                                     VkPhysicalDeviceLimits,
-                                                                    VkPhysicalDeviceLimits',
                                                                     VkPhysicalDeviceProperties,
-                                                                    VkPhysicalDeviceProperties',
                                                                     VkPhysicalDeviceProperties2,
-                                                                    VkPhysicalDeviceProperties2',
-                                                                    VkPhysicalDeviceSparseProperties,
-                                                                    VkPhysicalDeviceSparseProperties')
+                                                                    VkPhysicalDeviceSparseProperties)
 import Graphics.Vulkan.Types.Struct.Pipeline                       (VkPipelineRasterizationConservativeStateCreateInfoEXT,
-                                                                    VkPipelineRasterizationConservativeStateCreateInfoEXT',
-                                                                    VkPipelineRasterizationStateCreateInfo,
-                                                                    VkPipelineRasterizationStateCreateInfo')
+                                                                    VkPipelineRasterizationStateCreateInfo)
 
 pattern VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -88,8 +116,9 @@
 
 pattern VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME <-
         (is_VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME -> True)
-  where VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
-          = _VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
+  where
+    VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
+      = _VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_marker.hs
@@ -28,11 +28,14 @@
 
         -- ** Required extensions: 'VK_EXT_debug_report'.
         module Graphics.Vulkan.Marshal, VkDebugMarkerMarkerInfoEXT,
-        VkDebugMarkerMarkerInfoEXT', VkDebugMarkerObjectNameInfoEXT,
-        VkDebugMarkerObjectNameInfoEXT', VkDebugMarkerObjectTagInfoEXT,
-        VkDebugMarkerObjectTagInfoEXT',
-        module Graphics.Vulkan.Types.Enum.Debug,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkDebugMarkerObjectNameInfoEXT, VkDebugMarkerObjectTagInfoEXT,
+        VkDebugReportBitmaskEXT(..), VkDebugReportObjectTypeEXT(..),
+        VkDebugUtilsMessageSeverityBitmaskEXT(..),
+        VkDebugUtilsMessageTypeBitmaskEXT(..), VkDebugReportFlagBitsEXT(),
+        VkDebugReportFlagsEXT(), VkDebugUtilsMessageSeverityFlagBitsEXT(),
+        VkDebugUtilsMessageSeverityFlagsEXT(),
+        VkDebugUtilsMessageTypeFlagBitsEXT(),
+        VkDebugUtilsMessageTypeFlagsEXT(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VkDebugMarkerSetObjectTagEXT, pattern VkDebugMarkerSetObjectTagEXT,
         HS_vkDebugMarkerSetObjectTagEXT, PFN_vkDebugMarkerSetObjectTagEXT,
@@ -45,10 +48,32 @@
         pattern VkCmdDebugMarkerEndEXT, HS_vkCmdDebugMarkerEndEXT,
         PFN_vkCmdDebugMarkerEndEXT, VkCmdDebugMarkerInsertEXT,
         pattern VkCmdDebugMarkerInsertEXT, HS_vkCmdDebugMarkerInsertEXT,
-        PFN_vkCmdDebugMarkerInsertEXT,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Debug,
+        PFN_vkCmdDebugMarkerInsertEXT, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkDebugReportCallbackCreateInfoEXT, VkDebugUtilsObjectTagInfoEXT,
         VK_EXT_DEBUG_MARKER_SPEC_VERSION,
         pattern VK_EXT_DEBUG_MARKER_SPEC_VERSION,
         VK_EXT_DEBUG_MARKER_EXTENSION_NAME,
@@ -70,7 +95,8 @@
 
 pattern VkDebugMarkerSetObjectTagEXT <-
         (is_VkDebugMarkerSetObjectTagEXT -> True)
-  where VkDebugMarkerSetObjectTagEXT = _VkDebugMarkerSetObjectTagEXT
+  where
+    VkDebugMarkerSetObjectTagEXT = _VkDebugMarkerSetObjectTagEXT
 
 {-# INLINE _VkDebugMarkerSetObjectTagEXT #-}
 
@@ -113,24 +139,24 @@
                PFN_vkDebugMarkerSetObjectTagEXT -> HS_vkDebugMarkerSetObjectTagEXT
 
 instance VulkanProc "vkDebugMarkerSetObjectTagEXT" where
-        type VkProcType "vkDebugMarkerSetObjectTagEXT" =
-             HS_vkDebugMarkerSetObjectTagEXT
-        vkProcSymbol = _VkDebugMarkerSetObjectTagEXT
+    type VkProcType "vkDebugMarkerSetObjectTagEXT" =
+         HS_vkDebugMarkerSetObjectTagEXT
+    vkProcSymbol = _VkDebugMarkerSetObjectTagEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDebugMarkerSetObjectTagEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDebugMarkerSetObjectTagEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDebugMarkerSetObjectTagEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDebugMarkerSetObjectTagEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDebugMarkerSetObjectNameEXT :: CString
 
 pattern VkDebugMarkerSetObjectNameEXT <-
         (is_VkDebugMarkerSetObjectNameEXT -> True)
-  where VkDebugMarkerSetObjectNameEXT
-          = _VkDebugMarkerSetObjectNameEXT
+  where
+    VkDebugMarkerSetObjectNameEXT = _VkDebugMarkerSetObjectNameEXT
 
 {-# INLINE _VkDebugMarkerSetObjectNameEXT #-}
 
@@ -176,23 +202,24 @@
                  HS_vkDebugMarkerSetObjectNameEXT
 
 instance VulkanProc "vkDebugMarkerSetObjectNameEXT" where
-        type VkProcType "vkDebugMarkerSetObjectNameEXT" =
-             HS_vkDebugMarkerSetObjectNameEXT
-        vkProcSymbol = _VkDebugMarkerSetObjectNameEXT
+    type VkProcType "vkDebugMarkerSetObjectNameEXT" =
+         HS_vkDebugMarkerSetObjectNameEXT
+    vkProcSymbol = _VkDebugMarkerSetObjectNameEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDebugMarkerSetObjectNameEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDebugMarkerSetObjectNameEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDebugMarkerSetObjectNameEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDebugMarkerSetObjectNameEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdDebugMarkerBeginEXT :: CString
 
 pattern VkCmdDebugMarkerBeginEXT <-
         (is_VkCmdDebugMarkerBeginEXT -> True)
-  where VkCmdDebugMarkerBeginEXT = _VkCmdDebugMarkerBeginEXT
+  where
+    VkCmdDebugMarkerBeginEXT = _VkCmdDebugMarkerBeginEXT
 
 {-# INLINE _VkCmdDebugMarkerBeginEXT #-}
 
@@ -234,23 +261,24 @@
                PFN_vkCmdDebugMarkerBeginEXT -> HS_vkCmdDebugMarkerBeginEXT
 
 instance VulkanProc "vkCmdDebugMarkerBeginEXT" where
-        type VkProcType "vkCmdDebugMarkerBeginEXT" =
-             HS_vkCmdDebugMarkerBeginEXT
-        vkProcSymbol = _VkCmdDebugMarkerBeginEXT
+    type VkProcType "vkCmdDebugMarkerBeginEXT" =
+         HS_vkCmdDebugMarkerBeginEXT
+    vkProcSymbol = _VkCmdDebugMarkerBeginEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerBeginEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerBeginEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerBeginEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerBeginEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdDebugMarkerEndEXT :: CString
 
 pattern VkCmdDebugMarkerEndEXT <-
         (is_VkCmdDebugMarkerEndEXT -> True)
-  where VkCmdDebugMarkerEndEXT = _VkCmdDebugMarkerEndEXT
+  where
+    VkCmdDebugMarkerEndEXT = _VkCmdDebugMarkerEndEXT
 
 {-# INLINE _VkCmdDebugMarkerEndEXT #-}
 
@@ -288,23 +316,24 @@
                PFN_vkCmdDebugMarkerEndEXT -> HS_vkCmdDebugMarkerEndEXT
 
 instance VulkanProc "vkCmdDebugMarkerEndEXT" where
-        type VkProcType "vkCmdDebugMarkerEndEXT" =
-             HS_vkCmdDebugMarkerEndEXT
-        vkProcSymbol = _VkCmdDebugMarkerEndEXT
+    type VkProcType "vkCmdDebugMarkerEndEXT" =
+         HS_vkCmdDebugMarkerEndEXT
+    vkProcSymbol = _VkCmdDebugMarkerEndEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerEndEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerEndEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerEndEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerEndEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdDebugMarkerInsertEXT :: CString
 
 pattern VkCmdDebugMarkerInsertEXT <-
         (is_VkCmdDebugMarkerInsertEXT -> True)
-  where VkCmdDebugMarkerInsertEXT = _VkCmdDebugMarkerInsertEXT
+  where
+    VkCmdDebugMarkerInsertEXT = _VkCmdDebugMarkerInsertEXT
 
 {-# INLINE _VkCmdDebugMarkerInsertEXT #-}
 
@@ -346,17 +375,17 @@
                PFN_vkCmdDebugMarkerInsertEXT -> HS_vkCmdDebugMarkerInsertEXT
 
 instance VulkanProc "vkCmdDebugMarkerInsertEXT" where
-        type VkProcType "vkCmdDebugMarkerInsertEXT" =
-             HS_vkCmdDebugMarkerInsertEXT
-        vkProcSymbol = _VkCmdDebugMarkerInsertEXT
+    type VkProcType "vkCmdDebugMarkerInsertEXT" =
+         HS_vkCmdDebugMarkerInsertEXT
+    vkProcSymbol = _VkCmdDebugMarkerInsertEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerInsertEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDebugMarkerInsertEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerInsertEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDebugMarkerInsertEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DEBUG_MARKER_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -368,8 +397,9 @@
 
 pattern VK_EXT_DEBUG_MARKER_EXTENSION_NAME <-
         (is_VK_EXT_DEBUG_MARKER_EXTENSION_NAME -> True)
-  where VK_EXT_DEBUG_MARKER_EXTENSION_NAME
-          = _VK_EXT_DEBUG_MARKER_EXTENSION_NAME
+  where
+    VK_EXT_DEBUG_MARKER_EXTENSION_NAME
+      = _VK_EXT_DEBUG_MARKER_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DEBUG_MARKER_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_report.hs
@@ -24,16 +24,62 @@
         -- type: @instance@
         --
         -- Extension number: @12@
-        module Graphics.Vulkan.Marshal, VkApplicationInfo,
-        VkApplicationInfo', module Graphics.Vulkan.Types.BaseTypes,
-        VkDebugReportCallbackCreateInfoEXT,
-        VkDebugReportCallbackCreateInfoEXT',
-        module Graphics.Vulkan.Types.Enum.Debug,
-        module Graphics.Vulkan.Types.Bitmasks, VkInstanceCreateInfo,
-        VkInstanceCreateInfo',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkCreateDebugReportCallbackEXT,
+        module Graphics.Vulkan.Marshal, VkApplicationInfo, VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkDebugReportCallbackCreateInfoEXT, VkDebugReportBitmaskEXT(..),
+        VkDebugReportObjectTypeEXT(..),
+        VkDebugUtilsMessageSeverityBitmaskEXT(..),
+        VkDebugUtilsMessageTypeBitmaskEXT(..), VkDebugReportFlagBitsEXT(),
+        VkDebugReportFlagsEXT(), VkDebugUtilsMessageSeverityFlagBitsEXT(),
+        VkDebugUtilsMessageSeverityFlagsEXT(),
+        VkDebugUtilsMessageTypeFlagBitsEXT(),
+        VkDebugUtilsMessageTypeFlagsEXT(),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkInstanceCreateInfo,
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VkCreateDebugReportCallbackEXT,
         pattern VkCreateDebugReportCallbackEXT,
         HS_vkCreateDebugReportCallbackEXT,
         PFN_vkCreateDebugReportCallbackEXT,
@@ -42,17 +88,52 @@
         HS_vkDestroyDebugReportCallbackEXT,
         PFN_vkDestroyDebugReportCallbackEXT, VkDebugReportMessageEXT,
         pattern VkDebugReportMessageEXT, HS_vkDebugReportMessageEXT,
-        PFN_vkDebugReportMessageEXT,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.ApplicationInfo,
-        module Graphics.Vulkan.Types.Struct.Debug,
-        module Graphics.Vulkan.Types.Struct.InstanceCreateInfo,
-        VK_EXT_DEBUG_REPORT_SPEC_VERSION,
+        PFN_vkDebugReportMessageEXT, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkDebugMarkerMarkerInfoEXT,
+        VkDebugMarkerObjectNameInfoEXT, VkDebugMarkerObjectTagInfoEXT,
+        VkDebugUtilsObjectTagInfoEXT, VK_EXT_DEBUG_REPORT_SPEC_VERSION,
         pattern VK_EXT_DEBUG_REPORT_SPEC_VERSION,
         VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
         pattern VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
@@ -86,8 +167,8 @@
 
 pattern VkCreateDebugReportCallbackEXT <-
         (is_VkCreateDebugReportCallbackEXT -> True)
-  where VkCreateDebugReportCallbackEXT
-          = _VkCreateDebugReportCallbackEXT
+  where
+    VkCreateDebugReportCallbackEXT = _VkCreateDebugReportCallbackEXT
 
 {-# INLINE _VkCreateDebugReportCallbackEXT #-}
 
@@ -140,24 +221,24 @@
                  HS_vkCreateDebugReportCallbackEXT
 
 instance VulkanProc "vkCreateDebugReportCallbackEXT" where
-        type VkProcType "vkCreateDebugReportCallbackEXT" =
-             HS_vkCreateDebugReportCallbackEXT
-        vkProcSymbol = _VkCreateDebugReportCallbackEXT
+    type VkProcType "vkCreateDebugReportCallbackEXT" =
+         HS_vkCreateDebugReportCallbackEXT
+    vkProcSymbol = _VkCreateDebugReportCallbackEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateDebugReportCallbackEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateDebugReportCallbackEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDebugReportCallbackEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDebugReportCallbackEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDestroyDebugReportCallbackEXT :: CString
 
 pattern VkDestroyDebugReportCallbackEXT <-
         (is_VkDestroyDebugReportCallbackEXT -> True)
-  where VkDestroyDebugReportCallbackEXT
-          = _VkDestroyDebugReportCallbackEXT
+  where
+    VkDestroyDebugReportCallbackEXT = _VkDestroyDebugReportCallbackEXT
 
 {-# INLINE _VkDestroyDebugReportCallbackEXT #-}
 
@@ -202,23 +283,24 @@
                  HS_vkDestroyDebugReportCallbackEXT
 
 instance VulkanProc "vkDestroyDebugReportCallbackEXT" where
-        type VkProcType "vkDestroyDebugReportCallbackEXT" =
-             HS_vkDestroyDebugReportCallbackEXT
-        vkProcSymbol = _VkDestroyDebugReportCallbackEXT
+    type VkProcType "vkDestroyDebugReportCallbackEXT" =
+         HS_vkDestroyDebugReportCallbackEXT
+    vkProcSymbol = _VkDestroyDebugReportCallbackEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyDebugReportCallbackEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyDebugReportCallbackEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDebugReportCallbackEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyDebugReportCallbackEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDebugReportMessageEXT :: CString
 
 pattern VkDebugReportMessageEXT <-
         (is_VkDebugReportMessageEXT -> True)
-  where VkDebugReportMessageEXT = _VkDebugReportMessageEXT
+  where
+    VkDebugReportMessageEXT = _VkDebugReportMessageEXT
 
 {-# INLINE _VkDebugReportMessageEXT #-}
 
@@ -271,17 +353,17 @@
                PFN_vkDebugReportMessageEXT -> HS_vkDebugReportMessageEXT
 
 instance VulkanProc "vkDebugReportMessageEXT" where
-        type VkProcType "vkDebugReportMessageEXT" =
-             HS_vkDebugReportMessageEXT
-        vkProcSymbol = _VkDebugReportMessageEXT
+    type VkProcType "vkDebugReportMessageEXT" =
+         HS_vkDebugReportMessageEXT
+    vkProcSymbol = _VkDebugReportMessageEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDebugReportMessageEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDebugReportMessageEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDebugReportMessageEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDebugReportMessageEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DEBUG_REPORT_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -293,8 +375,9 @@
 
 pattern VK_EXT_DEBUG_REPORT_EXTENSION_NAME <-
         (is_VK_EXT_DEBUG_REPORT_EXTENSION_NAME -> True)
-  where VK_EXT_DEBUG_REPORT_EXTENSION_NAME
-          = _VK_EXT_DEBUG_REPORT_EXTENSION_NAME
+  where
+    VK_EXT_DEBUG_REPORT_EXTENSION_NAME
+      = _VK_EXT_DEBUG_REPORT_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DEBUG_REPORT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_debug_utils.hs
@@ -23,19 +23,66 @@
         -- type: @instance@
         --
         -- Extension number: @129@
-        module Graphics.Vulkan.Marshal, VkApplicationInfo,
-        VkApplicationInfo', module Graphics.Vulkan.Types.BaseTypes,
-        VkDebugUtilsLabelEXT, VkDebugUtilsLabelEXT',
-        module Graphics.Vulkan.Types.Enum.Debug,
+        module Graphics.Vulkan.Marshal, VkApplicationInfo, VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkDebugUtilsLabelEXT, VkDebugReportBitmaskEXT(..),
+        VkDebugReportObjectTypeEXT(..),
+        VkDebugUtilsMessageSeverityBitmaskEXT(..),
+        VkDebugUtilsMessageTypeBitmaskEXT(..), VkDebugReportFlagBitsEXT(),
+        VkDebugReportFlagsEXT(), VkDebugUtilsMessageSeverityFlagBitsEXT(),
+        VkDebugUtilsMessageSeverityFlagsEXT(),
+        VkDebugUtilsMessageTypeFlagBitsEXT(),
+        VkDebugUtilsMessageTypeFlagsEXT(),
         VkDebugUtilsMessengerCallbackDataEXT,
-        VkDebugUtilsMessengerCallbackDataEXT',
-        module Graphics.Vulkan.Types.Bitmasks,
-        VkDebugUtilsMessengerCreateInfoEXT,
-        VkDebugUtilsMessengerCreateInfoEXT', VkDebugUtilsObjectNameInfoEXT,
-        VkDebugUtilsObjectNameInfoEXT', VkDebugUtilsObjectTagInfoEXT,
-        VkDebugUtilsObjectTagInfoEXT', VkInstanceCreateInfo,
-        VkInstanceCreateInfo', module Graphics.Vulkan.Types.Enum.Object,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
+        VkDebugUtilsMessengerCreateInfoEXT, VkDebugUtilsObjectNameInfoEXT,
+        VkDebugUtilsObjectTagInfoEXT, VkInstanceCreateInfo,
+        VkObjectEntryTypeNVX(..), VkObjectEntryUsageBitmaskNVX(..),
+        VkObjectType(..), VkObjectEntryUsageFlagBitsNVX(),
+        VkObjectEntryUsageFlagsNVX(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VkSetDebugUtilsObjectNameEXT, pattern VkSetDebugUtilsObjectNameEXT,
         HS_vkSetDebugUtilsObjectNameEXT, PFN_vkSetDebugUtilsObjectNameEXT,
@@ -68,19 +115,52 @@
         PFN_vkDestroyDebugUtilsMessengerEXT, VkSubmitDebugUtilsMessageEXT,
         pattern VkSubmitDebugUtilsMessageEXT,
         HS_vkSubmitDebugUtilsMessageEXT, PFN_vkSubmitDebugUtilsMessageEXT,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.ApplicationInfo,
-        module Graphics.Vulkan.Types.Struct.Debug,
-        module Graphics.Vulkan.Types.Struct.DebugUtilsLabelEXT,
-        module Graphics.Vulkan.Types.Struct.DebugUtilsMessengerCallbackDataEXT,
-        module Graphics.Vulkan.Types.Struct.DebugUtilsMessengerCreateInfoEXT,
-        module Graphics.Vulkan.Types.Struct.DebugUtilsObjectNameInfoEXT,
-        module Graphics.Vulkan.Types.Struct.InstanceCreateInfo,
+        VkInternalAllocationType(..), VkResult(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkDebugMarkerMarkerInfoEXT,
+        VkDebugMarkerObjectNameInfoEXT, VkDebugMarkerObjectTagInfoEXT,
+        VkDebugReportCallbackCreateInfoEXT,
         VK_EXT_DEBUG_UTILS_SPEC_VERSION,
         pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION,
         VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
@@ -118,7 +198,8 @@
 
 pattern VkSetDebugUtilsObjectNameEXT <-
         (is_VkSetDebugUtilsObjectNameEXT -> True)
-  where VkSetDebugUtilsObjectNameEXT = _VkSetDebugUtilsObjectNameEXT
+  where
+    VkSetDebugUtilsObjectNameEXT = _VkSetDebugUtilsObjectNameEXT
 
 {-# INLINE _VkSetDebugUtilsObjectNameEXT #-}
 
@@ -161,23 +242,24 @@
                PFN_vkSetDebugUtilsObjectNameEXT -> HS_vkSetDebugUtilsObjectNameEXT
 
 instance VulkanProc "vkSetDebugUtilsObjectNameEXT" where
-        type VkProcType "vkSetDebugUtilsObjectNameEXT" =
-             HS_vkSetDebugUtilsObjectNameEXT
-        vkProcSymbol = _VkSetDebugUtilsObjectNameEXT
+    type VkProcType "vkSetDebugUtilsObjectNameEXT" =
+         HS_vkSetDebugUtilsObjectNameEXT
+    vkProcSymbol = _VkSetDebugUtilsObjectNameEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkSetDebugUtilsObjectNameEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkSetDebugUtilsObjectNameEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkSetDebugUtilsObjectNameEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkSetDebugUtilsObjectNameEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkSetDebugUtilsObjectTagEXT :: CString
 
 pattern VkSetDebugUtilsObjectTagEXT <-
         (is_VkSetDebugUtilsObjectTagEXT -> True)
-  where VkSetDebugUtilsObjectTagEXT = _VkSetDebugUtilsObjectTagEXT
+  where
+    VkSetDebugUtilsObjectTagEXT = _VkSetDebugUtilsObjectTagEXT
 
 {-# INLINE _VkSetDebugUtilsObjectTagEXT #-}
 
@@ -220,24 +302,24 @@
                PFN_vkSetDebugUtilsObjectTagEXT -> HS_vkSetDebugUtilsObjectTagEXT
 
 instance VulkanProc "vkSetDebugUtilsObjectTagEXT" where
-        type VkProcType "vkSetDebugUtilsObjectTagEXT" =
-             HS_vkSetDebugUtilsObjectTagEXT
-        vkProcSymbol = _VkSetDebugUtilsObjectTagEXT
+    type VkProcType "vkSetDebugUtilsObjectTagEXT" =
+         HS_vkSetDebugUtilsObjectTagEXT
+    vkProcSymbol = _VkSetDebugUtilsObjectTagEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkSetDebugUtilsObjectTagEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkSetDebugUtilsObjectTagEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkSetDebugUtilsObjectTagEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkSetDebugUtilsObjectTagEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkQueueBeginDebugUtilsLabelEXT :: CString
 
 pattern VkQueueBeginDebugUtilsLabelEXT <-
         (is_VkQueueBeginDebugUtilsLabelEXT -> True)
-  where VkQueueBeginDebugUtilsLabelEXT
-          = _VkQueueBeginDebugUtilsLabelEXT
+  where
+    VkQueueBeginDebugUtilsLabelEXT = _VkQueueBeginDebugUtilsLabelEXT
 
 {-# INLINE _VkQueueBeginDebugUtilsLabelEXT #-}
 
@@ -279,23 +361,24 @@
                  HS_vkQueueBeginDebugUtilsLabelEXT
 
 instance VulkanProc "vkQueueBeginDebugUtilsLabelEXT" where
-        type VkProcType "vkQueueBeginDebugUtilsLabelEXT" =
-             HS_vkQueueBeginDebugUtilsLabelEXT
-        vkProcSymbol = _VkQueueBeginDebugUtilsLabelEXT
+    type VkProcType "vkQueueBeginDebugUtilsLabelEXT" =
+         HS_vkQueueBeginDebugUtilsLabelEXT
+    vkProcSymbol = _VkQueueBeginDebugUtilsLabelEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkQueueBeginDebugUtilsLabelEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkQueueBeginDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueBeginDebugUtilsLabelEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkQueueBeginDebugUtilsLabelEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkQueueEndDebugUtilsLabelEXT :: CString
 
 pattern VkQueueEndDebugUtilsLabelEXT <-
         (is_VkQueueEndDebugUtilsLabelEXT -> True)
-  where VkQueueEndDebugUtilsLabelEXT = _VkQueueEndDebugUtilsLabelEXT
+  where
+    VkQueueEndDebugUtilsLabelEXT = _VkQueueEndDebugUtilsLabelEXT
 
 {-# INLINE _VkQueueEndDebugUtilsLabelEXT #-}
 
@@ -331,24 +414,24 @@
                PFN_vkQueueEndDebugUtilsLabelEXT -> HS_vkQueueEndDebugUtilsLabelEXT
 
 instance VulkanProc "vkQueueEndDebugUtilsLabelEXT" where
-        type VkProcType "vkQueueEndDebugUtilsLabelEXT" =
-             HS_vkQueueEndDebugUtilsLabelEXT
-        vkProcSymbol = _VkQueueEndDebugUtilsLabelEXT
+    type VkProcType "vkQueueEndDebugUtilsLabelEXT" =
+         HS_vkQueueEndDebugUtilsLabelEXT
+    vkProcSymbol = _VkQueueEndDebugUtilsLabelEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkQueueEndDebugUtilsLabelEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkQueueEndDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueEndDebugUtilsLabelEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkQueueEndDebugUtilsLabelEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkQueueInsertDebugUtilsLabelEXT :: CString
 
 pattern VkQueueInsertDebugUtilsLabelEXT <-
         (is_VkQueueInsertDebugUtilsLabelEXT -> True)
-  where VkQueueInsertDebugUtilsLabelEXT
-          = _VkQueueInsertDebugUtilsLabelEXT
+  where
+    VkQueueInsertDebugUtilsLabelEXT = _VkQueueInsertDebugUtilsLabelEXT
 
 {-# INLINE _VkQueueInsertDebugUtilsLabelEXT #-}
 
@@ -390,23 +473,24 @@
                  HS_vkQueueInsertDebugUtilsLabelEXT
 
 instance VulkanProc "vkQueueInsertDebugUtilsLabelEXT" where
-        type VkProcType "vkQueueInsertDebugUtilsLabelEXT" =
-             HS_vkQueueInsertDebugUtilsLabelEXT
-        vkProcSymbol = _VkQueueInsertDebugUtilsLabelEXT
+    type VkProcType "vkQueueInsertDebugUtilsLabelEXT" =
+         HS_vkQueueInsertDebugUtilsLabelEXT
+    vkProcSymbol = _VkQueueInsertDebugUtilsLabelEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkQueueInsertDebugUtilsLabelEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkQueueInsertDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkQueueInsertDebugUtilsLabelEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkQueueInsertDebugUtilsLabelEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdBeginDebugUtilsLabelEXT :: CString
 
 pattern VkCmdBeginDebugUtilsLabelEXT <-
         (is_VkCmdBeginDebugUtilsLabelEXT -> True)
-  where VkCmdBeginDebugUtilsLabelEXT = _VkCmdBeginDebugUtilsLabelEXT
+  where
+    VkCmdBeginDebugUtilsLabelEXT = _VkCmdBeginDebugUtilsLabelEXT
 
 {-# INLINE _VkCmdBeginDebugUtilsLabelEXT #-}
 
@@ -449,23 +533,24 @@
                PFN_vkCmdBeginDebugUtilsLabelEXT -> HS_vkCmdBeginDebugUtilsLabelEXT
 
 instance VulkanProc "vkCmdBeginDebugUtilsLabelEXT" where
-        type VkProcType "vkCmdBeginDebugUtilsLabelEXT" =
-             HS_vkCmdBeginDebugUtilsLabelEXT
-        vkProcSymbol = _VkCmdBeginDebugUtilsLabelEXT
+    type VkProcType "vkCmdBeginDebugUtilsLabelEXT" =
+         HS_vkCmdBeginDebugUtilsLabelEXT
+    vkProcSymbol = _VkCmdBeginDebugUtilsLabelEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdBeginDebugUtilsLabelEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdBeginDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdBeginDebugUtilsLabelEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdBeginDebugUtilsLabelEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdEndDebugUtilsLabelEXT :: CString
 
 pattern VkCmdEndDebugUtilsLabelEXT <-
         (is_VkCmdEndDebugUtilsLabelEXT -> True)
-  where VkCmdEndDebugUtilsLabelEXT = _VkCmdEndDebugUtilsLabelEXT
+  where
+    VkCmdEndDebugUtilsLabelEXT = _VkCmdEndDebugUtilsLabelEXT
 
 {-# INLINE _VkCmdEndDebugUtilsLabelEXT #-}
 
@@ -504,24 +589,24 @@
                PFN_vkCmdEndDebugUtilsLabelEXT -> HS_vkCmdEndDebugUtilsLabelEXT
 
 instance VulkanProc "vkCmdEndDebugUtilsLabelEXT" where
-        type VkProcType "vkCmdEndDebugUtilsLabelEXT" =
-             HS_vkCmdEndDebugUtilsLabelEXT
-        vkProcSymbol = _VkCmdEndDebugUtilsLabelEXT
+    type VkProcType "vkCmdEndDebugUtilsLabelEXT" =
+         HS_vkCmdEndDebugUtilsLabelEXT
+    vkProcSymbol = _VkCmdEndDebugUtilsLabelEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdEndDebugUtilsLabelEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdEndDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdEndDebugUtilsLabelEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdEndDebugUtilsLabelEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdInsertDebugUtilsLabelEXT :: CString
 
 pattern VkCmdInsertDebugUtilsLabelEXT <-
         (is_VkCmdInsertDebugUtilsLabelEXT -> True)
-  where VkCmdInsertDebugUtilsLabelEXT
-          = _VkCmdInsertDebugUtilsLabelEXT
+  where
+    VkCmdInsertDebugUtilsLabelEXT = _VkCmdInsertDebugUtilsLabelEXT
 
 {-# INLINE _VkCmdInsertDebugUtilsLabelEXT #-}
 
@@ -567,24 +652,24 @@
                  HS_vkCmdInsertDebugUtilsLabelEXT
 
 instance VulkanProc "vkCmdInsertDebugUtilsLabelEXT" where
-        type VkProcType "vkCmdInsertDebugUtilsLabelEXT" =
-             HS_vkCmdInsertDebugUtilsLabelEXT
-        vkProcSymbol = _VkCmdInsertDebugUtilsLabelEXT
+    type VkProcType "vkCmdInsertDebugUtilsLabelEXT" =
+         HS_vkCmdInsertDebugUtilsLabelEXT
+    vkProcSymbol = _VkCmdInsertDebugUtilsLabelEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdInsertDebugUtilsLabelEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdInsertDebugUtilsLabelEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdInsertDebugUtilsLabelEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdInsertDebugUtilsLabelEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCreateDebugUtilsMessengerEXT :: CString
 
 pattern VkCreateDebugUtilsMessengerEXT <-
         (is_VkCreateDebugUtilsMessengerEXT -> True)
-  where VkCreateDebugUtilsMessengerEXT
-          = _VkCreateDebugUtilsMessengerEXT
+  where
+    VkCreateDebugUtilsMessengerEXT = _VkCreateDebugUtilsMessengerEXT
 
 {-# INLINE _VkCreateDebugUtilsMessengerEXT #-}
 
@@ -637,24 +722,24 @@
                  HS_vkCreateDebugUtilsMessengerEXT
 
 instance VulkanProc "vkCreateDebugUtilsMessengerEXT" where
-        type VkProcType "vkCreateDebugUtilsMessengerEXT" =
-             HS_vkCreateDebugUtilsMessengerEXT
-        vkProcSymbol = _VkCreateDebugUtilsMessengerEXT
+    type VkProcType "vkCreateDebugUtilsMessengerEXT" =
+         HS_vkCreateDebugUtilsMessengerEXT
+    vkProcSymbol = _VkCreateDebugUtilsMessengerEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateDebugUtilsMessengerEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateDebugUtilsMessengerEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDebugUtilsMessengerEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDebugUtilsMessengerEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDestroyDebugUtilsMessengerEXT :: CString
 
 pattern VkDestroyDebugUtilsMessengerEXT <-
         (is_VkDestroyDebugUtilsMessengerEXT -> True)
-  where VkDestroyDebugUtilsMessengerEXT
-          = _VkDestroyDebugUtilsMessengerEXT
+  where
+    VkDestroyDebugUtilsMessengerEXT = _VkDestroyDebugUtilsMessengerEXT
 
 {-# INLINE _VkDestroyDebugUtilsMessengerEXT #-}
 
@@ -699,23 +784,24 @@
                  HS_vkDestroyDebugUtilsMessengerEXT
 
 instance VulkanProc "vkDestroyDebugUtilsMessengerEXT" where
-        type VkProcType "vkDestroyDebugUtilsMessengerEXT" =
-             HS_vkDestroyDebugUtilsMessengerEXT
-        vkProcSymbol = _VkDestroyDebugUtilsMessengerEXT
+    type VkProcType "vkDestroyDebugUtilsMessengerEXT" =
+         HS_vkDestroyDebugUtilsMessengerEXT
+    vkProcSymbol = _VkDestroyDebugUtilsMessengerEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyDebugUtilsMessengerEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyDebugUtilsMessengerEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyDebugUtilsMessengerEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyDebugUtilsMessengerEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkSubmitDebugUtilsMessageEXT :: CString
 
 pattern VkSubmitDebugUtilsMessageEXT <-
         (is_VkSubmitDebugUtilsMessageEXT -> True)
-  where VkSubmitDebugUtilsMessageEXT = _VkSubmitDebugUtilsMessageEXT
+  where
+    VkSubmitDebugUtilsMessageEXT = _VkSubmitDebugUtilsMessageEXT
 
 {-# INLINE _VkSubmitDebugUtilsMessageEXT #-}
 
@@ -761,17 +847,17 @@
                PFN_vkSubmitDebugUtilsMessageEXT -> HS_vkSubmitDebugUtilsMessageEXT
 
 instance VulkanProc "vkSubmitDebugUtilsMessageEXT" where
-        type VkProcType "vkSubmitDebugUtilsMessageEXT" =
-             HS_vkSubmitDebugUtilsMessageEXT
-        vkProcSymbol = _VkSubmitDebugUtilsMessageEXT
+    type VkProcType "vkSubmitDebugUtilsMessageEXT" =
+         HS_vkSubmitDebugUtilsMessageEXT
+    vkProcSymbol = _VkSubmitDebugUtilsMessageEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkSubmitDebugUtilsMessageEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkSubmitDebugUtilsMessageEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkSubmitDebugUtilsMessageEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkSubmitDebugUtilsMessageEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -783,8 +869,9 @@
 
 pattern VK_EXT_DEBUG_UTILS_EXTENSION_NAME <-
         (is_VK_EXT_DEBUG_UTILS_EXTENSION_NAME -> True)
-  where VK_EXT_DEBUG_UTILS_EXTENSION_NAME
-          = _VK_EXT_DEBUG_UTILS_EXTENSION_NAME
+  where
+    VK_EXT_DEBUG_UTILS_EXTENSION_NAME
+      = _VK_EXT_DEBUG_UTILS_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DEBUG_UTILS_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_depth_range_unrestricted.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_depth_range_unrestricted.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_depth_range_unrestricted.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_depth_range_unrestricted.hs
@@ -36,8 +36,9 @@
 
 pattern VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME <-
         (is_VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME -> True)
-  where VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME
-          = _VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME
+  where
+    VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME
+      = _VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_descriptor_indexing.hs
@@ -22,37 +22,79 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2', 'VK_KHR_maintenance3'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Descriptor,
-        VkDescriptorSetAllocateInfo, VkDescriptorSetAllocateInfo',
-        VkDescriptorSetLayoutBinding, VkDescriptorSetLayoutBinding',
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkDescriptorBindingBitmaskEXT(..),
+        VkDescriptorPoolCreateBitmask(..), VkDescriptorType(..),
+        VkDescriptorUpdateTemplateType(..),
+        VkDescriptorBindingFlagBitsEXT(), VkDescriptorBindingFlagsEXT(),
+        VkDescriptorPoolCreateFlagBits(), VkDescriptorPoolCreateFlags(),
+        VkDescriptorSetLayoutCreateBitmask(..),
+        VkDescriptorSetLayoutCreateFlagBits(),
+        VkDescriptorSetLayoutCreateFlags(),
+        VkDescriptorUpdateTemplateTypeKHR(..), VkDescriptorSetAllocateInfo,
+        VkDescriptorSetLayoutBinding,
         VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
-        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT',
-        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutCreateInfo',
-        VkDescriptorSetLayoutSupport, VkDescriptorSetLayoutSupport',
+        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutSupport,
         VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
-        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT',
         VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
-        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT',
-        module Graphics.Vulkan.Types.Bitmasks, VkDeviceCreateInfo,
-        VkDeviceCreateInfo', module Graphics.Vulkan.Types.Enum.Device,
-        VkDeviceQueueCreateInfo, VkDeviceQueueCreateInfo',
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkDeviceCreateInfo,
+        VkDeviceEventTypeEXT(..), VkDeviceGroupPresentModeBitmaskKHR(..),
+        VkDeviceCreateFlagBits(..), VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkDeviceQueueCreateInfo,
         VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
-        VkPhysicalDeviceDescriptorIndexingFeaturesEXT',
         VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
-        VkPhysicalDeviceDescriptorIndexingPropertiesEXT',
-        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures',
-        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2',
-        VkPhysicalDeviceLimits, VkPhysicalDeviceLimits',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.Shader,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures2,
+        VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
+        VkPhysicalDeviceProperties2, VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceType(..), VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(),
+        VkShaderInfoTypeAMD(..), VkShaderStageBitmask(..),
+        VkShaderStageFlagBits(), VkShaderStageFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION,
         pattern VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION,
@@ -79,39 +121,21 @@
 import Graphics.Vulkan.Types.Enum.Shader
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Struct.Descriptor             (VkDescriptorSetAllocateInfo,
-                                                            VkDescriptorSetAllocateInfo',
                                                             VkDescriptorSetLayoutBinding,
-                                                            VkDescriptorSetLayoutBinding',
                                                             VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
-                                                            VkDescriptorSetLayoutBindingFlagsCreateInfoEXT',
                                                             VkDescriptorSetLayoutCreateInfo,
-                                                            VkDescriptorSetLayoutCreateInfo',
                                                             VkDescriptorSetLayoutSupport,
-                                                            VkDescriptorSetLayoutSupport',
                                                             VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
-                                                            VkDescriptorSetVariableDescriptorCountAllocateInfoEXT',
-                                                            VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
-                                                            VkDescriptorSetVariableDescriptorCountLayoutSupportEXT')
-import Graphics.Vulkan.Types.Struct.Device                 (VkDeviceCreateInfo,
-                                                            VkDeviceCreateInfo',
-                                                            VkDeviceQueueCreateInfo,
-                                                            VkDeviceQueueCreateInfo')
+                                                            VkDescriptorSetVariableDescriptorCountLayoutSupportEXT)
+import Graphics.Vulkan.Types.Struct.Device                 (VkDeviceCreateInfo, VkDeviceQueueCreateInfo)
 import Graphics.Vulkan.Types.Struct.PhysicalDevice         (VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
-                                                            VkPhysicalDeviceDescriptorIndexingFeaturesEXT',
                                                             VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
-                                                            VkPhysicalDeviceDescriptorIndexingPropertiesEXT',
                                                             VkPhysicalDeviceFeatures2,
-                                                            VkPhysicalDeviceFeatures2',
                                                             VkPhysicalDeviceLimits,
-                                                            VkPhysicalDeviceLimits',
                                                             VkPhysicalDeviceProperties,
-                                                            VkPhysicalDeviceProperties',
                                                             VkPhysicalDeviceProperties2,
-                                                            VkPhysicalDeviceProperties2',
-                                                            VkPhysicalDeviceSparseProperties,
-                                                            VkPhysicalDeviceSparseProperties')
-import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures,
-                                                            VkPhysicalDeviceFeatures')
+                                                            VkPhysicalDeviceSparseProperties)
+import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
 
 pattern VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -124,8 +148,9 @@
 
 pattern VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME <-
         (is_VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME -> True)
-  where VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
-          = _VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
+  where
+    VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
+      = _VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_direct_mode_display.hs
@@ -28,9 +28,32 @@
 
         -- ** Required extensions: 'VK_KHR_display'.
         VkReleaseDisplayEXT, pattern VkReleaseDisplayEXT,
-        HS_vkReleaseDisplayEXT, PFN_vkReleaseDisplayEXT,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
+        HS_vkReleaseDisplayEXT, PFN_vkReleaseDisplayEXT, VkResult(..),
+        VkBuffer, VkBufferView, VkBufferView_T(), VkBuffer_T(),
+        VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION,
         pattern VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION,
         VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME,
@@ -45,7 +68,8 @@
 pattern VkReleaseDisplayEXT :: CString
 
 pattern VkReleaseDisplayEXT <- (is_VkReleaseDisplayEXT -> True)
-  where VkReleaseDisplayEXT = _VkReleaseDisplayEXT
+  where
+    VkReleaseDisplayEXT = _VkReleaseDisplayEXT
 
 {-# INLINE _VkReleaseDisplayEXT #-}
 
@@ -82,16 +106,16 @@
                :: PFN_vkReleaseDisplayEXT -> HS_vkReleaseDisplayEXT
 
 instance VulkanProc "vkReleaseDisplayEXT" where
-        type VkProcType "vkReleaseDisplayEXT" = HS_vkReleaseDisplayEXT
-        vkProcSymbol = _VkReleaseDisplayEXT
+    type VkProcType "vkReleaseDisplayEXT" = HS_vkReleaseDisplayEXT
+    vkProcSymbol = _VkReleaseDisplayEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkReleaseDisplayEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkReleaseDisplayEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkReleaseDisplayEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkReleaseDisplayEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -104,8 +128,9 @@
 
 pattern VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME <-
         (is_VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME -> True)
-  where VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME
-          = _VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME
+  where
+    VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME
+      = _VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_discard_rectangles.hs
@@ -27,71 +27,128 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Blend,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompareOp,
-        module Graphics.Vulkan.Types.Enum.CullModeFlags,
-        module Graphics.Vulkan.Types.Enum.DiscardRectangleModeEXT,
-        module Graphics.Vulkan.Types.Enum.DynamicState, VkExtent2D,
-        VkExtent2D', module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.FrontFace,
-        VkGraphicsPipelineCreateInfo, VkGraphicsPipelineCreateInfo',
-        module Graphics.Vulkan.Types.Enum.LogicOp, VkOffset2D, VkOffset2D',
+        module Graphics.Vulkan.Marshal, VkBlendFactor(..), VkBlendOp(..),
+        VkBlendOverlapEXT(..), VkBool32(..), VkDeviceSize(..), VkFlags(..),
+        VkSampleMask(..), VkColorComponentBitmask(..), VkColorSpaceKHR(..),
+        VkColorComponentFlagBits(), VkColorComponentFlags(),
+        VkCompareOp(..), VkCullModeBitmask(..), VkCullModeFlagBits(),
+        VkCullModeFlags(), VkDiscardRectangleModeEXT(..),
+        VkDynamicState(..), VkExtent2D, VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkFrontFace(..),
+        VkGraphicsPipelineCreateInfo, VkLogicOp(..), VkOffset2D,
         VkPhysicalDeviceDiscardRectanglePropertiesEXT,
-        VkPhysicalDeviceDiscardRectanglePropertiesEXT',
-        VkPhysicalDeviceLimits, VkPhysicalDeviceLimits',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        VkPipelineColorBlendAttachmentState,
-        VkPipelineColorBlendAttachmentState',
-        module Graphics.Vulkan.Types.Bitmasks,
-        VkPipelineColorBlendStateCreateInfo,
-        VkPipelineColorBlendStateCreateInfo',
-        module Graphics.Vulkan.Types.Enum.Pipeline,
+        VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
+        VkPhysicalDeviceProperties2, VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceType(..), VkPipelineColorBlendAttachmentState,
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
+        VkPipelineColorBlendStateCreateInfo, VkPipelineBindPoint(..),
+        VkPipelineCacheHeaderVersion(..), VkPipelineCreateBitmask(..),
+        VkPipelineStageBitmask(..), VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..),
         VkPipelineDepthStencilStateCreateInfo,
-        VkPipelineDepthStencilStateCreateInfo',
         VkPipelineDiscardRectangleStateCreateInfoEXT,
-        VkPipelineDiscardRectangleStateCreateInfoEXT',
         VkPipelineDynamicStateCreateInfo,
-        VkPipelineDynamicStateCreateInfo',
         VkPipelineInputAssemblyStateCreateInfo,
-        VkPipelineInputAssemblyStateCreateInfo',
         VkPipelineMultisampleStateCreateInfo,
-        VkPipelineMultisampleStateCreateInfo',
         VkPipelineRasterizationStateCreateInfo,
-        VkPipelineRasterizationStateCreateInfo',
-        VkPipelineShaderStageCreateInfo, VkPipelineShaderStageCreateInfo',
+        VkPipelineShaderStageCreateInfo,
         VkPipelineTessellationStateCreateInfo,
-        VkPipelineTessellationStateCreateInfo',
         VkPipelineVertexInputStateCreateInfo,
-        VkPipelineVertexInputStateCreateInfo',
-        VkPipelineViewportStateCreateInfo,
-        VkPipelineViewportStateCreateInfo',
-        module Graphics.Vulkan.Types.Enum.PolygonMode,
-        module Graphics.Vulkan.Types.Enum.PrimitiveTopology, VkRect2D,
-        VkRect2D', module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.Shader, VkSpecializationInfo,
-        VkSpecializationInfo', VkSpecializationMapEntry,
-        VkSpecializationMapEntry',
-        module Graphics.Vulkan.Types.Enum.Stencil, VkStencilOpState,
-        VkStencilOpState', module Graphics.Vulkan.Types.Enum.StructureType,
-        VkVertexInputAttributeDescription,
-        VkVertexInputAttributeDescription',
-        VkVertexInputBindingDescription, VkVertexInputBindingDescription',
-        module Graphics.Vulkan.Types.Enum.VertexInputRate, VkViewport,
-        VkViewport', -- > #include "vk_platform.h"
-                     VkCmdSetDiscardRectangleEXT,
+        VkPipelineViewportStateCreateInfo, VkPolygonMode(..),
+        VkPrimitiveTopology(..), VkRect2D, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(),
+        VkShaderInfoTypeAMD(..), VkShaderStageBitmask(..),
+        VkShaderStageFlagBits(), VkShaderStageFlags(),
+        VkSpecializationInfo, VkSpecializationMapEntry,
+        VkStencilFaceBitmask(..), VkStencilOp(..), VkStencilFaceFlagBits(),
+        VkStencilFaceFlags(), VkStencilOpState, VkStructureType(..),
+        VkVertexInputAttributeDescription, VkVertexInputBindingDescription,
+        VkVertexInputRate(..), VkViewport, -- > #include "vk_platform.h"
+                                           VkCmdSetDiscardRectangleEXT,
         pattern VkCmdSetDiscardRectangleEXT,
         HS_vkCmdSetDiscardRectangleEXT, PFN_vkCmdSetDiscardRectangleEXT,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Offset,
-        module Graphics.Vulkan.Types.Struct.Rect,
+        VkBuffer, VkBufferView, VkBufferView_T(), VkBuffer_T(),
+        VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkExtent3D, VkOffset3D, VkRectLayerKHR,
         VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION,
         pattern VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION,
         VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME,
@@ -127,60 +184,36 @@
 import Graphics.Vulkan.Types.Struct.Extent
 import Graphics.Vulkan.Types.Struct.Offset
 import Graphics.Vulkan.Types.Struct.PhysicalDevice        (VkPhysicalDeviceDiscardRectanglePropertiesEXT,
-                                                           VkPhysicalDeviceDiscardRectanglePropertiesEXT',
                                                            VkPhysicalDeviceLimits,
-                                                           VkPhysicalDeviceLimits',
                                                            VkPhysicalDeviceProperties,
-                                                           VkPhysicalDeviceProperties',
                                                            VkPhysicalDeviceProperties2,
-                                                           VkPhysicalDeviceProperties2',
-                                                           VkPhysicalDeviceSparseProperties,
-                                                           VkPhysicalDeviceSparseProperties')
+                                                           VkPhysicalDeviceSparseProperties)
 import Graphics.Vulkan.Types.Struct.Pipeline              (VkGraphicsPipelineCreateInfo,
-                                                           VkGraphicsPipelineCreateInfo',
                                                            VkPipelineColorBlendAttachmentState,
-                                                           VkPipelineColorBlendAttachmentState',
                                                            VkPipelineColorBlendStateCreateInfo,
-                                                           VkPipelineColorBlendStateCreateInfo',
                                                            VkPipelineDepthStencilStateCreateInfo,
-                                                           VkPipelineDepthStencilStateCreateInfo',
                                                            VkPipelineDiscardRectangleStateCreateInfoEXT,
-                                                           VkPipelineDiscardRectangleStateCreateInfoEXT',
                                                            VkPipelineDynamicStateCreateInfo,
-                                                           VkPipelineDynamicStateCreateInfo',
                                                            VkPipelineInputAssemblyStateCreateInfo,
-                                                           VkPipelineInputAssemblyStateCreateInfo',
                                                            VkPipelineMultisampleStateCreateInfo,
-                                                           VkPipelineMultisampleStateCreateInfo',
                                                            VkPipelineRasterizationStateCreateInfo,
-                                                           VkPipelineRasterizationStateCreateInfo',
                                                            VkPipelineShaderStageCreateInfo,
-                                                           VkPipelineShaderStageCreateInfo',
                                                            VkPipelineTessellationStateCreateInfo,
-                                                           VkPipelineTessellationStateCreateInfo',
                                                            VkPipelineVertexInputStateCreateInfo,
-                                                           VkPipelineVertexInputStateCreateInfo',
-                                                           VkPipelineViewportStateCreateInfo,
-                                                           VkPipelineViewportStateCreateInfo')
+                                                           VkPipelineViewportStateCreateInfo)
 import Graphics.Vulkan.Types.Struct.Rect
-import Graphics.Vulkan.Types.Struct.Specialization        (VkSpecializationInfo,
-                                                           VkSpecializationInfo',
-                                                           VkSpecializationMapEntry,
-                                                           VkSpecializationMapEntry')
-import Graphics.Vulkan.Types.Struct.StencilOpState        (VkStencilOpState,
-                                                           VkStencilOpState')
+import Graphics.Vulkan.Types.Struct.Specialization        (VkSpecializationInfo, VkSpecializationMapEntry)
+import Graphics.Vulkan.Types.Struct.StencilOpState        (VkStencilOpState)
 import Graphics.Vulkan.Types.Struct.VertexInput           (VkVertexInputAttributeDescription,
-                                                           VkVertexInputAttributeDescription',
-                                                           VkVertexInputBindingDescription,
-                                                           VkVertexInputBindingDescription')
-import Graphics.Vulkan.Types.Struct.Viewport              (VkViewport,
-                                                           VkViewport')
+                                                           VkVertexInputBindingDescription)
+import Graphics.Vulkan.Types.Struct.Viewport              (VkViewport)
 
 pattern VkCmdSetDiscardRectangleEXT :: CString
 
 pattern VkCmdSetDiscardRectangleEXT <-
         (is_VkCmdSetDiscardRectangleEXT -> True)
-  where VkCmdSetDiscardRectangleEXT = _VkCmdSetDiscardRectangleEXT
+  where
+    VkCmdSetDiscardRectangleEXT = _VkCmdSetDiscardRectangleEXT
 
 {-# INLINE _VkCmdSetDiscardRectangleEXT #-}
 
@@ -227,17 +260,17 @@
                PFN_vkCmdSetDiscardRectangleEXT -> HS_vkCmdSetDiscardRectangleEXT
 
 instance VulkanProc "vkCmdSetDiscardRectangleEXT" where
-        type VkProcType "vkCmdSetDiscardRectangleEXT" =
-             HS_vkCmdSetDiscardRectangleEXT
-        vkProcSymbol = _VkCmdSetDiscardRectangleEXT
+    type VkProcType "vkCmdSetDiscardRectangleEXT" =
+         HS_vkCmdSetDiscardRectangleEXT
+    vkProcSymbol = _VkCmdSetDiscardRectangleEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDiscardRectangleEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetDiscardRectangleEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetDiscardRectangleEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetDiscardRectangleEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -250,8 +283,9 @@
 
 pattern VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME <-
         (is_VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME -> True)
-  where VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME
-          = _VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME
+  where
+    VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME
+      = _VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_control.hs
@@ -11,57 +11,104 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_EXT_display_control
-       (-- * Vulkan extension: @VK_EXT_display_control@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @James Jones @cubanismo@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @92@
-        --
-        -- Required extensions: 'VK_EXT_display_surface_counter', 'VK_KHR_swapchain'.
-        --
-
-        -- ** Required extensions: 'VK_EXT_display_surface_counter', 'VK_KHR_swapchain'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
-        VkDeviceEventInfoEXT, VkDeviceEventInfoEXT',
-        module Graphics.Vulkan.Types.Enum.Device, VkDisplayEventInfoEXT,
-        VkDisplayEventInfoEXT', module Graphics.Vulkan.Types.Enum.Display,
-        VkDisplayPowerInfoEXT, VkDisplayPowerInfoEXT', VkExtent2D,
-        VkExtent2D', module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.PresentModeKHR,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.Surface,
-        VkSwapchainCounterCreateInfoEXT, VkSwapchainCounterCreateInfoEXT',
-        module Graphics.Vulkan.Types.Enum.SwapchainCreateFlagsKHR,
-        VkSwapchainCreateInfoKHR, VkSwapchainCreateInfoKHR',
-        -- > #include "vk_platform.h"
-        VkDisplayPowerControlEXT, pattern VkDisplayPowerControlEXT,
-        HS_vkDisplayPowerControlEXT, PFN_vkDisplayPowerControlEXT,
-        VkRegisterDeviceEventEXT, pattern VkRegisterDeviceEventEXT,
-        HS_vkRegisterDeviceEventEXT, PFN_vkRegisterDeviceEventEXT,
-        VkRegisterDisplayEventEXT, pattern VkRegisterDisplayEventEXT,
-        HS_vkRegisterDisplayEventEXT, PFN_vkRegisterDisplayEventEXT,
-        VkGetSwapchainCounterEXT, pattern VkGetSwapchainCounterEXT,
-        HS_vkGetSwapchainCounterEXT, PFN_vkGetSwapchainCounterEXT,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.Device,
-        module Graphics.Vulkan.Types.Struct.Display,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkColorComponentBitmask(..), VkColorSpaceKHR(..),
+        VkColorComponentFlagBits(), VkColorComponentFlags(),
+        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
+        VkCompositeAlphaFlagsKHR(), VkDeviceEventInfoEXT,
+        VkDeviceEventTypeEXT(..), VkDeviceGroupPresentModeBitmaskKHR(..),
+        VkDeviceCreateFlagBits(..), VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkDisplayEventInfoEXT, VkDisplayEventTypeEXT(..),
+        VkDisplayPlaneAlphaBitmaskKHR(..), VkDisplayPowerStateEXT(..),
+        VkDisplayPlaneAlphaFlagBitsKHR(), VkDisplayPlaneAlphaFlagsKHR(),
+        VkDisplayPowerInfoEXT, VkExtent2D, VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkPresentModeKHR(..),
+        VkSharingMode(..), VkStructureType(..),
+        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
+        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
+        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
+        VkSwapchainCounterCreateInfoEXT, VkSwapchainCreateBitmaskKHR(..),
+        VkSwapchainCreateFlagBitsKHR(), VkSwapchainCreateFlagsKHR(),
+        VkSwapchainCreateInfoKHR, -- > #include "vk_platform.h"
+                                  VkDisplayPowerControlEXT,
+        pattern VkDisplayPowerControlEXT, HS_vkDisplayPowerControlEXT,
+        PFN_vkDisplayPowerControlEXT, VkRegisterDeviceEventEXT,
+        pattern VkRegisterDeviceEventEXT, HS_vkRegisterDeviceEventEXT,
+        PFN_vkRegisterDeviceEventEXT, VkRegisterDisplayEventEXT,
+        pattern VkRegisterDisplayEventEXT, HS_vkRegisterDisplayEventEXT,
+        PFN_vkRegisterDisplayEventEXT, VkGetSwapchainCounterEXT,
+        pattern VkGetSwapchainCounterEXT, HS_vkGetSwapchainCounterEXT,
+        PFN_vkGetSwapchainCounterEXT, module Graphics.Vulkan.Marshal,
+        VkInternalAllocationType(..), VkResult(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkDeviceCreateInfo,
+        VkDeviceGeneratedCommandsFeaturesNVX,
+        VkDeviceGeneratedCommandsLimitsNVX, VkDeviceGroupBindSparseInfo,
+        VkDeviceGroupBindSparseInfoKHR,
+        VkDeviceGroupCommandBufferBeginInfo,
+        VkDeviceGroupCommandBufferBeginInfoKHR,
+        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfoKHR,
+        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
+        VkDeviceGroupRenderPassBeginInfo,
+        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
+        VkDeviceGroupSubmitInfoKHR, VkDeviceGroupSwapchainCreateInfoKHR,
+        VkDeviceQueueCreateInfo, VkDeviceQueueGlobalPriorityCreateInfoEXT,
+        VkDeviceQueueInfo2, VkDisplayModeCreateInfoKHR,
+        VkDisplayModeParametersKHR, VkDisplayModeProperties2KHR,
+        VkDisplayModePropertiesKHR, VkDisplayPlaneCapabilities2KHR,
+        VkDisplayPlaneCapabilitiesKHR, VkDisplayPlaneInfo2KHR,
+        VkDisplayPlaneProperties2KHR, VkDisplayPlanePropertiesKHR,
+        VkDisplayPresentInfoKHR, VkDisplayProperties2KHR,
+        VkDisplayPropertiesKHR, VkDisplaySurfaceCreateInfoKHR,
         VK_EXT_DISPLAY_CONTROL_SPEC_VERSION,
         pattern VK_EXT_DISPLAY_CONTROL_SPEC_VERSION,
         VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME,
@@ -94,18 +141,16 @@
 import Graphics.Vulkan.Types.Struct.AllocationCallbacks
 import Graphics.Vulkan.Types.Struct.Device
 import Graphics.Vulkan.Types.Struct.Display
-import Graphics.Vulkan.Types.Struct.Extent                (VkExtent2D,
-                                                           VkExtent2D')
+import Graphics.Vulkan.Types.Struct.Extent                (VkExtent2D)
 import Graphics.Vulkan.Types.Struct.SwapchainC            (VkSwapchainCounterCreateInfoEXT,
-                                                           VkSwapchainCounterCreateInfoEXT',
-                                                           VkSwapchainCreateInfoKHR,
-                                                           VkSwapchainCreateInfoKHR')
+                                                           VkSwapchainCreateInfoKHR)
 
 pattern VkDisplayPowerControlEXT :: CString
 
 pattern VkDisplayPowerControlEXT <-
         (is_VkDisplayPowerControlEXT -> True)
-  where VkDisplayPowerControlEXT = _VkDisplayPowerControlEXT
+  where
+    VkDisplayPowerControlEXT = _VkDisplayPowerControlEXT
 
 {-# INLINE _VkDisplayPowerControlEXT #-}
 
@@ -148,23 +193,24 @@
                PFN_vkDisplayPowerControlEXT -> HS_vkDisplayPowerControlEXT
 
 instance VulkanProc "vkDisplayPowerControlEXT" where
-        type VkProcType "vkDisplayPowerControlEXT" =
-             HS_vkDisplayPowerControlEXT
-        vkProcSymbol = _VkDisplayPowerControlEXT
+    type VkProcType "vkDisplayPowerControlEXT" =
+         HS_vkDisplayPowerControlEXT
+    vkProcSymbol = _VkDisplayPowerControlEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDisplayPowerControlEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDisplayPowerControlEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDisplayPowerControlEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDisplayPowerControlEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkRegisterDeviceEventEXT :: CString
 
 pattern VkRegisterDeviceEventEXT <-
         (is_VkRegisterDeviceEventEXT -> True)
-  where VkRegisterDeviceEventEXT = _VkRegisterDeviceEventEXT
+  where
+    VkRegisterDeviceEventEXT = _VkRegisterDeviceEventEXT
 
 {-# INLINE _VkRegisterDeviceEventEXT #-}
 
@@ -210,23 +256,24 @@
                PFN_vkRegisterDeviceEventEXT -> HS_vkRegisterDeviceEventEXT
 
 instance VulkanProc "vkRegisterDeviceEventEXT" where
-        type VkProcType "vkRegisterDeviceEventEXT" =
-             HS_vkRegisterDeviceEventEXT
-        vkProcSymbol = _VkRegisterDeviceEventEXT
+    type VkProcType "vkRegisterDeviceEventEXT" =
+         HS_vkRegisterDeviceEventEXT
+    vkProcSymbol = _VkRegisterDeviceEventEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkRegisterDeviceEventEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkRegisterDeviceEventEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkRegisterDeviceEventEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkRegisterDeviceEventEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkRegisterDisplayEventEXT :: CString
 
 pattern VkRegisterDisplayEventEXT <-
         (is_VkRegisterDisplayEventEXT -> True)
-  where VkRegisterDisplayEventEXT = _VkRegisterDisplayEventEXT
+  where
+    VkRegisterDisplayEventEXT = _VkRegisterDisplayEventEXT
 
 {-# INLINE _VkRegisterDisplayEventEXT #-}
 
@@ -275,23 +322,24 @@
                PFN_vkRegisterDisplayEventEXT -> HS_vkRegisterDisplayEventEXT
 
 instance VulkanProc "vkRegisterDisplayEventEXT" where
-        type VkProcType "vkRegisterDisplayEventEXT" =
-             HS_vkRegisterDisplayEventEXT
-        vkProcSymbol = _VkRegisterDisplayEventEXT
+    type VkProcType "vkRegisterDisplayEventEXT" =
+         HS_vkRegisterDisplayEventEXT
+    vkProcSymbol = _VkRegisterDisplayEventEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkRegisterDisplayEventEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkRegisterDisplayEventEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkRegisterDisplayEventEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkRegisterDisplayEventEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetSwapchainCounterEXT :: CString
 
 pattern VkGetSwapchainCounterEXT <-
         (is_VkGetSwapchainCounterEXT -> True)
-  where VkGetSwapchainCounterEXT = _VkGetSwapchainCounterEXT
+  where
+    VkGetSwapchainCounterEXT = _VkGetSwapchainCounterEXT
 
 {-# INLINE _VkGetSwapchainCounterEXT #-}
 
@@ -339,17 +387,17 @@
                PFN_vkGetSwapchainCounterEXT -> HS_vkGetSwapchainCounterEXT
 
 instance VulkanProc "vkGetSwapchainCounterEXT" where
-        type VkProcType "vkGetSwapchainCounterEXT" =
-             HS_vkGetSwapchainCounterEXT
-        vkProcSymbol = _VkGetSwapchainCounterEXT
+    type VkProcType "vkGetSwapchainCounterEXT" =
+         HS_vkGetSwapchainCounterEXT
+    vkProcSymbol = _VkGetSwapchainCounterEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainCounterEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainCounterEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetSwapchainCounterEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetSwapchainCounterEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DISPLAY_CONTROL_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -361,8 +409,9 @@
 
 pattern VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME <-
         (is_VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME -> True)
-  where VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME
-          = _VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME
+  where
+    VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME
+      = _VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_display_surface_counter.hs
@@ -28,22 +28,51 @@
         --
 
         -- ** Required extensions: 'VK_KHR_display'.
-        module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
-        VkExtent2D, VkExtent2D', module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        VkSurfaceCapabilities2EXT, VkSurfaceCapabilities2EXT',
-        module Graphics.Vulkan.Types.Enum.Surface,
+        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
+        VkCompositeAlphaFlagsKHR(), VkExtent2D, VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkStructureType(..),
+        VkSurfaceCapabilities2EXT, VkSurfaceCounterBitmaskEXT(..),
+        VkSurfaceTransformBitmaskKHR(..), VkSurfaceCounterFlagBitsEXT(),
+        VkSurfaceCounterFlagsEXT(), VkSurfaceTransformFlagBitsKHR(),
+        VkSurfaceTransformFlagsKHR(),
         -- > #include "vk_platform.h"
         VkGetPhysicalDeviceSurfaceCapabilities2EXT,
         pattern VkGetPhysicalDeviceSurfaceCapabilities2EXT,
         HS_vkGetPhysicalDeviceSurfaceCapabilities2EXT,
         PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Surface,
+        module Graphics.Vulkan.Marshal, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkExtent3D, VkSurfaceCapabilities2KHR, VkSurfaceCapabilitiesKHR,
+        VkSurfaceFormat2KHR, VkSurfaceFormatKHR,
         VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION,
         pattern VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION,
         VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME,
@@ -68,8 +97,9 @@
 
 pattern VkGetPhysicalDeviceSurfaceCapabilities2EXT <-
         (is_VkGetPhysicalDeviceSurfaceCapabilities2EXT -> True)
-  where VkGetPhysicalDeviceSurfaceCapabilities2EXT
-          = _VkGetPhysicalDeviceSurfaceCapabilities2EXT
+  where
+    VkGetPhysicalDeviceSurfaceCapabilities2EXT
+      = _VkGetPhysicalDeviceSurfaceCapabilities2EXT
 
 {-# INLINE _VkGetPhysicalDeviceSurfaceCapabilities2EXT #-}
 
@@ -119,19 +149,19 @@
 
 instance VulkanProc "vkGetPhysicalDeviceSurfaceCapabilities2EXT"
          where
-        type VkProcType "vkGetPhysicalDeviceSurfaceCapabilities2EXT" =
-             HS_vkGetPhysicalDeviceSurfaceCapabilities2EXT
-        vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilities2EXT
+    type VkProcType "vkGetPhysicalDeviceSurfaceCapabilities2EXT" =
+         HS_vkGetPhysicalDeviceSurfaceCapabilities2EXT
+    vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilities2EXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSurfaceCapabilities2EXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -144,8 +174,9 @@
 
 pattern VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME <-
         (is_VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME -> True)
-  where VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
-          = _VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
+  where
+    VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
+      = _VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_dma_buf.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_dma_buf.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_dma_buf.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_dma_buf.hs
@@ -30,8 +30,7 @@
        where
 import GHC.Ptr                             (Ptr (..))
 import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Types.Enum.External (VkExternalMemoryHandleTypeBitmask (..),
-                                            VkExternalMemoryHandleTypeFlagBits)
+import Graphics.Vulkan.Types.Enum.External (VkExternalMemoryHandleTypeBitmask (..))
 
 pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -44,8 +43,9 @@
 
 pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME <-
         (is_VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME -> True)
-  where VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME
-          = _VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME
+  where
+    VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME
+      = _VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_external_memory_host.hs
@@ -28,32 +28,120 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_memory'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.External,
-        module Graphics.Vulkan.Types.Bitmasks,
-        VkImportMemoryHostPointerInfoEXT,
-        VkImportMemoryHostPointerInfoEXT', VkMemoryAllocateInfo,
-        VkMemoryAllocateInfo', VkMemoryHostPointerPropertiesEXT,
-        VkMemoryHostPointerPropertiesEXT',
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkImportMemoryHostPointerInfoEXT,
+        VkMemoryAllocateInfo, VkMemoryHostPointerPropertiesEXT,
         VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
-        VkPhysicalDeviceExternalMemoryHostPropertiesEXT',
-        VkPhysicalDeviceLimits, VkPhysicalDeviceLimits',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
+        VkPhysicalDeviceProperties2, VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceType(..), VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VkGetMemoryHostPointerPropertiesEXT,
         pattern VkGetMemoryHostPointerPropertiesEXT,
         HS_vkGetMemoryHostPointerPropertiesEXT,
-        PFN_vkGetMemoryHostPointerPropertiesEXT,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Memory,
+        PFN_vkGetMemoryHostPointerPropertiesEXT, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfoKHR,
+        VkMemoryBarrier, VkMemoryDedicatedAllocateInfo,
+        VkMemoryDedicatedAllocateInfoKHR, VkMemoryDedicatedRequirements,
+        VkMemoryDedicatedRequirementsKHR, VkMemoryFdPropertiesKHR,
+        VkMemoryGetFdInfoKHR, VkMemoryHeap, VkMemoryRequirements,
+        VkMemoryRequirements2, VkMemoryRequirements2KHR, VkMemoryType,
         VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION,
         pattern VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION,
         VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME,
@@ -75,26 +163,21 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.Import           (VkImportMemoryHostPointerInfoEXT,
-                                                      VkImportMemoryHostPointerInfoEXT')
+import Graphics.Vulkan.Types.Struct.Import           (VkImportMemoryHostPointerInfoEXT)
 import Graphics.Vulkan.Types.Struct.Memory
 import Graphics.Vulkan.Types.Struct.PhysicalDevice   (VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
-                                                      VkPhysicalDeviceExternalMemoryHostPropertiesEXT',
                                                       VkPhysicalDeviceLimits,
-                                                      VkPhysicalDeviceLimits',
                                                       VkPhysicalDeviceProperties,
-                                                      VkPhysicalDeviceProperties',
                                                       VkPhysicalDeviceProperties2,
-                                                      VkPhysicalDeviceProperties2',
-                                                      VkPhysicalDeviceSparseProperties,
-                                                      VkPhysicalDeviceSparseProperties')
+                                                      VkPhysicalDeviceSparseProperties)
 
 pattern VkGetMemoryHostPointerPropertiesEXT :: CString
 
 pattern VkGetMemoryHostPointerPropertiesEXT <-
         (is_VkGetMemoryHostPointerPropertiesEXT -> True)
-  where VkGetMemoryHostPointerPropertiesEXT
-          = _VkGetMemoryHostPointerPropertiesEXT
+  where
+    VkGetMemoryHostPointerPropertiesEXT
+      = _VkGetMemoryHostPointerPropertiesEXT
 
 {-# INLINE _VkGetMemoryHostPointerPropertiesEXT #-}
 
@@ -146,18 +229,18 @@
                  HS_vkGetMemoryHostPointerPropertiesEXT
 
 instance VulkanProc "vkGetMemoryHostPointerPropertiesEXT" where
-        type VkProcType "vkGetMemoryHostPointerPropertiesEXT" =
-             HS_vkGetMemoryHostPointerPropertiesEXT
-        vkProcSymbol = _VkGetMemoryHostPointerPropertiesEXT
+    type VkProcType "vkGetMemoryHostPointerPropertiesEXT" =
+         HS_vkGetMemoryHostPointerPropertiesEXT
+    vkProcSymbol = _VkGetMemoryHostPointerPropertiesEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetMemoryHostPointerPropertiesEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetMemoryHostPointerPropertiesEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetMemoryHostPointerPropertiesEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetMemoryHostPointerPropertiesEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -170,8 +253,9 @@
 
 pattern VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME <-
         (is_VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME -> True)
-  where VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME
-          = _VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME
+  where
+    VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME
+      = _VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_global_priority.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_global_priority.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_global_priority.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_global_priority.hs
@@ -17,12 +17,14 @@
         -- type: @device@
         --
         -- Extension number: @175@
-        module Graphics.Vulkan.Types.Enum.Device, VkDeviceQueueCreateInfo,
-        VkDeviceQueueCreateInfo', VkDeviceQueueGlobalPriorityCreateInfoEXT,
-        VkDeviceQueueGlobalPriorityCreateInfoEXT',
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Queue,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkDeviceEventTypeEXT(..), VkDeviceGroupPresentModeBitmaskKHR(..),
+        VkDeviceCreateFlagBits(..), VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkDeviceQueueCreateInfo, VkDeviceQueueGlobalPriorityCreateInfoEXT,
+        VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkQueueBitmask(..), VkQueueGlobalPriorityEXT(..),
+        VkQueueFlagBits(), VkQueueFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION,
         pattern VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION,
@@ -38,10 +40,7 @@
 import Graphics.Vulkan.Types.Enum.Queue
 import Graphics.Vulkan.Types.Enum.Result        (VkResult (..))
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.Device      (VkDeviceQueueCreateInfo,
-                                                 VkDeviceQueueCreateInfo',
-                                                 VkDeviceQueueGlobalPriorityCreateInfoEXT,
-                                                 VkDeviceQueueGlobalPriorityCreateInfoEXT')
+import Graphics.Vulkan.Types.Struct.Device      (VkDeviceQueueCreateInfo, VkDeviceQueueGlobalPriorityCreateInfoEXT)
 
 pattern VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -53,8 +52,9 @@
 
 pattern VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME <-
         (is_VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME -> True)
-  where VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME
-          = _VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME
+  where
+    VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME
+      = _VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_hdr_metadata.hs
@@ -27,14 +27,34 @@
         --
 
         -- ** Required extensions: 'VK_KHR_swapchain'.
-        VkHdrMetadataEXT, VkHdrMetadataEXT',
-        module Graphics.Vulkan.Types.Enum.StructureType, VkXYColorEXT,
-        VkXYColorEXT', -- > #include "vk_platform.h"
-                       VkSetHdrMetadataEXT, pattern VkSetHdrMetadataEXT,
-        HS_vkSetHdrMetadataEXT, PFN_vkSetHdrMetadataEXT,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.HdrMetadataEXT,
-        module Graphics.Vulkan.Types.Struct.XYColorEXT,
+        VkHdrMetadataEXT, VkStructureType(..), VkXYColorEXT,
+        -- > #include "vk_platform.h"
+        VkSetHdrMetadataEXT, pattern VkSetHdrMetadataEXT,
+        HS_vkSetHdrMetadataEXT, PFN_vkSetHdrMetadataEXT, VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_EXT_HDR_METADATA_SPEC_VERSION,
         pattern VK_EXT_HDR_METADATA_SPEC_VERSION,
         VK_EXT_HDR_METADATA_EXTENSION_NAME,
@@ -52,7 +72,8 @@
 pattern VkSetHdrMetadataEXT :: CString
 
 pattern VkSetHdrMetadataEXT <- (is_VkSetHdrMetadataEXT -> True)
-  where VkSetHdrMetadataEXT = _VkSetHdrMetadataEXT
+  where
+    VkSetHdrMetadataEXT = _VkSetHdrMetadataEXT
 
 {-# INLINE _VkSetHdrMetadataEXT #-}
 
@@ -92,16 +113,16 @@
                :: PFN_vkSetHdrMetadataEXT -> HS_vkSetHdrMetadataEXT
 
 instance VulkanProc "vkSetHdrMetadataEXT" where
-        type VkProcType "vkSetHdrMetadataEXT" = HS_vkSetHdrMetadataEXT
-        vkProcSymbol = _VkSetHdrMetadataEXT
+    type VkProcType "vkSetHdrMetadataEXT" = HS_vkSetHdrMetadataEXT
+    vkProcSymbol = _VkSetHdrMetadataEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkSetHdrMetadataEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkSetHdrMetadataEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkSetHdrMetadataEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkSetHdrMetadataEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_HDR_METADATA_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -113,8 +134,9 @@
 
 pattern VK_EXT_HDR_METADATA_EXTENSION_NAME <-
         (is_VK_EXT_HDR_METADATA_EXTENSION_NAME -> True)
-  where VK_EXT_HDR_METADATA_EXTENSION_NAME
-          = _VK_EXT_HDR_METADATA_EXTENSION_NAME
+  where
+    VK_EXT_HDR_METADATA_EXTENSION_NAME
+      = _VK_EXT_HDR_METADATA_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_HDR_METADATA_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_post_depth_coverage.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_post_depth_coverage.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_post_depth_coverage.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_post_depth_coverage.hs
@@ -36,8 +36,9 @@
 
 pattern VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME <-
         (is_VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME -> True)
-  where VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
-          = _VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
+  where
+    VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
+      = _VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_queue_family_foreign.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_queue_family_foreign.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_queue_family_foreign.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_queue_family_foreign.hs
@@ -43,8 +43,9 @@
 
 pattern VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME <-
         (is_VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME -> True)
-  where VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME
-          = _VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME
+  where
+    VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME
+      = _VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sample_locations.hs
@@ -23,50 +23,115 @@
         -- type: @device@
         --
         -- Extension number: @144@
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.AccessFlags,
-        VkAttachmentSampleLocationsEXT, VkAttachmentSampleLocationsEXT',
-        module Graphics.Vulkan.Types.BaseTypes, VkClearColorValue,
-        VkClearColorValue', VkClearDepthStencilValue,
-        VkClearDepthStencilValue', VkClearValue, VkClearValue', VkExtent2D,
-        VkExtent2D', module Graphics.Vulkan.Types.Enum.Image,
-        VkImageMemoryBarrier, VkImageMemoryBarrier',
-        VkImageSubresourceRange, VkImageSubresourceRange',
-        VkMultisamplePropertiesEXT, VkMultisamplePropertiesEXT',
-        VkOffset2D, VkOffset2D', VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2',
+        module Graphics.Vulkan.Marshal, VkAccessBitmask(..),
+        VkAccessFlagBits(), VkAccessFlags(),
+        VkAttachmentSampleLocationsEXT, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkClearColorValue,
+        VkClearDepthStencilValue, VkClearValue, VkExtent2D,
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkImageMemoryBarrier,
+        VkImageSubresourceRange, VkMultisamplePropertiesEXT, VkOffset2D,
+        VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
+        VkPhysicalDeviceProperties2,
         VkPhysicalDeviceSampleLocationsPropertiesEXT,
-        VkPhysicalDeviceSampleLocationsPropertiesEXT',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Bitmasks,
+        VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType(..),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
         VkPipelineMultisampleStateCreateInfo,
-        VkPipelineMultisampleStateCreateInfo',
-        VkPipelineSampleLocationsStateCreateInfoEXT,
-        VkPipelineSampleLocationsStateCreateInfoEXT', VkRect2D, VkRect2D',
-        VkRenderPassBeginInfo, VkRenderPassBeginInfo',
-        VkRenderPassSampleLocationsBeginInfoEXT,
-        VkRenderPassSampleLocationsBeginInfoEXT',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        VkSampleLocationEXT, VkSampleLocationEXT',
-        VkSampleLocationsInfoEXT, VkSampleLocationsInfoEXT',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        VkSubpassSampleLocationsEXT, VkSubpassSampleLocationsEXT',
-        -- > #include "vk_platform.h"
-        VkCmdSetSampleLocationsEXT, pattern VkCmdSetSampleLocationsEXT,
-        HS_vkCmdSetSampleLocationsEXT, PFN_vkCmdSetSampleLocationsEXT,
+        VkPipelineSampleLocationsStateCreateInfoEXT, VkRect2D,
+        VkRenderPassBeginInfo, VkRenderPassSampleLocationsBeginInfoEXT,
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkSampleLocationEXT,
+        VkSampleLocationsInfoEXT, VkStructureType(..),
+        VkSubpassSampleLocationsEXT, -- > #include "vk_platform.h"
+                                     VkCmdSetSampleLocationsEXT,
+        pattern VkCmdSetSampleLocationsEXT, HS_vkCmdSetSampleLocationsEXT,
+        PFN_vkCmdSetSampleLocationsEXT,
         VkGetPhysicalDeviceMultisamplePropertiesEXT,
         pattern VkGetPhysicalDeviceMultisamplePropertiesEXT,
         HS_vkGetPhysicalDeviceMultisamplePropertiesEXT,
-        PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Struct.MultisamplePropertiesEXT,
-        module Graphics.Vulkan.Types.Struct.SampleLocation,
+        PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT, VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkExtent3D, VkImageBlit, VkImageCopy, VkImageCreateInfo,
+        VkImageFormatListCreateInfoKHR, VkImageFormatProperties,
+        VkImageFormatProperties2, VkImageFormatProperties2KHR,
+        VkImageMemoryRequirementsInfo2, VkImageMemoryRequirementsInfo2KHR,
+        VkImagePlaneMemoryRequirementsInfo,
+        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
+        VkImageSparseMemoryRequirementsInfo2,
+        VkImageSparseMemoryRequirementsInfo2KHR, VkImageSubresource,
+        VkImageSubresourceLayers, VkImageSwapchainCreateInfoKHR,
+        VkImageViewCreateInfo, VkImageViewUsageCreateInfo,
+        VkImageViewUsageCreateInfoKHR,
         VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION,
         pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION,
         VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME,
@@ -91,48 +156,32 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.Attachment               (VkAttachmentSampleLocationsEXT,
-                                                              VkAttachmentSampleLocationsEXT')
-import Graphics.Vulkan.Types.Struct.Clear                    (VkClearColorValue,
-                                                              VkClearColorValue',
-                                                              VkClearDepthStencilValue,
-                                                              VkClearDepthStencilValue',
-                                                              VkClearValue,
-                                                              VkClearValue')
+import Graphics.Vulkan.Types.Struct.Attachment               (VkAttachmentSampleLocationsEXT)
+import Graphics.Vulkan.Types.Struct.Clear                    (VkClearColorValue, VkClearDepthStencilValue,
+                                                              VkClearValue)
 import Graphics.Vulkan.Types.Struct.Extent
 import Graphics.Vulkan.Types.Struct.Image
 import Graphics.Vulkan.Types.Struct.MultisamplePropertiesEXT
-import Graphics.Vulkan.Types.Struct.Offset                   (VkOffset2D,
-                                                              VkOffset2D')
+import Graphics.Vulkan.Types.Struct.Offset                   (VkOffset2D)
 import Graphics.Vulkan.Types.Struct.PhysicalDevice           (VkPhysicalDeviceLimits,
-                                                              VkPhysicalDeviceLimits',
                                                               VkPhysicalDeviceProperties,
-                                                              VkPhysicalDeviceProperties',
                                                               VkPhysicalDeviceProperties2,
-                                                              VkPhysicalDeviceProperties2',
                                                               VkPhysicalDeviceSampleLocationsPropertiesEXT,
-                                                              VkPhysicalDeviceSampleLocationsPropertiesEXT',
-                                                              VkPhysicalDeviceSparseProperties,
-                                                              VkPhysicalDeviceSparseProperties')
+                                                              VkPhysicalDeviceSparseProperties)
 import Graphics.Vulkan.Types.Struct.Pipeline                 (VkPipelineMultisampleStateCreateInfo,
-                                                              VkPipelineMultisampleStateCreateInfo',
-                                                              VkPipelineSampleLocationsStateCreateInfoEXT,
-                                                              VkPipelineSampleLocationsStateCreateInfoEXT')
-import Graphics.Vulkan.Types.Struct.Rect                     (VkRect2D,
-                                                              VkRect2D')
+                                                              VkPipelineSampleLocationsStateCreateInfoEXT)
+import Graphics.Vulkan.Types.Struct.Rect                     (VkRect2D)
 import Graphics.Vulkan.Types.Struct.RenderPass               (VkRenderPassBeginInfo,
-                                                              VkRenderPassBeginInfo',
-                                                              VkRenderPassSampleLocationsBeginInfoEXT,
-                                                              VkRenderPassSampleLocationsBeginInfoEXT')
+                                                              VkRenderPassSampleLocationsBeginInfoEXT)
 import Graphics.Vulkan.Types.Struct.SampleLocation
-import Graphics.Vulkan.Types.Struct.Subpass                  (VkSubpassSampleLocationsEXT,
-                                                              VkSubpassSampleLocationsEXT')
+import Graphics.Vulkan.Types.Struct.Subpass                  (VkSubpassSampleLocationsEXT)
 
 pattern VkCmdSetSampleLocationsEXT :: CString
 
 pattern VkCmdSetSampleLocationsEXT <-
         (is_VkCmdSetSampleLocationsEXT -> True)
-  where VkCmdSetSampleLocationsEXT = _VkCmdSetSampleLocationsEXT
+  where
+    VkCmdSetSampleLocationsEXT = _VkCmdSetSampleLocationsEXT
 
 {-# INLINE _VkCmdSetSampleLocationsEXT #-}
 
@@ -174,24 +223,25 @@
                PFN_vkCmdSetSampleLocationsEXT -> HS_vkCmdSetSampleLocationsEXT
 
 instance VulkanProc "vkCmdSetSampleLocationsEXT" where
-        type VkProcType "vkCmdSetSampleLocationsEXT" =
-             HS_vkCmdSetSampleLocationsEXT
-        vkProcSymbol = _VkCmdSetSampleLocationsEXT
+    type VkProcType "vkCmdSetSampleLocationsEXT" =
+         HS_vkCmdSetSampleLocationsEXT
+    vkProcSymbol = _VkCmdSetSampleLocationsEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetSampleLocationsEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetSampleLocationsEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetSampleLocationsEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetSampleLocationsEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceMultisamplePropertiesEXT :: CString
 
 pattern VkGetPhysicalDeviceMultisamplePropertiesEXT <-
         (is_VkGetPhysicalDeviceMultisamplePropertiesEXT -> True)
-  where VkGetPhysicalDeviceMultisamplePropertiesEXT
-          = _VkGetPhysicalDeviceMultisamplePropertiesEXT
+  where
+    VkGetPhysicalDeviceMultisamplePropertiesEXT
+      = _VkGetPhysicalDeviceMultisamplePropertiesEXT
 
 {-# INLINE _VkGetPhysicalDeviceMultisamplePropertiesEXT #-}
 
@@ -238,19 +288,19 @@
 
 instance VulkanProc "vkGetPhysicalDeviceMultisamplePropertiesEXT"
          where
-        type VkProcType "vkGetPhysicalDeviceMultisamplePropertiesEXT" =
-             HS_vkGetPhysicalDeviceMultisamplePropertiesEXT
-        vkProcSymbol = _VkGetPhysicalDeviceMultisamplePropertiesEXT
+    type VkProcType "vkGetPhysicalDeviceMultisamplePropertiesEXT" =
+         HS_vkGetPhysicalDeviceMultisamplePropertiesEXT
+    vkProcSymbol = _VkGetPhysicalDeviceMultisamplePropertiesEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceMultisamplePropertiesEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -262,8 +312,9 @@
 
 pattern VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME <-
         (is_VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME -> True)
-  where VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME
-          = _VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME
+  where
+    VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME
+      = _VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sampler_filter_minmax.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sampler_filter_minmax.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_sampler_filter_minmax.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_sampler_filter_minmax.hs
@@ -22,25 +22,63 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.BorderColor,
-        module Graphics.Vulkan.Types.Enum.CompareOp,
-        module Graphics.Vulkan.Types.Enum.Filter, VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2',
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkBorderColor(..), VkCompareOp(..),
+        VkFilter(..), VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
+        VkPhysicalDeviceProperties2,
         VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
-        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.Sampler,
-        module Graphics.Vulkan.Types.Bitmasks, VkSamplerCreateInfo,
-        VkSamplerCreateInfo', VkSamplerReductionModeCreateInfoEXT,
-        VkSamplerReductionModeCreateInfoEXT',
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType(..),
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkSamplerAddressMode(..),
+        VkSamplerMipmapMode(..), VkSamplerReductionModeEXT(..),
+        VkSamplerYcbcrModelConversion(..), VkSamplerYcbcrRange(..),
+        VkSamplerCreateFlagBits(..), VkSamplerYcbcrModelConversionKHR(..),
+        VkSamplerYcbcrRangeKHR(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkSamplerCreateInfo,
+        VkSamplerReductionModeCreateInfoEXT, VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION,
         pattern VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION,
@@ -57,26 +95,17 @@
 import Graphics.Vulkan.Types.Enum.BorderColor
 import Graphics.Vulkan.Types.Enum.CompareOp
 import Graphics.Vulkan.Types.Enum.Filter
-import Graphics.Vulkan.Types.Enum.Format             (VkFormatFeatureBitmask (..),
-                                                      VkFormatFeatureFlagBits)
+import Graphics.Vulkan.Types.Enum.Format             (VkFormatFeatureBitmask (..))
 import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.Sampler
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Struct.PhysicalDevice   (VkPhysicalDeviceLimits,
-                                                      VkPhysicalDeviceLimits',
                                                       VkPhysicalDeviceProperties,
-                                                      VkPhysicalDeviceProperties',
                                                       VkPhysicalDeviceProperties2,
-                                                      VkPhysicalDeviceProperties2',
                                                       VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
-                                                      VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT',
-                                                      VkPhysicalDeviceSparseProperties,
-                                                      VkPhysicalDeviceSparseProperties')
-import Graphics.Vulkan.Types.Struct.Sampler          (VkSamplerCreateInfo,
-                                                      VkSamplerCreateInfo',
-                                                      VkSamplerReductionModeCreateInfoEXT,
-                                                      VkSamplerReductionModeCreateInfoEXT')
+                                                      VkPhysicalDeviceSparseProperties)
+import Graphics.Vulkan.Types.Struct.Sampler          (VkSamplerCreateInfo, VkSamplerReductionModeCreateInfoEXT)
 
 pattern VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -89,8 +118,9 @@
 
 pattern VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME <-
         (is_VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME -> True)
-  where VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME
-          = _VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME
+  where
+    VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME
+      = _VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_stencil_export.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_stencil_export.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_stencil_export.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_stencil_export.hs
@@ -36,8 +36,9 @@
 
 pattern VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME <-
         (is_VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME -> True)
-  where VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
-          = _VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
+  where
+    VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
+      = _VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_subgroup_ballot.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_subgroup_ballot.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_subgroup_ballot.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_subgroup_ballot.hs
@@ -36,8 +36,9 @@
 
 pattern VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME <-
         (is_VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME -> True)
-  where VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
-          = _VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
+  where
+    VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
+      = _VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_subgroup_vote.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_subgroup_vote.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_subgroup_vote.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_subgroup_vote.hs
@@ -36,8 +36,9 @@
 
 pattern VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME <-
         (is_VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME -> True)
-  where VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
-          = _VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
+  where
+    VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
+      = _VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_viewport_index_layer.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_viewport_index_layer.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_viewport_index_layer.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_shader_viewport_index_layer.hs
@@ -37,8 +37,9 @@
 
 pattern VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME <-
         (is_VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME -> True)
-  where VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
-          = _VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
+  where
+    VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
+      = _VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_swapchain_colorspace.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_swapchain_colorspace.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_swapchain_colorspace.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_swapchain_colorspace.hs
@@ -56,8 +56,9 @@
 
 pattern VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME <-
         (is_VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME -> True)
-  where VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME
-          = _VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME
+  where
+    VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME
+      = _VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_cache.hs
@@ -23,15 +23,55 @@
         -- type: @device@
         --
         -- Extension number: @161@
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks, VkShaderModuleCreateInfo,
-        VkShaderModuleCreateInfo',
-        VkShaderModuleValidationCacheCreateInfoEXT,
-        VkShaderModuleValidationCacheCreateInfoEXT',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        VkValidationCacheCreateInfoEXT, VkValidationCacheCreateInfoEXT',
-        module Graphics.Vulkan.Types.Enum.ValidationC,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkShaderModuleCreateInfo,
+        VkShaderModuleValidationCacheCreateInfoEXT, VkStructureType(..),
+        VkValidationCacheCreateInfoEXT,
+        VkValidationCacheHeaderVersionEXT(..), VkValidationCheckEXT(..),
         -- > #include "vk_platform.h"
         VkCreateValidationCacheEXT, pattern VkCreateValidationCacheEXT,
         HS_vkCreateValidationCacheEXT, PFN_vkCreateValidationCacheEXT,
@@ -41,13 +81,50 @@
         HS_vkMergeValidationCachesEXT, PFN_vkMergeValidationCachesEXT,
         VkGetValidationCacheDataEXT, pattern VkGetValidationCacheDataEXT,
         HS_vkGetValidationCacheDataEXT, PFN_vkGetValidationCacheDataEXT,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.Validation,
+        VkInternalAllocationType(..), VkResult(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkValidationFlagsEXT,
         VK_EXT_VALIDATION_CACHE_SPEC_VERSION,
         pattern VK_EXT_VALIDATION_CACHE_SPEC_VERSION,
         VK_EXT_VALIDATION_CACHE_EXTENSION_NAME,
@@ -73,16 +150,15 @@
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Struct.AllocationCallbacks
 import Graphics.Vulkan.Types.Struct.Shader               (VkShaderModuleCreateInfo,
-                                                          VkShaderModuleCreateInfo',
-                                                          VkShaderModuleValidationCacheCreateInfoEXT,
-                                                          VkShaderModuleValidationCacheCreateInfoEXT')
+                                                          VkShaderModuleValidationCacheCreateInfoEXT)
 import Graphics.Vulkan.Types.Struct.Validation
 
 pattern VkCreateValidationCacheEXT :: CString
 
 pattern VkCreateValidationCacheEXT <-
         (is_VkCreateValidationCacheEXT -> True)
-  where VkCreateValidationCacheEXT = _VkCreateValidationCacheEXT
+  where
+    VkCreateValidationCacheEXT = _VkCreateValidationCacheEXT
 
 {-# INLINE _VkCreateValidationCacheEXT #-}
 
@@ -131,23 +207,24 @@
                PFN_vkCreateValidationCacheEXT -> HS_vkCreateValidationCacheEXT
 
 instance VulkanProc "vkCreateValidationCacheEXT" where
-        type VkProcType "vkCreateValidationCacheEXT" =
-             HS_vkCreateValidationCacheEXT
-        vkProcSymbol = _VkCreateValidationCacheEXT
+    type VkProcType "vkCreateValidationCacheEXT" =
+         HS_vkCreateValidationCacheEXT
+    vkProcSymbol = _VkCreateValidationCacheEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateValidationCacheEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateValidationCacheEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateValidationCacheEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateValidationCacheEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDestroyValidationCacheEXT :: CString
 
 pattern VkDestroyValidationCacheEXT <-
         (is_VkDestroyValidationCacheEXT -> True)
-  where VkDestroyValidationCacheEXT = _VkDestroyValidationCacheEXT
+  where
+    VkDestroyValidationCacheEXT = _VkDestroyValidationCacheEXT
 
 {-# INLINE _VkDestroyValidationCacheEXT #-}
 
@@ -189,23 +266,24 @@
                PFN_vkDestroyValidationCacheEXT -> HS_vkDestroyValidationCacheEXT
 
 instance VulkanProc "vkDestroyValidationCacheEXT" where
-        type VkProcType "vkDestroyValidationCacheEXT" =
-             HS_vkDestroyValidationCacheEXT
-        vkProcSymbol = _VkDestroyValidationCacheEXT
+    type VkProcType "vkDestroyValidationCacheEXT" =
+         HS_vkDestroyValidationCacheEXT
+    vkProcSymbol = _VkDestroyValidationCacheEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyValidationCacheEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyValidationCacheEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyValidationCacheEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyValidationCacheEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkMergeValidationCachesEXT :: CString
 
 pattern VkMergeValidationCachesEXT <-
         (is_VkMergeValidationCachesEXT -> True)
-  where VkMergeValidationCachesEXT = _VkMergeValidationCachesEXT
+  where
+    VkMergeValidationCachesEXT = _VkMergeValidationCachesEXT
 
 {-# INLINE _VkMergeValidationCachesEXT #-}
 
@@ -253,23 +331,24 @@
                PFN_vkMergeValidationCachesEXT -> HS_vkMergeValidationCachesEXT
 
 instance VulkanProc "vkMergeValidationCachesEXT" where
-        type VkProcType "vkMergeValidationCachesEXT" =
-             HS_vkMergeValidationCachesEXT
-        vkProcSymbol = _VkMergeValidationCachesEXT
+    type VkProcType "vkMergeValidationCachesEXT" =
+         HS_vkMergeValidationCachesEXT
+    vkProcSymbol = _VkMergeValidationCachesEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkMergeValidationCachesEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkMergeValidationCachesEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkMergeValidationCachesEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkMergeValidationCachesEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetValidationCacheDataEXT :: CString
 
 pattern VkGetValidationCacheDataEXT <-
         (is_VkGetValidationCacheDataEXT -> True)
-  where VkGetValidationCacheDataEXT = _VkGetValidationCacheDataEXT
+  where
+    VkGetValidationCacheDataEXT = _VkGetValidationCacheDataEXT
 
 {-# INLINE _VkGetValidationCacheDataEXT #-}
 
@@ -317,17 +396,17 @@
                PFN_vkGetValidationCacheDataEXT -> HS_vkGetValidationCacheDataEXT
 
 instance VulkanProc "vkGetValidationCacheDataEXT" where
-        type VkProcType "vkGetValidationCacheDataEXT" =
-             HS_vkGetValidationCacheDataEXT
-        vkProcSymbol = _VkGetValidationCacheDataEXT
+    type VkProcType "vkGetValidationCacheDataEXT" =
+         HS_vkGetValidationCacheDataEXT
+    vkProcSymbol = _VkGetValidationCacheDataEXT
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetValidationCacheDataEXTUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetValidationCacheDataEXTUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetValidationCacheDataEXTSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetValidationCacheDataEXTSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_EXT_VALIDATION_CACHE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -339,8 +418,9 @@
 
 pattern VK_EXT_VALIDATION_CACHE_EXTENSION_NAME <-
         (is_VK_EXT_VALIDATION_CACHE_EXTENSION_NAME -> True)
-  where VK_EXT_VALIDATION_CACHE_EXTENSION_NAME
-          = _VK_EXT_VALIDATION_CACHE_EXTENSION_NAME
+  where
+    VK_EXT_VALIDATION_CACHE_EXTENSION_NAME
+      = _VK_EXT_VALIDATION_CACHE_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_VALIDATION_CACHE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_flags.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_flags.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_flags.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_validation_flags.hs
@@ -17,13 +17,54 @@
         -- type: @instance@
         --
         -- Extension number: @62@
-        module Graphics.Vulkan.Marshal, VkApplicationInfo,
-        VkApplicationInfo', module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks, VkInstanceCreateInfo,
-        VkInstanceCreateInfo',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.ValidationC,
-        VkValidationFlagsEXT, VkValidationFlagsEXT',
+        module Graphics.Vulkan.Marshal, VkApplicationInfo, VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkInstanceCreateInfo,
+        VkStructureType(..), VkValidationCacheHeaderVersionEXT(..),
+        VkValidationCheckEXT(..), VkValidationFlagsEXT,
         -- > #include "vk_platform.h"
         VK_EXT_VALIDATION_FLAGS_SPEC_VERSION,
         pattern VK_EXT_VALIDATION_FLAGS_SPEC_VERSION,
@@ -37,12 +78,9 @@
 import Graphics.Vulkan.Types.Bitmasks
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Enum.ValidationC
-import Graphics.Vulkan.Types.Struct.ApplicationInfo    (VkApplicationInfo,
-                                                        VkApplicationInfo')
-import Graphics.Vulkan.Types.Struct.InstanceCreateInfo (VkInstanceCreateInfo,
-                                                        VkInstanceCreateInfo')
-import Graphics.Vulkan.Types.Struct.Validation         (VkValidationFlagsEXT,
-                                                        VkValidationFlagsEXT')
+import Graphics.Vulkan.Types.Struct.ApplicationInfo    (VkApplicationInfo)
+import Graphics.Vulkan.Types.Struct.InstanceCreateInfo (VkInstanceCreateInfo)
+import Graphics.Vulkan.Types.Struct.Validation         (VkValidationFlagsEXT)
 
 pattern VK_EXT_VALIDATION_FLAGS_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -54,8 +92,9 @@
 
 pattern VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME <-
         (is_VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME -> True)
-  where VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME
-          = _VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME
+  where
+    VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME
+      = _VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_EXT_vertex_attribute_divisor.hs b/src-gen/Graphics/Vulkan/Ext/VK_EXT_vertex_attribute_divisor.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_EXT_vertex_attribute_divisor.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_EXT_vertex_attribute_divisor.hs
@@ -22,29 +22,62 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Format, VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2', VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkPhysicalDeviceLimits,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType(..),
         VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
-        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT',
         VkPipelineVertexInputDivisorStateCreateInfoEXT,
-        VkPipelineVertexInputDivisorStateCreateInfoEXT',
-        module Graphics.Vulkan.Types.Bitmasks,
-        VkPipelineVertexInputStateCreateInfo,
-        VkPipelineVertexInputStateCreateInfo',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        VkVertexInputAttributeDescription,
-        VkVertexInputAttributeDescription',
-        VkVertexInputBindingDescription, VkVertexInputBindingDescription',
-        VkVertexInputBindingDivisorDescriptionEXT,
-        VkVertexInputBindingDivisorDescriptionEXT',
-        module Graphics.Vulkan.Types.Enum.VertexInputRate,
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
+        VkPipelineVertexInputStateCreateInfo, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkStructureType(..),
+        VkVertexInputAttributeDescription, VkVertexInputBindingDescription,
+        VkVertexInputBindingDivisorDescriptionEXT, VkVertexInputRate(..),
         -- > #include "vk_platform.h"
         VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION,
         pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION,
@@ -63,25 +96,15 @@
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Enum.VertexInputRate
 import Graphics.Vulkan.Types.Struct.PhysicalDevice   (VkPhysicalDeviceLimits,
-                                                      VkPhysicalDeviceLimits',
                                                       VkPhysicalDeviceProperties,
-                                                      VkPhysicalDeviceProperties',
                                                       VkPhysicalDeviceProperties2,
-                                                      VkPhysicalDeviceProperties2',
                                                       VkPhysicalDeviceSparseProperties,
-                                                      VkPhysicalDeviceSparseProperties',
-                                                      VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
-                                                      VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT')
+                                                      VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT)
 import Graphics.Vulkan.Types.Struct.Pipeline         (VkPipelineVertexInputDivisorStateCreateInfoEXT,
-                                                      VkPipelineVertexInputDivisorStateCreateInfoEXT',
-                                                      VkPipelineVertexInputStateCreateInfo,
-                                                      VkPipelineVertexInputStateCreateInfo')
+                                                      VkPipelineVertexInputStateCreateInfo)
 import Graphics.Vulkan.Types.Struct.VertexInput      (VkVertexInputAttributeDescription,
-                                                      VkVertexInputAttributeDescription',
                                                       VkVertexInputBindingDescription,
-                                                      VkVertexInputBindingDescription',
-                                                      VkVertexInputBindingDivisorDescriptionEXT,
-                                                      VkVertexInputBindingDivisorDescriptionEXT')
+                                                      VkVertexInputBindingDivisorDescriptionEXT)
 
 pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -94,8 +117,9 @@
 
 pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME <-
         (is_VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME -> True)
-  where VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
-          = _VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
+  where
+    VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
+      = _VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
 
 {-# INLINE _VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs b/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_GOOGLE_display_timing.hs
@@ -27,13 +27,9 @@
         --
 
         -- ** Required extensions: 'VK_KHR_swapchain'.
-        VkPastPresentationTimingGOOGLE, VkPastPresentationTimingGOOGLE',
-        VkPresentInfoKHR, VkPresentInfoKHR', VkPresentTimeGOOGLE,
-        VkPresentTimeGOOGLE', VkPresentTimesInfoGOOGLE,
-        VkPresentTimesInfoGOOGLE', VkRefreshCycleDurationGOOGLE,
-        VkRefreshCycleDurationGOOGLE',
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPastPresentationTimingGOOGLE, VkPresentInfoKHR,
+        VkPresentTimeGOOGLE, VkPresentTimesInfoGOOGLE,
+        VkRefreshCycleDurationGOOGLE, VkResult(..), VkStructureType(..),
         -- > #include "vk_platform.h"
         VkGetRefreshCycleDurationGOOGLE,
         pattern VkGetRefreshCycleDurationGOOGLE,
@@ -43,10 +39,31 @@
         pattern VkGetPastPresentationTimingGOOGLE,
         HS_vkGetPastPresentationTimingGOOGLE,
         PFN_vkGetPastPresentationTimingGOOGLE,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.PastPresentationTimingGOOGLE,
-        module Graphics.Vulkan.Types.Struct.RefreshCycleDurationGOOGLE,
+        module Graphics.Vulkan.Marshal, VkBuffer, VkBufferView,
+        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION,
         pattern VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION,
         VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME,
@@ -61,19 +78,16 @@
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Struct.PastPresentationTimingGOOGLE
 import Graphics.Vulkan.Types.Struct.Present                      (VkPresentInfoKHR,
-                                                                  VkPresentInfoKHR',
                                                                   VkPresentTimeGOOGLE,
-                                                                  VkPresentTimeGOOGLE',
-                                                                  VkPresentTimesInfoGOOGLE,
-                                                                  VkPresentTimesInfoGOOGLE')
+                                                                  VkPresentTimesInfoGOOGLE)
 import Graphics.Vulkan.Types.Struct.RefreshCycleDurationGOOGLE
 
 pattern VkGetRefreshCycleDurationGOOGLE :: CString
 
 pattern VkGetRefreshCycleDurationGOOGLE <-
         (is_VkGetRefreshCycleDurationGOOGLE -> True)
-  where VkGetRefreshCycleDurationGOOGLE
-          = _VkGetRefreshCycleDurationGOOGLE
+  where
+    VkGetRefreshCycleDurationGOOGLE = _VkGetRefreshCycleDurationGOOGLE
 
 {-# INLINE _VkGetRefreshCycleDurationGOOGLE #-}
 
@@ -122,24 +136,25 @@
                  HS_vkGetRefreshCycleDurationGOOGLE
 
 instance VulkanProc "vkGetRefreshCycleDurationGOOGLE" where
-        type VkProcType "vkGetRefreshCycleDurationGOOGLE" =
-             HS_vkGetRefreshCycleDurationGOOGLE
-        vkProcSymbol = _VkGetRefreshCycleDurationGOOGLE
+    type VkProcType "vkGetRefreshCycleDurationGOOGLE" =
+         HS_vkGetRefreshCycleDurationGOOGLE
+    vkProcSymbol = _VkGetRefreshCycleDurationGOOGLE
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetRefreshCycleDurationGOOGLEUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetRefreshCycleDurationGOOGLEUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetRefreshCycleDurationGOOGLESafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetRefreshCycleDurationGOOGLESafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPastPresentationTimingGOOGLE :: CString
 
 pattern VkGetPastPresentationTimingGOOGLE <-
         (is_VkGetPastPresentationTimingGOOGLE -> True)
-  where VkGetPastPresentationTimingGOOGLE
-          = _VkGetPastPresentationTimingGOOGLE
+  where
+    VkGetPastPresentationTimingGOOGLE
+      = _VkGetPastPresentationTimingGOOGLE
 
 {-# INLINE _VkGetPastPresentationTimingGOOGLE #-}
 
@@ -191,18 +206,18 @@
                  HS_vkGetPastPresentationTimingGOOGLE
 
 instance VulkanProc "vkGetPastPresentationTimingGOOGLE" where
-        type VkProcType "vkGetPastPresentationTimingGOOGLE" =
-             HS_vkGetPastPresentationTimingGOOGLE
-        vkProcSymbol = _VkGetPastPresentationTimingGOOGLE
+    type VkProcType "vkGetPastPresentationTimingGOOGLE" =
+         HS_vkGetPastPresentationTimingGOOGLE
+    vkProcSymbol = _VkGetPastPresentationTimingGOOGLE
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPastPresentationTimingGOOGLEUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPastPresentationTimingGOOGLEUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPastPresentationTimingGOOGLESafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPastPresentationTimingGOOGLESafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -214,8 +229,9 @@
 
 pattern VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME <-
         (is_VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME -> True)
-  where VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME
-          = _VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME
+  where
+    VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME
+      = _VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME
 
 {-# INLINE _VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_IMG_filter_cubic.hs b/src-gen/Graphics/Vulkan/Ext/VK_IMG_filter_cubic.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_IMG_filter_cubic.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_IMG_filter_cubic.hs
@@ -27,8 +27,7 @@
 import GHC.Ptr                           (Ptr (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Types.Enum.Filter (VkFilter (..))
-import Graphics.Vulkan.Types.Enum.Format (VkFormatFeatureBitmask (..),
-                                          VkFormatFeatureFlagBits)
+import Graphics.Vulkan.Types.Enum.Format (VkFormatFeatureBitmask (..))
 
 pattern VK_IMG_FILTER_CUBIC_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -40,8 +39,9 @@
 
 pattern VK_IMG_FILTER_CUBIC_EXTENSION_NAME <-
         (is_VK_IMG_FILTER_CUBIC_EXTENSION_NAME -> True)
-  where VK_IMG_FILTER_CUBIC_EXTENSION_NAME
-          = _VK_IMG_FILTER_CUBIC_EXTENSION_NAME
+  where
+    VK_IMG_FILTER_CUBIC_EXTENSION_NAME
+      = _VK_IMG_FILTER_CUBIC_EXTENSION_NAME
 
 {-# INLINE _VK_IMG_FILTER_CUBIC_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_IMG_format_pvrtc.hs b/src-gen/Graphics/Vulkan/Ext/VK_IMG_format_pvrtc.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_IMG_format_pvrtc.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_IMG_format_pvrtc.hs
@@ -44,8 +44,9 @@
 
 pattern VK_IMG_FORMAT_PVRTC_EXTENSION_NAME <-
         (is_VK_IMG_FORMAT_PVRTC_EXTENSION_NAME -> True)
-  where VK_IMG_FORMAT_PVRTC_EXTENSION_NAME
-          = _VK_IMG_FORMAT_PVRTC_EXTENSION_NAME
+  where
+    VK_IMG_FORMAT_PVRTC_EXTENSION_NAME
+      = _VK_IMG_FORMAT_PVRTC_EXTENSION_NAME
 
 {-# INLINE _VK_IMG_FORMAT_PVRTC_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_16bit_storage.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_16bit_storage.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_16bit_storage.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_16bit_storage.hs
@@ -23,7 +23,7 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2', 'VK_KHR_storage_buffer_storage_class'.
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
         VK_KHR_16BIT_STORAGE_SPEC_VERSION,
         pattern VK_KHR_16BIT_STORAGE_SPEC_VERSION,
         VK_KHR_16BIT_STORAGE_EXTENSION_NAME,
@@ -33,7 +33,7 @@
 import GHC.Ptr                                     (Ptr (..))
 import Graphics.Vulkan.Core_1_1                    (pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES)
 import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Types.Struct.PhysicalDevice
+import Graphics.Vulkan.Types.Struct.PhysicalDevice (VkPhysicalDevice16BitStorageFeaturesKHR)
 
 pattern VK_KHR_16BIT_STORAGE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -45,8 +45,9 @@
 
 pattern VK_KHR_16BIT_STORAGE_EXTENSION_NAME <-
         (is_VK_KHR_16BIT_STORAGE_EXTENSION_NAME -> True)
-  where VK_KHR_16BIT_STORAGE_EXTENSION_NAME
-          = _VK_KHR_16BIT_STORAGE_EXTENSION_NAME
+  where
+    VK_KHR_16BIT_STORAGE_EXTENSION_NAME
+      = _VK_KHR_16BIT_STORAGE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_16BIT_STORAGE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_android_surface.hs
@@ -12,42 +12,110 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_android_surface
-       (-- * Vulkan extension: @VK_KHR_android_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jesse Hall @critsec@
-        --
-        -- author: @KHR@
-        --
-        -- type: @instance@
-        --
-        -- platform: @android@
-        --
-        -- Extension number: @9@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.Bitmasks,
-        VkAndroidSurfaceCreateInfoKHR, VkAndroidSurfaceCreateInfoKHR',
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkCreateAndroidSurfaceKHR, pattern VkCreateAndroidSurfaceKHR,
-        HS_vkCreateAndroidSurfaceKHR, PFN_vkCreateAndroidSurfaceKHR,
-        vkCreateAndroidSurfaceKHR, vkCreateAndroidSurfaceKHRUnsafe,
-        vkCreateAndroidSurfaceKHRSafe, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Defines,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformAndroidKhr,
+       (VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkAndroidSurfaceCreateInfoKHR,
+        VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VkCreateAndroidSurfaceKHR,
+        pattern VkCreateAndroidSurfaceKHR, HS_vkCreateAndroidSurfaceKHR,
+        PFN_vkCreateAndroidSurfaceKHR, vkCreateAndroidSurfaceKHR,
+        vkCreateAndroidSurfaceKHRUnsafe, vkCreateAndroidSurfaceKHRSafe,
+        module Graphics.Vulkan.Marshal, _VK_MAKE_VERSION,
+        _VK_VERSION_MAJOR, _VK_VERSION_MINOR, _VK_VERSION_PATCH,
+        pattern VK_API_VERSION_1_0, pattern VK_API_VERSION_1_1,
+        pattern VK_HEADER_VERSION, AHardwareBuffer(), ANativeWindow(),
+        VK_API_VERSION_1_0, VK_API_VERSION_1_1, VK_HEADER_VERSION,
+        VkInternalAllocationType(..), VkResult(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks,
+        VkAndroidHardwareBufferFormatPropertiesANDROID,
+        VkAndroidHardwareBufferPropertiesANDROID,
+        VkAndroidHardwareBufferUsageANDROID, VkExternalFormatANDROID,
+        VkImportAndroidHardwareBufferInfoANDROID,
+        VkMemoryGetAndroidHardwareBufferInfoANDROID,
         VK_KHR_ANDROID_SURFACE_SPEC_VERSION,
         pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION,
         VK_KHR_ANDROID_SURFACE_EXTENSION_NAME,
@@ -74,7 +142,8 @@
 
 pattern VkCreateAndroidSurfaceKHR <-
         (is_VkCreateAndroidSurfaceKHR -> True)
-  where VkCreateAndroidSurfaceKHR = _VkCreateAndroidSurfaceKHR
+  where
+    VkCreateAndroidSurfaceKHR = _VkCreateAndroidSurfaceKHR
 
 {-# INLINE _VkCreateAndroidSurfaceKHR #-}
 
@@ -286,17 +355,17 @@
                PFN_vkCreateAndroidSurfaceKHR -> HS_vkCreateAndroidSurfaceKHR
 
 instance VulkanProc "vkCreateAndroidSurfaceKHR" where
-        type VkProcType "vkCreateAndroidSurfaceKHR" =
-             HS_vkCreateAndroidSurfaceKHR
-        vkProcSymbol = _VkCreateAndroidSurfaceKHR
+    type VkProcType "vkCreateAndroidSurfaceKHR" =
+         HS_vkCreateAndroidSurfaceKHR
+    vkProcSymbol = _VkCreateAndroidSurfaceKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateAndroidSurfaceKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateAndroidSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateAndroidSurfaceKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateAndroidSurfaceKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -308,8 +377,9 @@
 
 pattern VK_KHR_ANDROID_SURFACE_EXTENSION_NAME <-
         (is_VK_KHR_ANDROID_SURFACE_EXTENSION_NAME -> True)
-  where VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
-          = _VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
+  where
+    VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
+      = _VK_KHR_ANDROID_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_ANDROID_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_bind_memory2.hs
@@ -23,15 +23,44 @@
         -- type: @device@
         --
         -- Extension number: @158@
-        module Graphics.Vulkan.Types.Struct.Bind, VkBindBufferMemory2KHR,
-        pattern VkBindBufferMemory2KHR, HS_vkBindBufferMemory2KHR,
-        PFN_vkBindBufferMemory2KHR, VkBindImageMemory2KHR,
-        pattern VkBindImageMemory2KHR, HS_vkBindImageMemory2KHR,
-        PFN_vkBindImageMemory2KHR, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Handles,
+        VkBindBufferMemoryInfoKHR, VkBindImageMemoryInfoKHR,
+        VkBindBufferMemory2KHR, pattern VkBindBufferMemory2KHR,
+        HS_vkBindBufferMemory2KHR, PFN_vkBindBufferMemory2KHR,
+        VkBindImageMemory2KHR, pattern VkBindImageMemory2KHR,
+        HS_vkBindImageMemory2KHR, PFN_vkBindImageMemory2KHR,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkResult(..), VkStructureType(..),
+        VkBuffer, VkBufferView, VkBufferView_T(), VkBuffer_T(),
+        VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkBindBufferMemoryDeviceGroupInfo,
+        VkBindBufferMemoryDeviceGroupInfoKHR, VkBindBufferMemoryInfo,
+        VkBindImageMemoryDeviceGroupInfo,
+        VkBindImageMemoryDeviceGroupInfoKHR, VkBindImageMemoryInfo,
+        VkBindImageMemorySwapchainInfoKHR, VkBindImagePlaneMemoryInfo,
+        VkBindImagePlaneMemoryInfoKHR, VkBindSparseInfo,
         VK_KHR_BIND_MEMORY_2_SPEC_VERSION,
         pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION,
         VK_KHR_BIND_MEMORY_2_EXTENSION_NAME,
@@ -56,7 +85,8 @@
 
 pattern VkBindBufferMemory2KHR <-
         (is_VkBindBufferMemory2KHR -> True)
-  where VkBindBufferMemory2KHR = _VkBindBufferMemory2KHR
+  where
+    VkBindBufferMemory2KHR = _VkBindBufferMemory2KHR
 
 {-# INLINE _VkBindBufferMemory2KHR #-}
 
@@ -101,22 +131,23 @@
                PFN_vkBindBufferMemory2KHR -> HS_vkBindBufferMemory2KHR
 
 instance VulkanProc "vkBindBufferMemory2KHR" where
-        type VkProcType "vkBindBufferMemory2KHR" =
-             HS_vkBindBufferMemory2KHR
-        vkProcSymbol = _VkBindBufferMemory2KHR
+    type VkProcType "vkBindBufferMemory2KHR" =
+         HS_vkBindBufferMemory2KHR
+    vkProcSymbol = _VkBindBufferMemory2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemory2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkBindBufferMemory2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkBindBufferMemory2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkBindImageMemory2KHR :: CString
 
 pattern VkBindImageMemory2KHR <- (is_VkBindImageMemory2KHR -> True)
-  where VkBindImageMemory2KHR = _VkBindImageMemory2KHR
+  where
+    VkBindImageMemory2KHR = _VkBindImageMemory2KHR
 
 {-# INLINE _VkBindImageMemory2KHR #-}
 
@@ -160,16 +191,16 @@
                :: PFN_vkBindImageMemory2KHR -> HS_vkBindImageMemory2KHR
 
 instance VulkanProc "vkBindImageMemory2KHR" where
-        type VkProcType "vkBindImageMemory2KHR" = HS_vkBindImageMemory2KHR
-        vkProcSymbol = _VkBindImageMemory2KHR
+    type VkProcType "vkBindImageMemory2KHR" = HS_vkBindImageMemory2KHR
+    vkProcSymbol = _VkBindImageMemory2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkBindImageMemory2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkBindImageMemory2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkBindImageMemory2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkBindImageMemory2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -181,8 +212,9 @@
 
 pattern VK_KHR_BIND_MEMORY_2_EXTENSION_NAME <-
         (is_VK_KHR_BIND_MEMORY_2_EXTENSION_NAME -> True)
-  where VK_KHR_BIND_MEMORY_2_EXTENSION_NAME
-          = _VK_KHR_BIND_MEMORY_2_EXTENSION_NAME
+  where
+    VK_KHR_BIND_MEMORY_2_EXTENSION_NAME
+      = _VK_KHR_BIND_MEMORY_2_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_BIND_MEMORY_2_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_dedicated_allocation.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_dedicated_allocation.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_dedicated_allocation.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_dedicated_allocation.hs
@@ -23,7 +23,8 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_memory_requirements2'.
-        module Graphics.Vulkan.Types.Struct.Memory,
+        VkMemoryDedicatedAllocateInfoKHR,
+        VkMemoryDedicatedRequirementsKHR,
         VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION,
         pattern VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION,
         VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME,
@@ -35,7 +36,8 @@
 import Graphics.Vulkan.Core_1_1            (pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
                                             pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS)
 import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Types.Struct.Memory
+import Graphics.Vulkan.Types.Struct.Memory (VkMemoryDedicatedAllocateInfoKHR,
+                                            VkMemoryDedicatedRequirementsKHR)
 
 pattern VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -48,8 +50,9 @@
 
 pattern VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME <-
         (is_VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME -> True)
-  where VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
-          = _VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
+  where
+    VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
+      = _VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_descriptor_update_template.hs
@@ -11,21 +11,61 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_descriptor_update_template
-       (-- * Vulkan extension: @VK_KHR_descriptor_update_template@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Markus Tavenrath @mtavenrath@
-        --
-        -- author: @KHR@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @86@
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.Descriptor,
-        module Graphics.Vulkan.Types.Enum.Descriptor,
+       (VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
+        VkDescriptorUpdateTemplateCreateInfoKHR,
+        VkDescriptorUpdateTemplateEntryKHR,
+        VkDescriptorBindingBitmaskEXT(..),
+        VkDescriptorPoolCreateBitmask(..), VkDescriptorType(..),
+        VkDescriptorUpdateTemplateType(..),
+        VkDescriptorBindingFlagBitsEXT(), VkDescriptorBindingFlagsEXT(),
+        VkDescriptorPoolCreateFlagBits(), VkDescriptorPoolCreateFlags(),
+        VkDescriptorSetLayoutCreateBitmask(..),
+        VkDescriptorSetLayoutCreateFlagBits(),
+        VkDescriptorSetLayoutCreateFlags(),
+        VkDescriptorUpdateTemplateTypeKHR(..),
         VkCreateDescriptorUpdateTemplateKHR,
         pattern VkCreateDescriptorUpdateTemplateKHR,
         HS_vkCreateDescriptorUpdateTemplateKHR,
@@ -38,16 +78,77 @@
         pattern VkUpdateDescriptorSetWithTemplateKHR,
         HS_vkUpdateDescriptorSetWithTemplateKHR,
         PFN_vkUpdateDescriptorSetWithTemplateKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkInternalAllocationType(..),
+        VkPipelineBindPoint(..), VkPipelineCacheHeaderVersion(..),
+        VkPipelineCreateBitmask(..), VkPipelineStageBitmask(..),
+        VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..), VkResult(..),
+        VkStructureType(..), VkSystemAllocationScope(..),
+        newVkAllocationFunction, newVkDebugReportCallbackEXT,
+        newVkDebugUtilsMessengerCallbackEXT, newVkFreeFunction,
+        newVkInternalAllocationNotification, newVkInternalFreeNotification,
+        newVkReallocationFunction, newVkVoidFunction,
+        unwrapVkAllocationFunction, unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkDescriptorBufferInfo,
+        VkDescriptorImageInfo, VkDescriptorPoolCreateInfo,
+        VkDescriptorPoolSize, VkDescriptorSetAllocateInfo,
+        VkDescriptorSetLayoutBinding,
+        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
+        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutSupport,
+        VkDescriptorSetLayoutSupportKHR,
+        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
+        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
+        VkDescriptorUpdateTemplateCreateInfo,
+        VkDescriptorUpdateTemplateEntry,
         VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION,
         pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION,
         VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME,
@@ -90,8 +191,9 @@
 
 pattern VkCreateDescriptorUpdateTemplateKHR <-
         (is_VkCreateDescriptorUpdateTemplateKHR -> True)
-  where VkCreateDescriptorUpdateTemplateKHR
-          = _VkCreateDescriptorUpdateTemplateKHR
+  where
+    VkCreateDescriptorUpdateTemplateKHR
+      = _VkCreateDescriptorUpdateTemplateKHR
 
 {-# INLINE _VkCreateDescriptorUpdateTemplateKHR #-}
 
@@ -146,25 +248,26 @@
                  HS_vkCreateDescriptorUpdateTemplateKHR
 
 instance VulkanProc "vkCreateDescriptorUpdateTemplateKHR" where
-        type VkProcType "vkCreateDescriptorUpdateTemplateKHR" =
-             HS_vkCreateDescriptorUpdateTemplateKHR
-        vkProcSymbol = _VkCreateDescriptorUpdateTemplateKHR
+    type VkProcType "vkCreateDescriptorUpdateTemplateKHR" =
+         HS_vkCreateDescriptorUpdateTemplateKHR
+    vkProcSymbol = _VkCreateDescriptorUpdateTemplateKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkCreateDescriptorUpdateTemplateKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkCreateDescriptorUpdateTemplateKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDescriptorUpdateTemplateKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDestroyDescriptorUpdateTemplateKHR :: CString
 
 pattern VkDestroyDescriptorUpdateTemplateKHR <-
         (is_VkDestroyDescriptorUpdateTemplateKHR -> True)
-  where VkDestroyDescriptorUpdateTemplateKHR
-          = _VkDestroyDescriptorUpdateTemplateKHR
+  where
+    VkDestroyDescriptorUpdateTemplateKHR
+      = _VkDestroyDescriptorUpdateTemplateKHR
 
 {-# INLINE _VkDestroyDescriptorUpdateTemplateKHR #-}
 
@@ -211,26 +314,27 @@
                  HS_vkDestroyDescriptorUpdateTemplateKHR
 
 instance VulkanProc "vkDestroyDescriptorUpdateTemplateKHR" where
-        type VkProcType "vkDestroyDescriptorUpdateTemplateKHR" =
-             HS_vkDestroyDescriptorUpdateTemplateKHR
-        vkProcSymbol = _VkDestroyDescriptorUpdateTemplateKHR
+    type VkProcType "vkDestroyDescriptorUpdateTemplateKHR" =
+         HS_vkDestroyDescriptorUpdateTemplateKHR
+    vkProcSymbol = _VkDestroyDescriptorUpdateTemplateKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkDestroyDescriptorUpdateTemplateKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkDestroyDescriptorUpdateTemplateKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkDestroyDescriptorUpdateTemplateKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkDestroyDescriptorUpdateTemplateKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkUpdateDescriptorSetWithTemplateKHR :: CString
 
 pattern VkUpdateDescriptorSetWithTemplateKHR <-
         (is_VkUpdateDescriptorSetWithTemplateKHR -> True)
-  where VkUpdateDescriptorSetWithTemplateKHR
-          = _VkUpdateDescriptorSetWithTemplateKHR
+  where
+    VkUpdateDescriptorSetWithTemplateKHR
+      = _VkUpdateDescriptorSetWithTemplateKHR
 
 {-# INLINE _VkUpdateDescriptorSetWithTemplateKHR #-}
 
@@ -279,19 +383,19 @@
                  HS_vkUpdateDescriptorSetWithTemplateKHR
 
 instance VulkanProc "vkUpdateDescriptorSetWithTemplateKHR" where
-        type VkProcType "vkUpdateDescriptorSetWithTemplateKHR" =
-             HS_vkUpdateDescriptorSetWithTemplateKHR
-        vkProcSymbol = _VkUpdateDescriptorSetWithTemplateKHR
+    type VkProcType "vkUpdateDescriptorSetWithTemplateKHR" =
+         HS_vkUpdateDescriptorSetWithTemplateKHR
+    vkProcSymbol = _VkUpdateDescriptorSetWithTemplateKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkUpdateDescriptorSetWithTemplateKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkUpdateDescriptorSetWithTemplateKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkUpdateDescriptorSetWithTemplateKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkUpdateDescriptorSetWithTemplateKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -304,8 +408,9 @@
 
 pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME <-
         (is_VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME -> True)
-  where VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME
-          = _VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME
+  where
+    VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME
+      = _VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group.hs
@@ -29,12 +29,61 @@
         --
 
         -- ** Required extensions: 'VK_KHR_device_group_creation'.
-        module Graphics.Vulkan.Types.Struct.Device,
-        module Graphics.Vulkan.Types.Enum.Memory,
-        module Graphics.Vulkan.Types.Struct.Memory,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Enum.PeerMemoryFeatureFlag,
-        VkGetDeviceGroupPeerMemoryFeaturesKHR,
+        VkDeviceGroupBindSparseInfoKHR,
+        VkDeviceGroupCommandBufferBeginInfoKHR,
+        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfoKHR,
+        VkMemoryAllocateBitmask(..), VkMemoryHeapBitmask(..),
+        VkMemoryPropertyBitmask(..), VkMemoryAllocateFlagBits(),
+        VkMemoryAllocateFlagBitsKHR(..), VkMemoryAllocateFlags(),
+        VkMemoryHeapFlagBits(), VkMemoryHeapFlags(),
+        VkMemoryPropertyFlagBits(), VkMemoryPropertyFlags(),
+        VkMemoryAllocateFlagsInfoKHR, VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureBitmask(..),
+        VkPeerMemoryFeatureFlagBits(), VkPeerMemoryFeatureFlagBitsKHR(..),
+        VkPeerMemoryFeatureFlags(), VkGetDeviceGroupPeerMemoryFeaturesKHR,
         pattern VkGetDeviceGroupPeerMemoryFeaturesKHR,
         HS_vkGetDeviceGroupPeerMemoryFeaturesKHR,
         PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR, VkCmdSetDeviceMaskKHR,
@@ -42,8 +91,32 @@
         PFN_vkCmdSetDeviceMaskKHR, VkCmdDispatchBaseKHR,
         pattern VkCmdDispatchBaseKHR, HS_vkCmdDispatchBaseKHR,
         PFN_vkCmdDispatchBaseKHR, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Handles,
+        VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkBuffer, VkBufferView, VkBufferView_T(), VkBuffer_T(),
+        VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_KHR_DEVICE_GROUP_SPEC_VERSION,
         pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION,
         VK_KHR_DEVICE_GROUP_EXTENSION_NAME,
@@ -62,15 +135,18 @@
         pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHR,
         pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR,
         -- ** Required extensions: 'VK_KHR_bind_memory2', 'VK_KHR_device_group_creation'.
-        module Graphics.Vulkan.Types.Struct.Bind,
+        VkBindBufferMemoryDeviceGroupInfoKHR,
+        VkBindImageMemoryDeviceGroupInfoKHR,
         pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR,
         pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,
         -- ** Required extensions: 'VK_KHR_surface', 'VK_KHR_device_group_creation'.
-        VkDeviceGroupPresentCapabilitiesKHR,
-        VkDeviceGroupPresentCapabilitiesKHR',
-        module Graphics.Vulkan.Types.Enum.Device,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceEventTypeEXT(..),
+        VkDeviceGroupPresentModeBitmaskKHR(..), VkDeviceCreateFlagBits(..),
+        VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkStructureType(..),
         -- > #include "vk_platform.h"
         pattern VkGetDeviceGroupPresentCapabilitiesKHR,
         HS_vkGetDeviceGroupPresentCapabilitiesKHR,
@@ -83,27 +159,28 @@
         PFN_vkGetPhysicalDevicePresentRectanglesKHR,
         pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
         -- ** Required extensions: 'VK_KHR_swapchain', 'VK_KHR_device_group_creation'.
-        VkAcquireNextImageInfoKHR, VkAcquireNextImageInfoKHR',
-        VkBindImageMemoryInfo, VkBindImageMemoryInfo',
-        VkBindImageMemorySwapchainInfoKHR,
-        VkBindImageMemorySwapchainInfoKHR',
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
-        VkDeviceGroupPresentInfoKHR, VkDeviceGroupPresentInfoKHR',
-        VkDeviceGroupSwapchainCreateInfoKHR,
-        VkDeviceGroupSwapchainCreateInfoKHR', VkExtent2D, VkExtent2D',
-        VkExtent3D, VkExtent3D', module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image, VkImageCreateInfo,
-        VkImageCreateInfo', VkImageSwapchainCreateInfoKHR,
-        VkImageSwapchainCreateInfoKHR', VkPresentInfoKHR,
-        VkPresentInfoKHR',
-        module Graphics.Vulkan.Types.Enum.PresentModeKHR,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Enum.Surface,
-        module Graphics.Vulkan.Types.Enum.SwapchainCreateFlagsKHR,
-        VkSwapchainCreateInfoKHR, VkSwapchainCreateInfoKHR',
+        VkAcquireNextImageInfoKHR, VkBindImageMemoryInfo,
+        VkBindImageMemorySwapchainInfoKHR, VkColorComponentBitmask(..),
+        VkColorSpaceKHR(..), VkColorComponentFlagBits(),
+        VkColorComponentFlags(), VkCompositeAlphaBitmaskKHR(..),
+        VkCompositeAlphaFlagBitsKHR(), VkCompositeAlphaFlagsKHR(),
+        VkDeviceGroupPresentInfoKHR, VkDeviceGroupSwapchainCreateInfoKHR,
+        VkExtent2D, VkExtent3D, VkFormat(..), VkFormatFeatureBitmask(..),
+        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkImageCreateInfo,
+        VkImageSwapchainCreateInfoKHR, VkPresentInfoKHR,
+        VkPresentModeKHR(..), VkResult(..), VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkSharingMode(..),
+        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
+        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
+        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
+        VkSwapchainCreateBitmaskKHR(..), VkSwapchainCreateFlagBitsKHR(),
+        VkSwapchainCreateFlagsKHR(), VkSwapchainCreateInfoKHR,
         -- > #include "vk_platform.h"
         pattern VkAcquireNextImage2KHR, HS_vkAcquireNextImage2KHR,
         PFN_vkAcquireNextImage2KHR,
@@ -164,30 +241,32 @@
 import Graphics.Vulkan.Types.Enum.Surface
 import Graphics.Vulkan.Types.Enum.SwapchainCreateFlagsKHR
 import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.AcquireNextImageInfoKHR (VkAcquireNextImageInfoKHR,
-                                                             VkAcquireNextImageInfoKHR')
-import Graphics.Vulkan.Types.Struct.Bind
-import Graphics.Vulkan.Types.Struct.Device
+import Graphics.Vulkan.Types.Struct.AcquireNextImageInfoKHR (VkAcquireNextImageInfoKHR)
+import Graphics.Vulkan.Types.Struct.Bind                    (VkBindBufferMemoryDeviceGroupInfoKHR,
+                                                             VkBindImageMemoryDeviceGroupInfoKHR,
+                                                             VkBindImageMemoryInfo,
+                                                             VkBindImageMemorySwapchainInfoKHR)
+import Graphics.Vulkan.Types.Struct.Device                  (VkDeviceGroupBindSparseInfoKHR,
+                                                             VkDeviceGroupCommandBufferBeginInfoKHR,
+                                                             VkDeviceGroupPresentCapabilitiesKHR,
+                                                             VkDeviceGroupPresentInfoKHR,
+                                                             VkDeviceGroupRenderPassBeginInfoKHR,
+                                                             VkDeviceGroupSubmitInfoKHR,
+                                                             VkDeviceGroupSwapchainCreateInfoKHR)
 import Graphics.Vulkan.Types.Struct.Extent                  (VkExtent2D,
-                                                             VkExtent2D',
-                                                             VkExtent3D,
-                                                             VkExtent3D')
-import Graphics.Vulkan.Types.Struct.Image                   (VkImageCreateInfo,
-                                                             VkImageCreateInfo',
-                                                             VkImageSwapchainCreateInfoKHR,
-                                                             VkImageSwapchainCreateInfoKHR')
-import Graphics.Vulkan.Types.Struct.Memory
-import Graphics.Vulkan.Types.Struct.Present                 (VkPresentInfoKHR,
-                                                             VkPresentInfoKHR')
-import Graphics.Vulkan.Types.Struct.SwapchainC              (VkSwapchainCreateInfoKHR,
-                                                             VkSwapchainCreateInfoKHR')
+                                                             VkExtent3D)
+import Graphics.Vulkan.Types.Struct.Image                   (VkImageCreateInfo, VkImageSwapchainCreateInfoKHR)
+import Graphics.Vulkan.Types.Struct.Memory                  (VkMemoryAllocateFlagsInfoKHR)
+import Graphics.Vulkan.Types.Struct.Present                 (VkPresentInfoKHR)
+import Graphics.Vulkan.Types.Struct.SwapchainC              (VkSwapchainCreateInfoKHR)
 
 pattern VkGetDeviceGroupPeerMemoryFeaturesKHR :: CString
 
 pattern VkGetDeviceGroupPeerMemoryFeaturesKHR <-
         (is_VkGetDeviceGroupPeerMemoryFeaturesKHR -> True)
-  where VkGetDeviceGroupPeerMemoryFeaturesKHR
-          = _VkGetDeviceGroupPeerMemoryFeaturesKHR
+  where
+    VkGetDeviceGroupPeerMemoryFeaturesKHR
+      = _VkGetDeviceGroupPeerMemoryFeaturesKHR
 
 {-# INLINE _VkGetDeviceGroupPeerMemoryFeaturesKHR #-}
 
@@ -238,24 +317,25 @@
                  HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
 
 instance VulkanProc "vkGetDeviceGroupPeerMemoryFeaturesKHR" where
-        type VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR" =
-             HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
-        vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeaturesKHR
+    type VkProcType "vkGetDeviceGroupPeerMemoryFeaturesKHR" =
+         HS_vkGetDeviceGroupPeerMemoryFeaturesKHR
+    vkProcSymbol = _VkGetDeviceGroupPeerMemoryFeaturesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetDeviceGroupPeerMemoryFeaturesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdSetDeviceMaskKHR :: CString
 
 pattern VkCmdSetDeviceMaskKHR <- (is_VkCmdSetDeviceMaskKHR -> True)
-  where VkCmdSetDeviceMaskKHR = _VkCmdSetDeviceMaskKHR
+  where
+    VkCmdSetDeviceMaskKHR = _VkCmdSetDeviceMaskKHR
 
 {-# INLINE _VkCmdSetDeviceMaskKHR #-}
 
@@ -296,21 +376,22 @@
                :: PFN_vkCmdSetDeviceMaskKHR -> HS_vkCmdSetDeviceMaskKHR
 
 instance VulkanProc "vkCmdSetDeviceMaskKHR" where
-        type VkProcType "vkCmdSetDeviceMaskKHR" = HS_vkCmdSetDeviceMaskKHR
-        vkProcSymbol = _VkCmdSetDeviceMaskKHR
+    type VkProcType "vkCmdSetDeviceMaskKHR" = HS_vkCmdSetDeviceMaskKHR
+    vkProcSymbol = _VkCmdSetDeviceMaskKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetDeviceMaskKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetDeviceMaskKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetDeviceMaskKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdDispatchBaseKHR :: CString
 
 pattern VkCmdDispatchBaseKHR <- (is_VkCmdDispatchBaseKHR -> True)
-  where VkCmdDispatchBaseKHR = _VkCmdDispatchBaseKHR
+  where
+    VkCmdDispatchBaseKHR = _VkCmdDispatchBaseKHR
 
 {-# INLINE _VkCmdDispatchBaseKHR #-}
 
@@ -363,16 +444,16 @@
                :: PFN_vkCmdDispatchBaseKHR -> HS_vkCmdDispatchBaseKHR
 
 instance VulkanProc "vkCmdDispatchBaseKHR" where
-        type VkProcType "vkCmdDispatchBaseKHR" = HS_vkCmdDispatchBaseKHR
-        vkProcSymbol = _VkCmdDispatchBaseKHR
+    type VkProcType "vkCmdDispatchBaseKHR" = HS_vkCmdDispatchBaseKHR
+    vkProcSymbol = _VkCmdDispatchBaseKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchBaseKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDispatchBaseKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDispatchBaseKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -384,8 +465,9 @@
 
 pattern VK_KHR_DEVICE_GROUP_EXTENSION_NAME <-
         (is_VK_KHR_DEVICE_GROUP_EXTENSION_NAME -> True)
-  where VK_KHR_DEVICE_GROUP_EXTENSION_NAME
-          = _VK_KHR_DEVICE_GROUP_EXTENSION_NAME
+  where
+    VK_KHR_DEVICE_GROUP_EXTENSION_NAME
+      = _VK_KHR_DEVICE_GROUP_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_DEVICE_GROUP_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_device_group_creation.hs
@@ -23,17 +23,91 @@
         -- type: @instance@
         --
         -- Extension number: @71@
-        module Graphics.Vulkan.Types.Struct.Device,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        VkDeviceGroupDeviceCreateInfoKHR,
+        VkPhysicalDeviceGroupPropertiesKHR,
         VkEnumeratePhysicalDeviceGroupsKHR,
         pattern VkEnumeratePhysicalDeviceGroupsKHR,
         HS_vkEnumeratePhysicalDeviceGroupsKHR,
         PFN_vkEnumeratePhysicalDeviceGroupsKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkResult(..), VkStructureType(..),
+        VkBuffer, VkBufferView, VkBufferView_T(), VkBuffer_T(),
+        VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2KHR,
+        VkPhysicalDeviceGroupProperties, VkPhysicalDeviceIDProperties,
+        VkPhysicalDeviceIDPropertiesKHR, VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceImageFormatInfo2KHR, VkPhysicalDeviceLimits,
+        VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties,
+        VkPhysicalDeviceSurfaceInfo2KHR,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
         VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION,
         pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION,
         VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME,
@@ -54,15 +128,16 @@
 import Graphics.Vulkan.Types.Enum.Result
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.Device
+import Graphics.Vulkan.Types.Struct.Device         (VkDeviceGroupDeviceCreateInfoKHR)
 import Graphics.Vulkan.Types.Struct.PhysicalDevice
 
 pattern VkEnumeratePhysicalDeviceGroupsKHR :: CString
 
 pattern VkEnumeratePhysicalDeviceGroupsKHR <-
         (is_VkEnumeratePhysicalDeviceGroupsKHR -> True)
-  where VkEnumeratePhysicalDeviceGroupsKHR
-          = _VkEnumeratePhysicalDeviceGroupsKHR
+  where
+    VkEnumeratePhysicalDeviceGroupsKHR
+      = _VkEnumeratePhysicalDeviceGroupsKHR
 
 {-# INLINE _VkEnumeratePhysicalDeviceGroupsKHR #-}
 
@@ -113,18 +188,18 @@
                  HS_vkEnumeratePhysicalDeviceGroupsKHR
 
 instance VulkanProc "vkEnumeratePhysicalDeviceGroupsKHR" where
-        type VkProcType "vkEnumeratePhysicalDeviceGroupsKHR" =
-             HS_vkEnumeratePhysicalDeviceGroupsKHR
-        vkProcSymbol = _VkEnumeratePhysicalDeviceGroupsKHR
+    type VkProcType "vkEnumeratePhysicalDeviceGroupsKHR" =
+         HS_vkEnumeratePhysicalDeviceGroupsKHR
+    vkProcSymbol = _VkEnumeratePhysicalDeviceGroupsKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkEnumeratePhysicalDeviceGroupsKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkEnumeratePhysicalDeviceGroupsKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkEnumeratePhysicalDeviceGroupsKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -137,8 +212,9 @@
 
 pattern VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME <-
         (is_VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME -> True)
-  where VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME
-          = _VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME
+  where
+    VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME
+      = _VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display.hs
@@ -29,20 +29,62 @@
         --
 
         -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks, VkDisplayModeCreateInfoKHR,
-        VkDisplayModeCreateInfoKHR', VkDisplayModeParametersKHR,
-        VkDisplayModeParametersKHR', VkDisplayModePropertiesKHR,
-        VkDisplayModePropertiesKHR',
-        module Graphics.Vulkan.Types.Enum.Display,
-        VkDisplayPlaneCapabilitiesKHR, VkDisplayPlaneCapabilitiesKHR',
-        VkDisplayPlanePropertiesKHR, VkDisplayPlanePropertiesKHR',
-        VkDisplayPropertiesKHR, VkDisplayPropertiesKHR',
-        VkDisplaySurfaceCreateInfoKHR, VkDisplaySurfaceCreateInfoKHR',
-        VkExtent2D, VkExtent2D', VkOffset2D, VkOffset2D',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.Surface,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkDisplayModeCreateInfoKHR,
+        VkDisplayModeParametersKHR, VkDisplayModePropertiesKHR,
+        VkDisplayEventTypeEXT(..), VkDisplayPlaneAlphaBitmaskKHR(..),
+        VkDisplayPowerStateEXT(..), VkDisplayPlaneAlphaFlagBitsKHR(),
+        VkDisplayPlaneAlphaFlagsKHR(), VkDisplayPlaneCapabilitiesKHR,
+        VkDisplayPlanePropertiesKHR, VkDisplayPropertiesKHR,
+        VkDisplaySurfaceCreateInfoKHR, VkExtent2D, VkOffset2D,
+        VkStructureType(..), VkSurfaceCounterBitmaskEXT(..),
+        VkSurfaceTransformBitmaskKHR(..), VkSurfaceCounterFlagBitsEXT(),
+        VkSurfaceCounterFlagsEXT(), VkSurfaceTransformFlagBitsKHR(),
+        VkSurfaceTransformFlagsKHR(),
         -- > #include "vk_platform.h"
         VkGetPhysicalDeviceDisplayPropertiesKHR,
         pattern VkGetPhysicalDeviceDisplayPropertiesKHR,
@@ -86,16 +128,54 @@
         HS_vkCreateDisplayPlaneSurfaceKHR,
         PFN_vkCreateDisplayPlaneSurfaceKHR, vkCreateDisplayPlaneSurfaceKHR,
         vkCreateDisplayPlaneSurfaceKHRUnsafe,
-        vkCreateDisplayPlaneSurfaceKHRSafe,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.Display,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Offset,
+        vkCreateDisplayPlaneSurfaceKHRSafe, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkDisplayEventInfoEXT,
+        VkDisplayModeProperties2KHR, VkDisplayPlaneCapabilities2KHR,
+        VkDisplayPlaneInfo2KHR, VkDisplayPlaneProperties2KHR,
+        VkDisplayPowerInfoEXT, VkDisplayPresentInfoKHR,
+        VkDisplayProperties2KHR, VkExtent3D, VkOffset3D,
         VK_KHR_DISPLAY_SPEC_VERSION, pattern VK_KHR_DISPLAY_SPEC_VERSION,
         VK_KHR_DISPLAY_EXTENSION_NAME,
         pattern VK_KHR_DISPLAY_EXTENSION_NAME,
@@ -128,8 +208,9 @@
 
 pattern VkGetPhysicalDeviceDisplayPropertiesKHR <-
         (is_VkGetPhysicalDeviceDisplayPropertiesKHR -> True)
-  where VkGetPhysicalDeviceDisplayPropertiesKHR
-          = _VkGetPhysicalDeviceDisplayPropertiesKHR
+  where
+    VkGetPhysicalDeviceDisplayPropertiesKHR
+      = _VkGetPhysicalDeviceDisplayPropertiesKHR
 
 {-# INLINE _VkGetPhysicalDeviceDisplayPropertiesKHR #-}
 
@@ -335,26 +416,27 @@
                  HS_vkGetPhysicalDeviceDisplayPropertiesKHR
 
 instance VulkanProc "vkGetPhysicalDeviceDisplayPropertiesKHR" where
-        type VkProcType "vkGetPhysicalDeviceDisplayPropertiesKHR" =
-             HS_vkGetPhysicalDeviceDisplayPropertiesKHR
-        vkProcSymbol = _VkGetPhysicalDeviceDisplayPropertiesKHR
+    type VkProcType "vkGetPhysicalDeviceDisplayPropertiesKHR" =
+         HS_vkGetPhysicalDeviceDisplayPropertiesKHR
+    vkProcSymbol = _VkGetPhysicalDeviceDisplayPropertiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceDisplayPropertiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceDisplayPropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceDisplayPropertiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceDisplayPropertiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceDisplayPlanePropertiesKHR :: CString
 
 pattern VkGetPhysicalDeviceDisplayPlanePropertiesKHR <-
         (is_VkGetPhysicalDeviceDisplayPlanePropertiesKHR -> True)
-  where VkGetPhysicalDeviceDisplayPlanePropertiesKHR
-          = _VkGetPhysicalDeviceDisplayPlanePropertiesKHR
+  where
+    VkGetPhysicalDeviceDisplayPlanePropertiesKHR
+      = _VkGetPhysicalDeviceDisplayPlanePropertiesKHR
 
 {-# INLINE _VkGetPhysicalDeviceDisplayPlanePropertiesKHR #-}
 
@@ -565,26 +647,27 @@
 
 instance VulkanProc "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" =
-             HS_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
-        vkProcSymbol = _VkGetPhysicalDeviceDisplayPlanePropertiesKHR
+    type VkProcType "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" =
+         HS_vkGetPhysicalDeviceDisplayPlanePropertiesKHR
+    vkProcSymbol = _VkGetPhysicalDeviceDisplayPlanePropertiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceDisplayPlanePropertiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetDisplayPlaneSupportedDisplaysKHR :: CString
 
 pattern VkGetDisplayPlaneSupportedDisplaysKHR <-
         (is_VkGetDisplayPlaneSupportedDisplaysKHR -> True)
-  where VkGetDisplayPlaneSupportedDisplaysKHR
-          = _VkGetDisplayPlaneSupportedDisplaysKHR
+  where
+    VkGetDisplayPlaneSupportedDisplaysKHR
+      = _VkGetDisplayPlaneSupportedDisplaysKHR
 
 {-# INLINE _VkGetDisplayPlaneSupportedDisplaysKHR #-}
 
@@ -798,26 +881,26 @@
                  HS_vkGetDisplayPlaneSupportedDisplaysKHR
 
 instance VulkanProc "vkGetDisplayPlaneSupportedDisplaysKHR" where
-        type VkProcType "vkGetDisplayPlaneSupportedDisplaysKHR" =
-             HS_vkGetDisplayPlaneSupportedDisplaysKHR
-        vkProcSymbol = _VkGetDisplayPlaneSupportedDisplaysKHR
+    type VkProcType "vkGetDisplayPlaneSupportedDisplaysKHR" =
+         HS_vkGetDisplayPlaneSupportedDisplaysKHR
+    vkProcSymbol = _VkGetDisplayPlaneSupportedDisplaysKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetDisplayPlaneSupportedDisplaysKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetDisplayPlaneSupportedDisplaysKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetDisplayPlaneSupportedDisplaysKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetDisplayPlaneSupportedDisplaysKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetDisplayModePropertiesKHR :: CString
 
 pattern VkGetDisplayModePropertiesKHR <-
         (is_VkGetDisplayModePropertiesKHR -> True)
-  where VkGetDisplayModePropertiesKHR
-          = _VkGetDisplayModePropertiesKHR
+  where
+    VkGetDisplayModePropertiesKHR = _VkGetDisplayModePropertiesKHR
 
 {-# INLINE _VkGetDisplayModePropertiesKHR #-}
 
@@ -1034,23 +1117,24 @@
                  HS_vkGetDisplayModePropertiesKHR
 
 instance VulkanProc "vkGetDisplayModePropertiesKHR" where
-        type VkProcType "vkGetDisplayModePropertiesKHR" =
-             HS_vkGetDisplayModePropertiesKHR
-        vkProcSymbol = _VkGetDisplayModePropertiesKHR
+    type VkProcType "vkGetDisplayModePropertiesKHR" =
+         HS_vkGetDisplayModePropertiesKHR
+    vkProcSymbol = _VkGetDisplayModePropertiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetDisplayModePropertiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetDisplayModePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDisplayModePropertiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDisplayModePropertiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCreateDisplayModeKHR :: CString
 
 pattern VkCreateDisplayModeKHR <-
         (is_VkCreateDisplayModeKHR -> True)
-  where VkCreateDisplayModeKHR = _VkCreateDisplayModeKHR
+  where
+    VkCreateDisplayModeKHR = _VkCreateDisplayModeKHR
 
 {-# INLINE _VkCreateDisplayModeKHR #-}
 
@@ -1276,24 +1360,25 @@
                PFN_vkCreateDisplayModeKHR -> HS_vkCreateDisplayModeKHR
 
 instance VulkanProc "vkCreateDisplayModeKHR" where
-        type VkProcType "vkCreateDisplayModeKHR" =
-             HS_vkCreateDisplayModeKHR
-        vkProcSymbol = _VkCreateDisplayModeKHR
+    type VkProcType "vkCreateDisplayModeKHR" =
+         HS_vkCreateDisplayModeKHR
+    vkProcSymbol = _VkCreateDisplayModeKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateDisplayModeKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateDisplayModeKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDisplayModeKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDisplayModeKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetDisplayPlaneCapabilitiesKHR :: CString
 
 pattern VkGetDisplayPlaneCapabilitiesKHR <-
         (is_VkGetDisplayPlaneCapabilitiesKHR -> True)
-  where VkGetDisplayPlaneCapabilitiesKHR
-          = _VkGetDisplayPlaneCapabilitiesKHR
+  where
+    VkGetDisplayPlaneCapabilitiesKHR
+      = _VkGetDisplayPlaneCapabilitiesKHR
 
 {-# INLINE _VkGetDisplayPlaneCapabilitiesKHR #-}
 
@@ -1513,25 +1598,25 @@
                  HS_vkGetDisplayPlaneCapabilitiesKHR
 
 instance VulkanProc "vkGetDisplayPlaneCapabilitiesKHR" where
-        type VkProcType "vkGetDisplayPlaneCapabilitiesKHR" =
-             HS_vkGetDisplayPlaneCapabilitiesKHR
-        vkProcSymbol = _VkGetDisplayPlaneCapabilitiesKHR
+    type VkProcType "vkGetDisplayPlaneCapabilitiesKHR" =
+         HS_vkGetDisplayPlaneCapabilitiesKHR
+    vkProcSymbol = _VkGetDisplayPlaneCapabilitiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetDisplayPlaneCapabilitiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetDisplayPlaneCapabilitiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDisplayPlaneCapabilitiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDisplayPlaneCapabilitiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCreateDisplayPlaneSurfaceKHR :: CString
 
 pattern VkCreateDisplayPlaneSurfaceKHR <-
         (is_VkCreateDisplayPlaneSurfaceKHR -> True)
-  where VkCreateDisplayPlaneSurfaceKHR
-          = _VkCreateDisplayPlaneSurfaceKHR
+  where
+    VkCreateDisplayPlaneSurfaceKHR = _VkCreateDisplayPlaneSurfaceKHR
 
 {-# INLINE _VkCreateDisplayPlaneSurfaceKHR #-}
 
@@ -1750,17 +1835,17 @@
                  HS_vkCreateDisplayPlaneSurfaceKHR
 
 instance VulkanProc "vkCreateDisplayPlaneSurfaceKHR" where
-        type VkProcType "vkCreateDisplayPlaneSurfaceKHR" =
-             HS_vkCreateDisplayPlaneSurfaceKHR
-        vkProcSymbol = _VkCreateDisplayPlaneSurfaceKHR
+    type VkProcType "vkCreateDisplayPlaneSurfaceKHR" =
+         HS_vkCreateDisplayPlaneSurfaceKHR
+    vkProcSymbol = _VkCreateDisplayPlaneSurfaceKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateDisplayPlaneSurfaceKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateDisplayPlaneSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateDisplayPlaneSurfaceKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateDisplayPlaneSurfaceKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DISPLAY_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -1772,8 +1857,8 @@
 
 pattern VK_KHR_DISPLAY_EXTENSION_NAME <-
         (is_VK_KHR_DISPLAY_EXTENSION_NAME -> True)
-  where VK_KHR_DISPLAY_EXTENSION_NAME
-          = _VK_KHR_DISPLAY_EXTENSION_NAME
+  where
+    VK_KHR_DISPLAY_EXTENSION_NAME = _VK_KHR_DISPLAY_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_DISPLAY_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_display_swapchain.hs
@@ -12,49 +12,75 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_display_swapchain
-       (-- * Vulkan extension: @VK_KHR_display_swapchain@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @James Jones @cubanismo@
-        --
-        -- author: @KHR@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @4@
-        --
-        -- Required extensions: 'VK_KHR_swapchain', 'VK_KHR_display'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_swapchain', 'VK_KHR_display'.
-        module Graphics.Vulkan.Types.BaseTypes, VkDisplayPresentInfoKHR,
-        VkDisplayPresentInfoKHR', VkExtent2D, VkExtent2D', VkOffset2D,
-        VkOffset2D', VkPresentInfoKHR, VkPresentInfoKHR', VkRect2D,
-        VkRect2D', module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkDisplayPresentInfoKHR, VkExtent2D, VkOffset2D, VkPresentInfoKHR,
+        VkRect2D, VkResult(..), VkStructureType(..),
         -- > #include "vk_platform.h"
         VkCreateSharedSwapchainsKHR, pattern VkCreateSharedSwapchainsKHR,
         HS_vkCreateSharedSwapchainsKHR, PFN_vkCreateSharedSwapchainsKHR,
         vkCreateSharedSwapchainsKHR, vkCreateSharedSwapchainsKHRUnsafe,
         vkCreateSharedSwapchainsKHRSafe, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.PresentModeKHR,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Enum.Surface,
-        module Graphics.Vulkan.Types.Enum.SwapchainCreateFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.SwapchainC,
-        VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION,
+        VkColorComponentBitmask(..), VkColorSpaceKHR(..),
+        VkColorComponentFlagBits(), VkColorComponentFlags(),
+        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
+        VkCompositeAlphaFlagsKHR(), VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkInternalAllocationType(..), VkPresentModeKHR(..),
+        VkSharingMode(..), VkSurfaceCounterBitmaskEXT(..),
+        VkSurfaceTransformBitmaskKHR(..), VkSurfaceCounterFlagBitsEXT(),
+        VkSurfaceCounterFlagsEXT(), VkSurfaceTransformFlagBitsKHR(),
+        VkSurfaceTransformFlagsKHR(), VkSwapchainCreateBitmaskKHR(..),
+        VkSwapchainCreateFlagBitsKHR(), VkSwapchainCreateFlagsKHR(),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkExtent3D, VkSwapchainCounterCreateInfoEXT,
+        VkSwapchainCreateInfoKHR, VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION,
         pattern VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION,
         VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME,
         pattern VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME,
@@ -80,14 +106,11 @@
 import Graphics.Vulkan.Types.Funcpointers
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Struct.AllocationCallbacks
-import Graphics.Vulkan.Types.Struct.Display               (VkDisplayPresentInfoKHR,
-                                                           VkDisplayPresentInfoKHR')
+import Graphics.Vulkan.Types.Struct.Display               (VkDisplayPresentInfoKHR)
 import Graphics.Vulkan.Types.Struct.Extent
-import Graphics.Vulkan.Types.Struct.Offset                (VkOffset2D,
-                                                           VkOffset2D')
-import Graphics.Vulkan.Types.Struct.Present               (VkPresentInfoKHR,
-                                                           VkPresentInfoKHR')
-import Graphics.Vulkan.Types.Struct.Rect                  (VkRect2D, VkRect2D')
+import Graphics.Vulkan.Types.Struct.Offset                (VkOffset2D)
+import Graphics.Vulkan.Types.Struct.Present               (VkPresentInfoKHR)
+import Graphics.Vulkan.Types.Struct.Rect                  (VkRect2D)
 import Graphics.Vulkan.Types.Struct.SwapchainC
 import System.IO.Unsafe                                   (unsafeDupablePerformIO)
 
@@ -95,7 +118,8 @@
 
 pattern VkCreateSharedSwapchainsKHR <-
         (is_VkCreateSharedSwapchainsKHR -> True)
-  where VkCreateSharedSwapchainsKHR = _VkCreateSharedSwapchainsKHR
+  where
+    VkCreateSharedSwapchainsKHR = _VkCreateSharedSwapchainsKHR
 
 {-# INLINE _VkCreateSharedSwapchainsKHR #-}
 
@@ -326,17 +350,17 @@
                PFN_vkCreateSharedSwapchainsKHR -> HS_vkCreateSharedSwapchainsKHR
 
 instance VulkanProc "vkCreateSharedSwapchainsKHR" where
-        type VkProcType "vkCreateSharedSwapchainsKHR" =
-             HS_vkCreateSharedSwapchainsKHR
-        vkProcSymbol = _VkCreateSharedSwapchainsKHR
+    type VkProcType "vkCreateSharedSwapchainsKHR" =
+         HS_vkCreateSharedSwapchainsKHR
+    vkProcSymbol = _VkCreateSharedSwapchainsKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateSharedSwapchainsKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateSharedSwapchainsKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSharedSwapchainsKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateSharedSwapchainsKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -348,8 +372,9 @@
 
 pattern VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME <-
         (is_VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME -> True)
-  where VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
-          = _VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
+  where
+    VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
+      = _VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_draw_indirect_count.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_draw_indirect_count.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_draw_indirect_count.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_draw_indirect_count.hs
@@ -28,9 +28,32 @@
         pattern VkCmdDrawIndexedIndirectCountKHR,
         HS_vkCmdDrawIndexedIndirectCountKHR,
         PFN_vkCmdDrawIndexedIndirectCountKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkBuffer, VkBufferView,
+        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION,
         pattern VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION,
         VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME,
@@ -46,7 +69,8 @@
 
 pattern VkCmdDrawIndirectCountKHR <-
         (is_VkCmdDrawIndirectCountKHR -> True)
-  where VkCmdDrawIndirectCountKHR = _VkCmdDrawIndirectCountKHR
+  where
+    VkCmdDrawIndirectCountKHR = _VkCmdDrawIndirectCountKHR
 
 {-# INLINE _VkCmdDrawIndirectCountKHR #-}
 
@@ -103,24 +127,25 @@
                PFN_vkCmdDrawIndirectCountKHR -> HS_vkCmdDrawIndirectCountKHR
 
 instance VulkanProc "vkCmdDrawIndirectCountKHR" where
-        type VkProcType "vkCmdDrawIndirectCountKHR" =
-             HS_vkCmdDrawIndirectCountKHR
-        vkProcSymbol = _VkCmdDrawIndirectCountKHR
+    type VkProcType "vkCmdDrawIndirectCountKHR" =
+         HS_vkCmdDrawIndirectCountKHR
+    vkProcSymbol = _VkCmdDrawIndirectCountKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectCountKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdDrawIndirectCountKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectCountKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDrawIndirectCountKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdDrawIndexedIndirectCountKHR :: CString
 
 pattern VkCmdDrawIndexedIndirectCountKHR <-
         (is_VkCmdDrawIndexedIndirectCountKHR -> True)
-  where VkCmdDrawIndexedIndirectCountKHR
-          = _VkCmdDrawIndexedIndirectCountKHR
+  where
+    VkCmdDrawIndexedIndirectCountKHR
+      = _VkCmdDrawIndexedIndirectCountKHR
 
 {-# INLINE _VkCmdDrawIndexedIndirectCountKHR #-}
 
@@ -181,18 +206,18 @@
                  HS_vkCmdDrawIndexedIndirectCountKHR
 
 instance VulkanProc "vkCmdDrawIndexedIndirectCountKHR" where
-        type VkProcType "vkCmdDrawIndexedIndirectCountKHR" =
-             HS_vkCmdDrawIndexedIndirectCountKHR
-        vkProcSymbol = _VkCmdDrawIndexedIndirectCountKHR
+    type VkProcType "vkCmdDrawIndexedIndirectCountKHR" =
+         HS_vkCmdDrawIndexedIndirectCountKHR
+    vkProcSymbol = _VkCmdDrawIndexedIndirectCountKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkCmdDrawIndexedIndirectCountKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkCmdDrawIndexedIndirectCountKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectCountKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdDrawIndexedIndirectCountKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -205,8 +230,9 @@
 
 pattern VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME <-
         (is_VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME -> True)
-  where VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
-          = _VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+  where
+    VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
+      = _VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence.hs
@@ -23,9 +23,54 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_fence_capabilities'.
-        module Graphics.Vulkan.Types.Struct.Export,
-        module Graphics.Vulkan.Types.Enum.Fence,
-        module Graphics.Vulkan.Types.Bitmasks,
+        VkExportFenceCreateInfoKHR, VkFenceCreateBitmask(..),
+        VkFenceImportBitmask(..), VkFenceCreateFlagBits(),
+        VkFenceCreateFlags(), VkFenceImportFlagBits(),
+        VkFenceImportFlagBitsKHR(..), VkFenceImportFlags(),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
         VK_KHR_EXTERNAL_FENCE_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_FENCE_SPEC_VERSION,
         VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME,
@@ -38,7 +83,7 @@
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Types.Bitmasks
 import Graphics.Vulkan.Types.Enum.Fence
-import Graphics.Vulkan.Types.Struct.Export
+import Graphics.Vulkan.Types.Struct.Export (VkExportFenceCreateInfoKHR)
 
 pattern VK_KHR_EXTERNAL_FENCE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -50,8 +95,9 @@
 
 pattern VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_capabilities.hs
@@ -28,18 +28,173 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Types.Enum.External,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.External,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkExternalFencePropertiesKHR,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceIDPropertiesKHR,
         VkGetPhysicalDeviceExternalFencePropertiesKHR,
         pattern VkGetPhysicalDeviceExternalFencePropertiesKHR,
         HS_vkGetPhysicalDeviceExternalFencePropertiesKHR,
         PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkStructureType(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkExternalBufferProperties, VkExternalBufferPropertiesKHR,
+        VkExternalFenceProperties, VkExternalImageFormatProperties,
+        VkExternalImageFormatPropertiesKHR,
+        VkExternalImageFormatPropertiesNV,
+        VkExternalMemoryBufferCreateInfo,
+        VkExternalMemoryBufferCreateInfoKHR,
+        VkExternalMemoryImageCreateInfo,
+        VkExternalMemoryImageCreateInfoKHR,
+        VkExternalMemoryImageCreateInfoNV, VkExternalMemoryProperties,
+        VkExternalMemoryPropertiesKHR, VkExternalSemaphoreProperties,
+        VkExternalSemaphorePropertiesKHR,
+        VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2KHR,
+        VkPhysicalDeviceGroupProperties,
+        VkPhysicalDeviceGroupPropertiesKHR, VkPhysicalDeviceIDProperties,
+        VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceImageFormatInfo2KHR, VkPhysicalDeviceLimits,
+        VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties,
+        VkPhysicalDeviceSurfaceInfo2KHR,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
         VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION,
         VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME,
@@ -72,8 +227,9 @@
 
 pattern VkGetPhysicalDeviceExternalFencePropertiesKHR <-
         (is_VkGetPhysicalDeviceExternalFencePropertiesKHR -> True)
-  where VkGetPhysicalDeviceExternalFencePropertiesKHR
-          = _VkGetPhysicalDeviceExternalFencePropertiesKHR
+  where
+    VkGetPhysicalDeviceExternalFencePropertiesKHR
+      = _VkGetPhysicalDeviceExternalFencePropertiesKHR
 
 {-# INLINE _VkGetPhysicalDeviceExternalFencePropertiesKHR #-}
 
@@ -123,19 +279,19 @@
 
 instance VulkanProc "vkGetPhysicalDeviceExternalFencePropertiesKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceExternalFencePropertiesKHR" =
-             HS_vkGetPhysicalDeviceExternalFencePropertiesKHR
-        vkProcSymbol = _VkGetPhysicalDeviceExternalFencePropertiesKHR
+    type VkProcType "vkGetPhysicalDeviceExternalFencePropertiesKHR" =
+         HS_vkGetPhysicalDeviceExternalFencePropertiesKHR
+    vkProcSymbol = _VkGetPhysicalDeviceExternalFencePropertiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceExternalFencePropertiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -149,8 +305,9 @@
 
 pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_fd.hs
@@ -27,20 +27,70 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_fence'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.External, VkFenceGetFdInfoKHR,
-        VkFenceGetFdInfoKHR', module Graphics.Vulkan.Types.Enum.Fence,
-        module Graphics.Vulkan.Types.BaseTypes, VkImportFenceFdInfoKHR,
-        VkImportFenceFdInfoKHR',
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        module Graphics.Vulkan.Marshal, VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(), VkFenceGetFdInfoKHR,
+        VkFenceCreateBitmask(..), VkFenceImportBitmask(..),
+        VkFenceCreateFlagBits(), VkFenceCreateFlags(),
+        VkFenceImportFlagBits(), VkFenceImportFlagBitsKHR(..),
+        VkFenceImportFlags(), VkBool32(..), VkDeviceSize(..), VkFlags(..),
+        VkSampleMask(..), VkImportFenceFdInfoKHR, VkStructureType(..),
         -- > #include "vk_platform.h"
         VkImportFenceFdKHR, pattern VkImportFenceFdKHR,
         HS_vkImportFenceFdKHR, PFN_vkImportFenceFdKHR, VkGetFenceFdKHR,
         pattern VkGetFenceFdKHR, HS_vkGetFenceFdKHR, PFN_vkGetFenceFdKHR,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Fence,
-        module Graphics.Vulkan.Types.Struct.Import,
+        VkResult(..), VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkFenceCreateInfo, VkImportMemoryFdInfoKHR,
+        VkImportMemoryHostPointerInfoEXT, VkImportSemaphoreFdInfoKHR,
         VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION,
         VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME,
@@ -63,7 +113,8 @@
 pattern VkImportFenceFdKHR :: CString
 
 pattern VkImportFenceFdKHR <- (is_VkImportFenceFdKHR -> True)
-  where VkImportFenceFdKHR = _VkImportFenceFdKHR
+  where
+    VkImportFenceFdKHR = _VkImportFenceFdKHR
 
 {-# INLINE _VkImportFenceFdKHR #-}
 
@@ -102,21 +153,22 @@
                PFN_vkImportFenceFdKHR -> HS_vkImportFenceFdKHR
 
 instance VulkanProc "vkImportFenceFdKHR" where
-        type VkProcType "vkImportFenceFdKHR" = HS_vkImportFenceFdKHR
-        vkProcSymbol = _VkImportFenceFdKHR
+    type VkProcType "vkImportFenceFdKHR" = HS_vkImportFenceFdKHR
+    vkProcSymbol = _VkImportFenceFdKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkImportFenceFdKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkImportFenceFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkImportFenceFdKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkImportFenceFdKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetFenceFdKHR :: CString
 
 pattern VkGetFenceFdKHR <- (is_VkGetFenceFdKHR -> True)
-  where VkGetFenceFdKHR = _VkGetFenceFdKHR
+  where
+    VkGetFenceFdKHR = _VkGetFenceFdKHR
 
 {-# INLINE _VkGetFenceFdKHR #-}
 
@@ -156,16 +208,16 @@
                PFN_vkGetFenceFdKHR -> HS_vkGetFenceFdKHR
 
 instance VulkanProc "vkGetFenceFdKHR" where
-        type VkProcType "vkGetFenceFdKHR" = HS_vkGetFenceFdKHR
-        vkProcSymbol = _VkGetFenceFdKHR
+    type VkProcType "vkGetFenceFdKHR" = HS_vkGetFenceFdKHR
+    vkProcSymbol = _VkGetFenceFdKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetFenceFdKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetFenceFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetFenceFdKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetFenceFdKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -177,8 +229,9 @@
 
 pattern VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_fence_win32.hs
@@ -29,24 +29,82 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_fence'.
-        VkExportFenceWin32HandleInfoKHR, VkExportFenceWin32HandleInfoKHR',
-        module Graphics.Vulkan.Types.Enum.External,
-        module Graphics.Vulkan.Types.Enum.Fence, VkFenceCreateInfo,
-        VkFenceCreateInfo', VkFenceGetWin32HandleInfoKHR,
-        VkFenceGetWin32HandleInfoKHR',
-        module Graphics.Vulkan.Types.BaseTypes,
-        VkImportFenceWin32HandleInfoKHR, VkImportFenceWin32HandleInfoKHR',
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkExportFenceWin32HandleInfoKHR,
+        VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(), VkFenceCreateBitmask(..),
+        VkFenceImportBitmask(..), VkFenceCreateFlagBits(),
+        VkFenceCreateFlags(), VkFenceImportFlagBits(),
+        VkFenceImportFlagBitsKHR(..), VkFenceImportFlags(),
+        VkFenceCreateInfo, VkFenceGetWin32HandleInfoKHR, VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkImportFenceWin32HandleInfoKHR, VkStructureType(..),
         -- > #include "vk_platform.h"
         VkImportFenceWin32HandleKHR, pattern VkImportFenceWin32HandleKHR,
         HS_vkImportFenceWin32HandleKHR, PFN_vkImportFenceWin32HandleKHR,
         VkGetFenceWin32HandleKHR, pattern VkGetFenceWin32HandleKHR,
         HS_vkGetFenceWin32HandleKHR, PFN_vkGetFenceWin32HandleKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Include,
-        module Graphics.Vulkan.Types.Struct.PlatformWin32Khr,
+        module Graphics.Vulkan.Marshal, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR, MirConnection,
+        MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID, Window,
+        WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT, XcbWindowT,
+        VkD3D12FenceSubmitInfoKHR, VkExportMemoryWin32HandleInfoKHR,
+        VkExportMemoryWin32HandleInfoNV,
+        VkExportSemaphoreWin32HandleInfoKHR,
+        VkImportMemoryWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoNV,
+        VkImportSemaphoreWin32HandleInfoKHR, VkMemoryGetWin32HandleInfoKHR,
+        VkMemoryWin32HandlePropertiesKHR, VkSemaphoreGetWin32HandleInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoNV, VkWin32SurfaceCreateInfoKHR,
         VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION,
         VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME,
@@ -65,15 +123,15 @@
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Include
-import Graphics.Vulkan.Types.Struct.Fence            (VkFenceCreateInfo,
-                                                      VkFenceCreateInfo')
+import Graphics.Vulkan.Types.Struct.Fence            (VkFenceCreateInfo)
 import Graphics.Vulkan.Types.Struct.PlatformWin32Khr
 
 pattern VkImportFenceWin32HandleKHR :: CString
 
 pattern VkImportFenceWin32HandleKHR <-
         (is_VkImportFenceWin32HandleKHR -> True)
-  where VkImportFenceWin32HandleKHR = _VkImportFenceWin32HandleKHR
+  where
+    VkImportFenceWin32HandleKHR = _VkImportFenceWin32HandleKHR
 
 {-# INLINE _VkImportFenceWin32HandleKHR #-}
 
@@ -116,23 +174,24 @@
                PFN_vkImportFenceWin32HandleKHR -> HS_vkImportFenceWin32HandleKHR
 
 instance VulkanProc "vkImportFenceWin32HandleKHR" where
-        type VkProcType "vkImportFenceWin32HandleKHR" =
-             HS_vkImportFenceWin32HandleKHR
-        vkProcSymbol = _VkImportFenceWin32HandleKHR
+    type VkProcType "vkImportFenceWin32HandleKHR" =
+         HS_vkImportFenceWin32HandleKHR
+    vkProcSymbol = _VkImportFenceWin32HandleKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkImportFenceWin32HandleKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkImportFenceWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkImportFenceWin32HandleKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkImportFenceWin32HandleKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetFenceWin32HandleKHR :: CString
 
 pattern VkGetFenceWin32HandleKHR <-
         (is_VkGetFenceWin32HandleKHR -> True)
-  where VkGetFenceWin32HandleKHR = _VkGetFenceWin32HandleKHR
+  where
+    VkGetFenceWin32HandleKHR = _VkGetFenceWin32HandleKHR
 
 {-# INLINE _VkGetFenceWin32HandleKHR #-}
 
@@ -177,17 +236,17 @@
                PFN_vkGetFenceWin32HandleKHR -> HS_vkGetFenceWin32HandleKHR
 
 instance VulkanProc "vkGetFenceWin32HandleKHR" where
-        type VkProcType "vkGetFenceWin32HandleKHR" =
-             HS_vkGetFenceWin32HandleKHR
-        vkProcSymbol = _VkGetFenceWin32HandleKHR
+    type VkProcType "vkGetFenceWin32HandleKHR" =
+         HS_vkGetFenceWin32HandleKHR
+    vkProcSymbol = _VkGetFenceWin32HandleKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetFenceWin32HandleKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetFenceWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetFenceWin32HandleKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetFenceWin32HandleKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -200,8 +259,9 @@
 
 pattern VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory.hs
@@ -23,8 +23,9 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_memory_capabilities'.
-        module Graphics.Vulkan.Types.Struct.Export,
-        module Graphics.Vulkan.Types.Struct.External,
+        VkExportMemoryAllocateInfoKHR,
+        VkExternalMemoryBufferCreateInfoKHR,
+        VkExternalMemoryImageCreateInfoKHR,
         VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION,
         VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME,
@@ -42,8 +43,9 @@
                                               pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
                                               pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO)
 import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Types.Struct.Export
-import Graphics.Vulkan.Types.Struct.External
+import Graphics.Vulkan.Types.Struct.Export   (VkExportMemoryAllocateInfoKHR)
+import Graphics.Vulkan.Types.Struct.External (VkExternalMemoryBufferCreateInfoKHR,
+                                              VkExternalMemoryImageCreateInfoKHR)
 
 pattern VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -55,8 +57,9 @@
 
 pattern VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_capabilities.hs
@@ -28,19 +28,176 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Types.Struct.External,
-        module Graphics.Vulkan.Types.Enum.External,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        VkExternalBufferPropertiesKHR, VkExternalImageFormatPropertiesKHR,
+        VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkExternalMemoryPropertiesKHR,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceIDPropertiesKHR,
         VkGetPhysicalDeviceExternalBufferPropertiesKHR,
         pattern VkGetPhysicalDeviceExternalBufferPropertiesKHR,
         HS_vkGetPhysicalDeviceExternalBufferPropertiesKHR,
         PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Buffer,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkBufferCreateBitmask(..),
+        VkBufferUsageBitmask(..), VkBufferCreateFlagBits(),
+        VkBufferCreateFlags(), VkBufferUsageFlagBits(),
+        VkBufferUsageFlags(), VkBufferViewCreateFlagBits(..),
+        VkStructureType(..), VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkExternalBufferProperties, VkExternalFenceProperties,
+        VkExternalFencePropertiesKHR, VkExternalImageFormatProperties,
+        VkExternalImageFormatPropertiesNV,
+        VkExternalMemoryBufferCreateInfo,
+        VkExternalMemoryBufferCreateInfoKHR,
+        VkExternalMemoryImageCreateInfo,
+        VkExternalMemoryImageCreateInfoKHR,
+        VkExternalMemoryImageCreateInfoNV, VkExternalMemoryProperties,
+        VkExternalSemaphoreProperties, VkExternalSemaphorePropertiesKHR,
+        VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2KHR,
+        VkPhysicalDeviceGroupProperties,
+        VkPhysicalDeviceGroupPropertiesKHR, VkPhysicalDeviceIDProperties,
+        VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceImageFormatInfo2KHR, VkPhysicalDeviceLimits,
+        VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties,
+        VkPhysicalDeviceSurfaceInfo2KHR,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
         VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION,
         VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
@@ -84,8 +241,9 @@
 
 pattern VkGetPhysicalDeviceExternalBufferPropertiesKHR <-
         (is_VkGetPhysicalDeviceExternalBufferPropertiesKHR -> True)
-  where VkGetPhysicalDeviceExternalBufferPropertiesKHR
-          = _VkGetPhysicalDeviceExternalBufferPropertiesKHR
+  where
+    VkGetPhysicalDeviceExternalBufferPropertiesKHR
+      = _VkGetPhysicalDeviceExternalBufferPropertiesKHR
 
 {-# INLINE _VkGetPhysicalDeviceExternalBufferPropertiesKHR #-}
 
@@ -137,19 +295,19 @@
 instance VulkanProc
            "vkGetPhysicalDeviceExternalBufferPropertiesKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceExternalBufferPropertiesKHR" =
-             HS_vkGetPhysicalDeviceExternalBufferPropertiesKHR
-        vkProcSymbol = _VkGetPhysicalDeviceExternalBufferPropertiesKHR
+    type VkProcType "vkGetPhysicalDeviceExternalBufferPropertiesKHR" =
+         HS_vkGetPhysicalDeviceExternalBufferPropertiesKHR
+    vkProcSymbol = _VkGetPhysicalDeviceExternalBufferPropertiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceExternalBufferPropertiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -163,8 +321,9 @@
 
 pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_fd.hs
@@ -28,22 +28,72 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_memory'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.External,
-        VkImportMemoryFdInfoKHR, VkImportMemoryFdInfoKHR',
-        VkMemoryAllocateInfo, VkMemoryAllocateInfo',
-        VkMemoryFdPropertiesKHR, VkMemoryFdPropertiesKHR',
-        VkMemoryGetFdInfoKHR, VkMemoryGetFdInfoKHR',
-        module Graphics.Vulkan.Types.Enum.StructureType, -- > #include "vk_platform.h"
-                                                         VkGetMemoryFdKHR,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(), VkImportMemoryFdInfoKHR,
+        VkMemoryAllocateInfo, VkMemoryFdPropertiesKHR,
+        VkMemoryGetFdInfoKHR, VkStructureType(..), -- > #include "vk_platform.h"
+                                                   VkGetMemoryFdKHR,
         pattern VkGetMemoryFdKHR, HS_vkGetMemoryFdKHR,
         PFN_vkGetMemoryFdKHR, VkGetMemoryFdPropertiesKHR,
         pattern VkGetMemoryFdPropertiesKHR, HS_vkGetMemoryFdPropertiesKHR,
-        PFN_vkGetMemoryFdPropertiesKHR,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Memory,
+        PFN_vkGetMemoryFdPropertiesKHR, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfoKHR,
+        VkMemoryBarrier, VkMemoryDedicatedAllocateInfo,
+        VkMemoryDedicatedAllocateInfoKHR, VkMemoryDedicatedRequirements,
+        VkMemoryDedicatedRequirementsKHR, VkMemoryHeap,
+        VkMemoryHostPointerPropertiesEXT, VkMemoryRequirements,
+        VkMemoryRequirements2, VkMemoryRequirements2KHR, VkMemoryType,
         VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION,
         VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME,
@@ -60,14 +110,14 @@
 import Graphics.Vulkan.Types.Enum.Result
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.Import      (VkImportMemoryFdInfoKHR,
-                                                 VkImportMemoryFdInfoKHR')
+import Graphics.Vulkan.Types.Struct.Import      (VkImportMemoryFdInfoKHR)
 import Graphics.Vulkan.Types.Struct.Memory
 
 pattern VkGetMemoryFdKHR :: CString
 
 pattern VkGetMemoryFdKHR <- (is_VkGetMemoryFdKHR -> True)
-  where VkGetMemoryFdKHR = _VkGetMemoryFdKHR
+  where
+    VkGetMemoryFdKHR = _VkGetMemoryFdKHR
 
 {-# INLINE _VkGetMemoryFdKHR #-}
 
@@ -107,22 +157,23 @@
                PFN_vkGetMemoryFdKHR -> HS_vkGetMemoryFdKHR
 
 instance VulkanProc "vkGetMemoryFdKHR" where
-        type VkProcType "vkGetMemoryFdKHR" = HS_vkGetMemoryFdKHR
-        vkProcSymbol = _VkGetMemoryFdKHR
+    type VkProcType "vkGetMemoryFdKHR" = HS_vkGetMemoryFdKHR
+    vkProcSymbol = _VkGetMemoryFdKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetMemoryFdKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetMemoryFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetMemoryFdKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetMemoryFdKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetMemoryFdPropertiesKHR :: CString
 
 pattern VkGetMemoryFdPropertiesKHR <-
         (is_VkGetMemoryFdPropertiesKHR -> True)
-  where VkGetMemoryFdPropertiesKHR = _VkGetMemoryFdPropertiesKHR
+  where
+    VkGetMemoryFdPropertiesKHR = _VkGetMemoryFdPropertiesKHR
 
 {-# INLINE _VkGetMemoryFdPropertiesKHR #-}
 
@@ -170,17 +221,17 @@
                PFN_vkGetMemoryFdPropertiesKHR -> HS_vkGetMemoryFdPropertiesKHR
 
 instance VulkanProc "vkGetMemoryFdPropertiesKHR" where
-        type VkProcType "vkGetMemoryFdPropertiesKHR" =
-             HS_vkGetMemoryFdPropertiesKHR
-        vkProcSymbol = _VkGetMemoryFdPropertiesKHR
+    type VkProcType "vkGetMemoryFdPropertiesKHR" =
+         HS_vkGetMemoryFdPropertiesKHR
+    vkProcSymbol = _VkGetMemoryFdPropertiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetMemoryFdPropertiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetMemoryFdPropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetMemoryFdPropertiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetMemoryFdPropertiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -193,8 +244,9 @@
 
 pattern VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_memory_win32.hs
@@ -11,46 +11,78 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_external_memory_win32
-       (-- * Vulkan extension: @VK_KHR_external_memory_win32@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @James Jones @cubanismo@
-        --
-        -- author: @KHR@
-        --
-        -- type: @device@
-        --
-        -- platform: @win32@
-        --
-        -- Extension number: @74@
-        --
-        -- Required extensions: 'VK_KHR_external_memory'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_external_memory'.
-        module Graphics.Vulkan.Types.BaseTypes,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
         VkExportMemoryWin32HandleInfoKHR,
-        VkExportMemoryWin32HandleInfoKHR',
-        module Graphics.Vulkan.Types.Enum.External,
-        VkImportMemoryWin32HandleInfoKHR,
-        VkImportMemoryWin32HandleInfoKHR', VkMemoryAllocateInfo,
-        VkMemoryAllocateInfo', VkMemoryGetWin32HandleInfoKHR,
-        VkMemoryGetWin32HandleInfoKHR', VkMemoryWin32HandlePropertiesKHR,
-        VkMemoryWin32HandlePropertiesKHR',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkGetMemoryWin32HandleKHR, pattern VkGetMemoryWin32HandleKHR,
-        HS_vkGetMemoryWin32HandleKHR, PFN_vkGetMemoryWin32HandleKHR,
-        VkGetMemoryWin32HandlePropertiesKHR,
+        VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(),
+        VkImportMemoryWin32HandleInfoKHR, VkMemoryAllocateInfo,
+        VkMemoryGetWin32HandleInfoKHR, VkMemoryWin32HandlePropertiesKHR,
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VkGetMemoryWin32HandleKHR,
+        pattern VkGetMemoryWin32HandleKHR, HS_vkGetMemoryWin32HandleKHR,
+        PFN_vkGetMemoryWin32HandleKHR, VkGetMemoryWin32HandlePropertiesKHR,
         pattern VkGetMemoryWin32HandlePropertiesKHR,
         HS_vkGetMemoryWin32HandlePropertiesKHR,
         PFN_vkGetMemoryWin32HandlePropertiesKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.PlatformWin32Khr,
+        module Graphics.Vulkan.Marshal, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkD3D12FenceSubmitInfoKHR, VkExportFenceWin32HandleInfoKHR,
+        VkExportMemoryWin32HandleInfoNV,
+        VkExportSemaphoreWin32HandleInfoKHR, VkFenceGetWin32HandleInfoKHR,
+        VkImportFenceWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoNV,
+        VkImportSemaphoreWin32HandleInfoKHR,
+        VkSemaphoreGetWin32HandleInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoNV, VkWin32SurfaceCreateInfoKHR,
         VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION,
         VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME,
@@ -69,15 +101,15 @@
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Include                 (HANDLE)
-import Graphics.Vulkan.Types.Struct.Memory           (VkMemoryAllocateInfo,
-                                                      VkMemoryAllocateInfo')
+import Graphics.Vulkan.Types.Struct.Memory           (VkMemoryAllocateInfo)
 import Graphics.Vulkan.Types.Struct.PlatformWin32Khr
 
 pattern VkGetMemoryWin32HandleKHR :: CString
 
 pattern VkGetMemoryWin32HandleKHR <-
         (is_VkGetMemoryWin32HandleKHR -> True)
-  where VkGetMemoryWin32HandleKHR = _VkGetMemoryWin32HandleKHR
+  where
+    VkGetMemoryWin32HandleKHR = _VkGetMemoryWin32HandleKHR
 
 {-# INLINE _VkGetMemoryWin32HandleKHR #-}
 
@@ -122,24 +154,25 @@
                PFN_vkGetMemoryWin32HandleKHR -> HS_vkGetMemoryWin32HandleKHR
 
 instance VulkanProc "vkGetMemoryWin32HandleKHR" where
-        type VkProcType "vkGetMemoryWin32HandleKHR" =
-             HS_vkGetMemoryWin32HandleKHR
-        vkProcSymbol = _VkGetMemoryWin32HandleKHR
+    type VkProcType "vkGetMemoryWin32HandleKHR" =
+         HS_vkGetMemoryWin32HandleKHR
+    vkProcSymbol = _VkGetMemoryWin32HandleKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetMemoryWin32HandleKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetMemoryWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandleKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandleKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetMemoryWin32HandlePropertiesKHR :: CString
 
 pattern VkGetMemoryWin32HandlePropertiesKHR <-
         (is_VkGetMemoryWin32HandlePropertiesKHR -> True)
-  where VkGetMemoryWin32HandlePropertiesKHR
-          = _VkGetMemoryWin32HandlePropertiesKHR
+  where
+    VkGetMemoryWin32HandlePropertiesKHR
+      = _VkGetMemoryWin32HandlePropertiesKHR
 
 {-# INLINE _VkGetMemoryWin32HandlePropertiesKHR #-}
 
@@ -191,18 +224,18 @@
                  HS_vkGetMemoryWin32HandlePropertiesKHR
 
 instance VulkanProc "vkGetMemoryWin32HandlePropertiesKHR" where
-        type VkProcType "vkGetMemoryWin32HandlePropertiesKHR" =
-             HS_vkGetMemoryWin32HandlePropertiesKHR
-        vkProcSymbol = _VkGetMemoryWin32HandlePropertiesKHR
+    type VkProcType "vkGetMemoryWin32HandlePropertiesKHR" =
+         HS_vkGetMemoryWin32HandlePropertiesKHR
+    vkProcSymbol = _VkGetMemoryWin32HandlePropertiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetMemoryWin32HandlePropertiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetMemoryWin32HandlePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandlePropertiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandlePropertiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -215,8 +248,9 @@
 
 pattern VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore.hs
@@ -23,9 +23,53 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_semaphore_capabilities'.
-        module Graphics.Vulkan.Types.Struct.Export,
-        module Graphics.Vulkan.Types.Enum.SemaphoreImportFlag,
-        module Graphics.Vulkan.Types.Bitmasks,
+        VkExportSemaphoreCreateInfoKHR, VkSemaphoreImportBitmask(..),
+        VkSemaphoreImportFlagBits(), VkSemaphoreImportFlagBitsKHR(..),
+        VkSemaphoreImportFlags(), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
         VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION,
         VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
@@ -38,7 +82,7 @@
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Types.Bitmasks
 import Graphics.Vulkan.Types.Enum.SemaphoreImportFlag
-import Graphics.Vulkan.Types.Struct.Export
+import Graphics.Vulkan.Types.Struct.Export            (VkExportSemaphoreCreateInfoKHR)
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -51,8 +95,9 @@
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_capabilities.hs
@@ -28,18 +28,172 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Types.Enum.External,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Struct.External,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkExternalSemaphorePropertiesKHR,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceIDPropertiesKHR,
         VkGetPhysicalDeviceExternalSemaphorePropertiesKHR,
         pattern VkGetPhysicalDeviceExternalSemaphorePropertiesKHR,
         HS_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR,
         PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkStructureType(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkExternalBufferProperties, VkExternalBufferPropertiesKHR,
+        VkExternalFenceProperties, VkExternalFencePropertiesKHR,
+        VkExternalImageFormatProperties,
+        VkExternalImageFormatPropertiesKHR,
+        VkExternalImageFormatPropertiesNV,
+        VkExternalMemoryBufferCreateInfo,
+        VkExternalMemoryBufferCreateInfoKHR,
+        VkExternalMemoryImageCreateInfo,
+        VkExternalMemoryImageCreateInfoKHR,
+        VkExternalMemoryImageCreateInfoNV, VkExternalMemoryProperties,
+        VkExternalMemoryPropertiesKHR, VkExternalSemaphoreProperties,
+        VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo, VkPhysicalDeviceFeatures2,
+        VkPhysicalDeviceFeatures2KHR, VkPhysicalDeviceGroupProperties,
+        VkPhysicalDeviceGroupPropertiesKHR, VkPhysicalDeviceIDProperties,
+        VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceImageFormatInfo2KHR, VkPhysicalDeviceLimits,
+        VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties,
+        VkPhysicalDeviceSurfaceInfo2KHR,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
         VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION,
         VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
@@ -74,8 +228,9 @@
 
 pattern VkGetPhysicalDeviceExternalSemaphorePropertiesKHR <-
         (is_VkGetPhysicalDeviceExternalSemaphorePropertiesKHR -> True)
-  where VkGetPhysicalDeviceExternalSemaphorePropertiesKHR
-          = _VkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+  where
+    VkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+      = _VkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 
 {-# INLINE _VkGetPhysicalDeviceExternalSemaphorePropertiesKHR #-}
 
@@ -127,19 +282,19 @@
 instance VulkanProc
            "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"
-             = HS_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
-        vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+    type VkProcType "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"
+         = HS_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR
+    vkProcSymbol = _VkGetPhysicalDeviceExternalSemaphorePropertiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceExternalSemaphorePropertiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -153,8 +308,9 @@
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME
            #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_fd.hs
@@ -27,22 +27,70 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_semaphore'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.External,
-        module Graphics.Vulkan.Types.BaseTypes, VkImportSemaphoreFdInfoKHR,
-        VkImportSemaphoreFdInfoKHR', VkSemaphoreGetFdInfoKHR,
-        VkSemaphoreGetFdInfoKHR',
-        module Graphics.Vulkan.Types.Enum.SemaphoreImportFlag,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkImportSemaphoreFdKHR, pattern VkImportSemaphoreFdKHR,
-        HS_vkImportSemaphoreFdKHR, PFN_vkImportSemaphoreFdKHR,
-        VkGetSemaphoreFdKHR, pattern VkGetSemaphoreFdKHR,
-        HS_vkGetSemaphoreFdKHR, PFN_vkGetSemaphoreFdKHR,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Import,
-        module Graphics.Vulkan.Types.Struct.Semaphore,
+        module Graphics.Vulkan.Marshal, VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(), VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkImportSemaphoreFdInfoKHR, VkSemaphoreGetFdInfoKHR,
+        VkSemaphoreImportBitmask(..), VkSemaphoreImportFlagBits(),
+        VkSemaphoreImportFlagBitsKHR(..), VkSemaphoreImportFlags(),
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VkImportSemaphoreFdKHR,
+        pattern VkImportSemaphoreFdKHR, HS_vkImportSemaphoreFdKHR,
+        PFN_vkImportSemaphoreFdKHR, VkGetSemaphoreFdKHR,
+        pattern VkGetSemaphoreFdKHR, HS_vkGetSemaphoreFdKHR,
+        PFN_vkGetSemaphoreFdKHR, VkResult(..), VkBuffer, VkBufferView,
+        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkImportFenceFdInfoKHR, VkImportMemoryFdInfoKHR,
+        VkImportMemoryHostPointerInfoEXT, VkSemaphoreCreateInfo,
         VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION,
         VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME,
@@ -66,7 +114,8 @@
 
 pattern VkImportSemaphoreFdKHR <-
         (is_VkImportSemaphoreFdKHR -> True)
-  where VkImportSemaphoreFdKHR = _VkImportSemaphoreFdKHR
+  where
+    VkImportSemaphoreFdKHR = _VkImportSemaphoreFdKHR
 
 {-# INLINE _VkImportSemaphoreFdKHR #-}
 
@@ -107,22 +156,23 @@
                PFN_vkImportSemaphoreFdKHR -> HS_vkImportSemaphoreFdKHR
 
 instance VulkanProc "vkImportSemaphoreFdKHR" where
-        type VkProcType "vkImportSemaphoreFdKHR" =
-             HS_vkImportSemaphoreFdKHR
-        vkProcSymbol = _VkImportSemaphoreFdKHR
+    type VkProcType "vkImportSemaphoreFdKHR" =
+         HS_vkImportSemaphoreFdKHR
+    vkProcSymbol = _VkImportSemaphoreFdKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkImportSemaphoreFdKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkImportSemaphoreFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkImportSemaphoreFdKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkImportSemaphoreFdKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetSemaphoreFdKHR :: CString
 
 pattern VkGetSemaphoreFdKHR <- (is_VkGetSemaphoreFdKHR -> True)
-  where VkGetSemaphoreFdKHR = _VkGetSemaphoreFdKHR
+  where
+    VkGetSemaphoreFdKHR = _VkGetSemaphoreFdKHR
 
 {-# INLINE _VkGetSemaphoreFdKHR #-}
 
@@ -163,16 +213,16 @@
                :: PFN_vkGetSemaphoreFdKHR -> HS_vkGetSemaphoreFdKHR
 
 instance VulkanProc "vkGetSemaphoreFdKHR" where
-        type VkProcType "vkGetSemaphoreFdKHR" = HS_vkGetSemaphoreFdKHR
-        vkProcSymbol = _VkGetSemaphoreFdKHR
+    type VkProcType "vkGetSemaphoreFdKHR" = HS_vkGetSemaphoreFdKHR
+    vkProcSymbol = _VkGetSemaphoreFdKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetSemaphoreFdKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetSemaphoreFdKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetSemaphoreFdKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetSemaphoreFdKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -185,8 +235,9 @@
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_external_semaphore_win32.hs
@@ -29,31 +29,141 @@
         --
 
         -- ** Required extensions: 'VK_KHR_external_semaphore'.
-        VkD3D12FenceSubmitInfoKHR, VkD3D12FenceSubmitInfoKHR',
-        VkExportSemaphoreWin32HandleInfoKHR,
-        VkExportSemaphoreWin32HandleInfoKHR',
-        module Graphics.Vulkan.Types.Enum.External,
-        module Graphics.Vulkan.Types.BaseTypes,
-        VkImportSemaphoreWin32HandleInfoKHR,
-        VkImportSemaphoreWin32HandleInfoKHR',
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Bitmasks, VkSemaphoreCreateInfo,
-        VkSemaphoreCreateInfo', VkSemaphoreGetWin32HandleInfoKHR,
-        VkSemaphoreGetWin32HandleInfoKHR',
-        module Graphics.Vulkan.Types.Enum.SemaphoreImportFlag,
-        module Graphics.Vulkan.Types.Enum.StructureType, VkSubmitInfo,
-        VkSubmitInfo', -- > #include "vk_platform.h"
-                       VkImportSemaphoreWin32HandleKHR,
+        VkD3D12FenceSubmitInfoKHR, VkExportSemaphoreWin32HandleInfoKHR,
+        VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(), VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkImportSemaphoreWin32HandleInfoKHR, VkPipelineBindPoint(..),
+        VkPipelineCacheHeaderVersion(..), VkPipelineCreateBitmask(..),
+        VkPipelineStageBitmask(..), VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkSemaphoreCreateInfo,
+        VkSemaphoreGetWin32HandleInfoKHR, VkSemaphoreImportBitmask(..),
+        VkSemaphoreImportFlagBits(), VkSemaphoreImportFlagBitsKHR(..),
+        VkSemaphoreImportFlags(), VkStructureType(..), VkSubmitInfo,
+        -- > #include "vk_platform.h"
+        VkImportSemaphoreWin32HandleKHR,
         pattern VkImportSemaphoreWin32HandleKHR,
         HS_vkImportSemaphoreWin32HandleKHR,
         PFN_vkImportSemaphoreWin32HandleKHR, VkGetSemaphoreWin32HandleKHR,
         pattern VkGetSemaphoreWin32HandleKHR,
         HS_vkGetSemaphoreWin32HandleKHR, PFN_vkGetSemaphoreWin32HandleKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Include,
-        module Graphics.Vulkan.Types.Struct.PlatformWin32Khr,
+        module Graphics.Vulkan.Marshal, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR, MirConnection,
+        MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID, Window,
+        WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT, XcbWindowT,
+        VkExportFenceWin32HandleInfoKHR, VkExportMemoryWin32HandleInfoKHR,
+        VkExportMemoryWin32HandleInfoNV, VkFenceGetWin32HandleInfoKHR,
+        VkImportFenceWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoKHR,
+        VkImportMemoryWin32HandleInfoNV, VkMemoryGetWin32HandleInfoKHR,
+        VkMemoryWin32HandlePropertiesKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoNV, VkWin32SurfaceCreateInfoKHR,
         VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION,
         pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION,
         VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME,
@@ -76,17 +186,15 @@
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Include
 import Graphics.Vulkan.Types.Struct.PlatformWin32Khr
-import Graphics.Vulkan.Types.Struct.Semaphore         (VkSemaphoreCreateInfo,
-                                                       VkSemaphoreCreateInfo')
-import Graphics.Vulkan.Types.Struct.SubmitInfo        (VkSubmitInfo,
-                                                       VkSubmitInfo')
+import Graphics.Vulkan.Types.Struct.Semaphore         (VkSemaphoreCreateInfo)
+import Graphics.Vulkan.Types.Struct.SubmitInfo        (VkSubmitInfo)
 
 pattern VkImportSemaphoreWin32HandleKHR :: CString
 
 pattern VkImportSemaphoreWin32HandleKHR <-
         (is_VkImportSemaphoreWin32HandleKHR -> True)
-  where VkImportSemaphoreWin32HandleKHR
-          = _VkImportSemaphoreWin32HandleKHR
+  where
+    VkImportSemaphoreWin32HandleKHR = _VkImportSemaphoreWin32HandleKHR
 
 {-# INLINE _VkImportSemaphoreWin32HandleKHR #-}
 
@@ -132,23 +240,24 @@
                  HS_vkImportSemaphoreWin32HandleKHR
 
 instance VulkanProc "vkImportSemaphoreWin32HandleKHR" where
-        type VkProcType "vkImportSemaphoreWin32HandleKHR" =
-             HS_vkImportSemaphoreWin32HandleKHR
-        vkProcSymbol = _VkImportSemaphoreWin32HandleKHR
+    type VkProcType "vkImportSemaphoreWin32HandleKHR" =
+         HS_vkImportSemaphoreWin32HandleKHR
+    vkProcSymbol = _VkImportSemaphoreWin32HandleKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkImportSemaphoreWin32HandleKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkImportSemaphoreWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkImportSemaphoreWin32HandleKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkImportSemaphoreWin32HandleKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetSemaphoreWin32HandleKHR :: CString
 
 pattern VkGetSemaphoreWin32HandleKHR <-
         (is_VkGetSemaphoreWin32HandleKHR -> True)
-  where VkGetSemaphoreWin32HandleKHR = _VkGetSemaphoreWin32HandleKHR
+  where
+    VkGetSemaphoreWin32HandleKHR = _VkGetSemaphoreWin32HandleKHR
 
 {-# INLINE _VkGetSemaphoreWin32HandleKHR #-}
 
@@ -194,17 +303,17 @@
                PFN_vkGetSemaphoreWin32HandleKHR -> HS_vkGetSemaphoreWin32HandleKHR
 
 instance VulkanProc "vkGetSemaphoreWin32HandleKHR" where
-        type VkProcType "vkGetSemaphoreWin32HandleKHR" =
-             HS_vkGetSemaphoreWin32HandleKHR
-        vkProcSymbol = _VkGetSemaphoreWin32HandleKHR
+    type VkProcType "vkGetSemaphoreWin32HandleKHR" =
+         HS_vkGetSemaphoreWin32HandleKHR
+    vkProcSymbol = _VkGetSemaphoreWin32HandleKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetSemaphoreWin32HandleKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetSemaphoreWin32HandleKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetSemaphoreWin32HandleKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetSemaphoreWin32HandleKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -217,8 +326,9 @@
 
 pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME <-
         (is_VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME -> True)
-  where VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME
-          = _VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME
+  where
+    VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME
+      = _VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_display_properties2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_display_properties2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_display_properties2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_display_properties2.hs
@@ -27,22 +27,19 @@
         --
 
         -- ** Required extensions: 'VK_KHR_display'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes, VkDisplayModeParametersKHR,
-        VkDisplayModeParametersKHR', VkDisplayModeProperties2KHR,
-        VkDisplayModeProperties2KHR', VkDisplayModePropertiesKHR,
-        VkDisplayModePropertiesKHR',
-        module Graphics.Vulkan.Types.Enum.Display,
-        VkDisplayPlaneCapabilities2KHR, VkDisplayPlaneCapabilities2KHR',
-        VkDisplayPlaneCapabilitiesKHR, VkDisplayPlaneCapabilitiesKHR',
-        VkDisplayPlaneInfo2KHR, VkDisplayPlaneInfo2KHR',
-        VkDisplayPlaneProperties2KHR, VkDisplayPlaneProperties2KHR',
-        VkDisplayPlanePropertiesKHR, VkDisplayPlanePropertiesKHR',
-        VkDisplayProperties2KHR, VkDisplayProperties2KHR',
-        VkDisplayPropertiesKHR, VkDisplayPropertiesKHR', VkExtent2D,
-        VkExtent2D', VkOffset2D, VkOffset2D',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.Surface,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkDisplayModeParametersKHR,
+        VkDisplayModeProperties2KHR, VkDisplayModePropertiesKHR,
+        VkDisplayEventTypeEXT(..), VkDisplayPlaneAlphaBitmaskKHR(..),
+        VkDisplayPowerStateEXT(..), VkDisplayPlaneAlphaFlagBitsKHR(),
+        VkDisplayPlaneAlphaFlagsKHR(), VkDisplayPlaneCapabilities2KHR,
+        VkDisplayPlaneCapabilitiesKHR, VkDisplayPlaneInfo2KHR,
+        VkDisplayPlaneProperties2KHR, VkDisplayPlanePropertiesKHR,
+        VkDisplayProperties2KHR, VkDisplayPropertiesKHR, VkExtent2D,
+        VkOffset2D, VkStructureType(..), VkSurfaceCounterBitmaskEXT(..),
+        VkSurfaceTransformBitmaskKHR(..), VkSurfaceCounterFlagBitsEXT(),
+        VkSurfaceCounterFlagsEXT(), VkSurfaceTransformFlagBitsKHR(),
+        VkSurfaceTransformFlagsKHR(),
         -- > #include "vk_platform.h"
         VkGetPhysicalDeviceDisplayProperties2KHR,
         pattern VkGetPhysicalDeviceDisplayProperties2KHR,
@@ -59,12 +56,34 @@
         VkGetDisplayPlaneCapabilities2KHR,
         pattern VkGetDisplayPlaneCapabilities2KHR,
         HS_vkGetDisplayPlaneCapabilities2KHR,
-        PFN_vkGetDisplayPlaneCapabilities2KHR,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Display,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Offset,
+        PFN_vkGetDisplayPlaneCapabilities2KHR, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkDisplayEventInfoEXT, VkDisplayModeCreateInfoKHR,
+        VkDisplayPowerInfoEXT, VkDisplayPresentInfoKHR,
+        VkDisplaySurfaceCreateInfoKHR, VkExtent3D, VkOffset3D,
         VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION,
         pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION,
         VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME,
@@ -92,8 +111,9 @@
 
 pattern VkGetPhysicalDeviceDisplayProperties2KHR <-
         (is_VkGetPhysicalDeviceDisplayProperties2KHR -> True)
-  where VkGetPhysicalDeviceDisplayProperties2KHR
-          = _VkGetPhysicalDeviceDisplayProperties2KHR
+  where
+    VkGetPhysicalDeviceDisplayProperties2KHR
+      = _VkGetPhysicalDeviceDisplayProperties2KHR
 
 {-# INLINE _VkGetPhysicalDeviceDisplayProperties2KHR #-}
 
@@ -143,26 +163,27 @@
 
 instance VulkanProc "vkGetPhysicalDeviceDisplayProperties2KHR"
          where
-        type VkProcType "vkGetPhysicalDeviceDisplayProperties2KHR" =
-             HS_vkGetPhysicalDeviceDisplayProperties2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceDisplayProperties2KHR
+    type VkProcType "vkGetPhysicalDeviceDisplayProperties2KHR" =
+         HS_vkGetPhysicalDeviceDisplayProperties2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceDisplayProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceDisplayProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceDisplayProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceDisplayProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceDisplayProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceDisplayPlaneProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceDisplayPlaneProperties2KHR <-
         (is_VkGetPhysicalDeviceDisplayPlaneProperties2KHR -> True)
-  where VkGetPhysicalDeviceDisplayPlaneProperties2KHR
-          = _VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+  where
+    VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+      = _VkGetPhysicalDeviceDisplayPlaneProperties2KHR
 
 {-# INLINE _VkGetPhysicalDeviceDisplayPlaneProperties2KHR #-}
 
@@ -213,26 +234,26 @@
 
 instance VulkanProc "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"
          where
-        type VkProcType "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" =
-             HS_vkGetPhysicalDeviceDisplayPlaneProperties2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceDisplayPlaneProperties2KHR
+    type VkProcType "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" =
+         HS_vkGetPhysicalDeviceDisplayPlaneProperties2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceDisplayPlaneProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceDisplayPlaneProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceDisplayPlaneProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceDisplayPlaneProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceDisplayPlaneProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetDisplayModeProperties2KHR :: CString
 
 pattern VkGetDisplayModeProperties2KHR <-
         (is_VkGetDisplayModeProperties2KHR -> True)
-  where VkGetDisplayModeProperties2KHR
-          = _VkGetDisplayModeProperties2KHR
+  where
+    VkGetDisplayModeProperties2KHR = _VkGetDisplayModeProperties2KHR
 
 {-# INLINE _VkGetDisplayModeProperties2KHR #-}
 
@@ -284,24 +305,25 @@
                  HS_vkGetDisplayModeProperties2KHR
 
 instance VulkanProc "vkGetDisplayModeProperties2KHR" where
-        type VkProcType "vkGetDisplayModeProperties2KHR" =
-             HS_vkGetDisplayModeProperties2KHR
-        vkProcSymbol = _VkGetDisplayModeProperties2KHR
+    type VkProcType "vkGetDisplayModeProperties2KHR" =
+         HS_vkGetDisplayModeProperties2KHR
+    vkProcSymbol = _VkGetDisplayModeProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetDisplayModeProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetDisplayModeProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDisplayModeProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDisplayModeProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetDisplayPlaneCapabilities2KHR :: CString
 
 pattern VkGetDisplayPlaneCapabilities2KHR <-
         (is_VkGetDisplayPlaneCapabilities2KHR -> True)
-  where VkGetDisplayPlaneCapabilities2KHR
-          = _VkGetDisplayPlaneCapabilities2KHR
+  where
+    VkGetDisplayPlaneCapabilities2KHR
+      = _VkGetDisplayPlaneCapabilities2KHR
 
 {-# INLINE _VkGetDisplayPlaneCapabilities2KHR #-}
 
@@ -351,18 +373,18 @@
                  HS_vkGetDisplayPlaneCapabilities2KHR
 
 instance VulkanProc "vkGetDisplayPlaneCapabilities2KHR" where
-        type VkProcType "vkGetDisplayPlaneCapabilities2KHR" =
-             HS_vkGetDisplayPlaneCapabilities2KHR
-        vkProcSymbol = _VkGetDisplayPlaneCapabilities2KHR
+    type VkProcType "vkGetDisplayPlaneCapabilities2KHR" =
+         HS_vkGetDisplayPlaneCapabilities2KHR
+    vkProcSymbol = _VkGetDisplayPlaneCapabilities2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetDisplayPlaneCapabilities2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetDisplayPlaneCapabilities2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDisplayPlaneCapabilities2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDisplayPlaneCapabilities2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -375,8 +397,9 @@
 
 pattern VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME <-
         (is_VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME -> True)
-  where VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
-          = _VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
+  where
+    VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
+      = _VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_memory_requirements2.hs
@@ -23,10 +23,10 @@
         -- type: @device@
         --
         -- Extension number: @147@
-        module Graphics.Vulkan.Types.Struct.Buffer,
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Struct.Memory,
-        module Graphics.Vulkan.Types.Struct.Sparse,
+        VkBufferMemoryRequirementsInfo2KHR,
+        VkImageMemoryRequirementsInfo2KHR,
+        VkImageSparseMemoryRequirementsInfo2KHR, VkMemoryRequirements2KHR,
+        VkSparseImageMemoryRequirements2KHR,
         VkGetImageMemoryRequirements2KHR,
         pattern VkGetImageMemoryRequirements2KHR,
         HS_vkGetImageMemoryRequirements2KHR,
@@ -39,13 +39,65 @@
         pattern VkGetImageSparseMemoryRequirements2KHR,
         HS_vkGetImageSparseMemoryRequirements2KHR,
         PFN_vkGetImageSparseMemoryRequirements2KHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.Sparse,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Extent,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkSparseImageFormatBitmask(..), VkSparseMemoryBindBitmask(..),
+        VkSparseImageFormatFlagBits(), VkSparseImageFormatFlags(),
+        VkSparseMemoryBindFlagBits(), VkSparseMemoryBindFlags(),
+        VkStructureType(..), VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkBufferCopy, VkBufferCreateInfo, VkBufferImageCopy,
+        VkBufferMemoryBarrier, VkBufferMemoryRequirementsInfo2,
+        VkBufferViewCreateInfo, VkExtent2D, VkExtent3D, VkImageBlit,
+        VkImageCopy, VkImageCreateInfo, VkImageFormatListCreateInfoKHR,
+        VkImageFormatProperties, VkImageFormatProperties2,
+        VkImageFormatProperties2KHR, VkImageMemoryBarrier,
+        VkImageMemoryRequirementsInfo2, VkImagePlaneMemoryRequirementsInfo,
+        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
+        VkImageSparseMemoryRequirementsInfo2, VkImageSubresource,
+        VkImageSubresourceLayers, VkImageSubresourceRange,
+        VkImageSwapchainCreateInfoKHR, VkImageViewCreateInfo,
+        VkImageViewUsageCreateInfo, VkImageViewUsageCreateInfoKHR,
+        VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfoKHR,
+        VkMemoryAllocateInfo, VkMemoryBarrier,
+        VkMemoryDedicatedAllocateInfo, VkMemoryDedicatedAllocateInfoKHR,
+        VkMemoryDedicatedRequirements, VkMemoryDedicatedRequirementsKHR,
+        VkMemoryFdPropertiesKHR, VkMemoryGetFdInfoKHR, VkMemoryHeap,
+        VkMemoryHostPointerPropertiesEXT, VkMemoryRequirements,
+        VkMemoryRequirements2, VkMemoryType, VkSparseBufferMemoryBindInfo,
+        VkSparseImageFormatProperties, VkSparseImageFormatProperties2,
+        VkSparseImageFormatProperties2KHR, VkSparseImageMemoryBind,
+        VkSparseImageMemoryBindInfo, VkSparseImageMemoryRequirements,
+        VkSparseImageMemoryRequirements2,
+        VkSparseImageOpaqueMemoryBindInfo, VkSparseMemoryBind,
         VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION,
         pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION,
         VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,
@@ -79,8 +131,9 @@
 
 pattern VkGetImageMemoryRequirements2KHR <-
         (is_VkGetImageMemoryRequirements2KHR -> True)
-  where VkGetImageMemoryRequirements2KHR
-          = _VkGetImageMemoryRequirements2KHR
+  where
+    VkGetImageMemoryRequirements2KHR
+      = _VkGetImageMemoryRequirements2KHR
 
 {-# INLINE _VkGetImageMemoryRequirements2KHR #-}
 
@@ -128,25 +181,26 @@
                  HS_vkGetImageMemoryRequirements2KHR
 
 instance VulkanProc "vkGetImageMemoryRequirements2KHR" where
-        type VkProcType "vkGetImageMemoryRequirements2KHR" =
-             HS_vkGetImageMemoryRequirements2KHR
-        vkProcSymbol = _VkGetImageMemoryRequirements2KHR
+    type VkProcType "vkGetImageMemoryRequirements2KHR" =
+         HS_vkGetImageMemoryRequirements2KHR
+    vkProcSymbol = _VkGetImageMemoryRequirements2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetImageMemoryRequirements2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetImageMemoryRequirements2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetImageMemoryRequirements2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetBufferMemoryRequirements2KHR :: CString
 
 pattern VkGetBufferMemoryRequirements2KHR <-
         (is_VkGetBufferMemoryRequirements2KHR -> True)
-  where VkGetBufferMemoryRequirements2KHR
-          = _VkGetBufferMemoryRequirements2KHR
+  where
+    VkGetBufferMemoryRequirements2KHR
+      = _VkGetBufferMemoryRequirements2KHR
 
 {-# INLINE _VkGetBufferMemoryRequirements2KHR #-}
 
@@ -194,25 +248,26 @@
                  HS_vkGetBufferMemoryRequirements2KHR
 
 instance VulkanProc "vkGetBufferMemoryRequirements2KHR" where
-        type VkProcType "vkGetBufferMemoryRequirements2KHR" =
-             HS_vkGetBufferMemoryRequirements2KHR
-        vkProcSymbol = _VkGetBufferMemoryRequirements2KHR
+    type VkProcType "vkGetBufferMemoryRequirements2KHR" =
+         HS_vkGetBufferMemoryRequirements2KHR
+    vkProcSymbol = _VkGetBufferMemoryRequirements2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetBufferMemoryRequirements2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetBufferMemoryRequirements2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetBufferMemoryRequirements2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetImageSparseMemoryRequirements2KHR :: CString
 
 pattern VkGetImageSparseMemoryRequirements2KHR <-
         (is_VkGetImageSparseMemoryRequirements2KHR -> True)
-  where VkGetImageSparseMemoryRequirements2KHR
-          = _VkGetImageSparseMemoryRequirements2KHR
+  where
+    VkGetImageSparseMemoryRequirements2KHR
+      = _VkGetImageSparseMemoryRequirements2KHR
 
 {-# INLINE _VkGetImageSparseMemoryRequirements2KHR #-}
 
@@ -262,19 +317,19 @@
                  HS_vkGetImageSparseMemoryRequirements2KHR
 
 instance VulkanProc "vkGetImageSparseMemoryRequirements2KHR" where
-        type VkProcType "vkGetImageSparseMemoryRequirements2KHR" =
-             HS_vkGetImageSparseMemoryRequirements2KHR
-        vkProcSymbol = _VkGetImageSparseMemoryRequirements2KHR
+    type VkProcType "vkGetImageSparseMemoryRequirements2KHR" =
+         HS_vkGetImageSparseMemoryRequirements2KHR
+    vkProcSymbol = _VkGetImageSparseMemoryRequirements2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetImageSparseMemoryRequirements2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetImageSparseMemoryRequirements2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetImageSparseMemoryRequirements2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetImageSparseMemoryRequirements2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -287,8 +342,9 @@
 
 pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME <-
         (is_VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME -> True)
-  where VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
-          = _VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
+  where
+    VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
+      = _VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_physical_device_properties2.hs
@@ -23,11 +23,12 @@
         -- type: @instance@
         --
         -- Extension number: @60@
-        module Graphics.Vulkan.Types.Struct.FormatProperties,
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        module Graphics.Vulkan.Types.Struct.QueueFamilyProperties,
-        module Graphics.Vulkan.Types.Struct.Sparse,
+        VkFormatProperties2KHR, VkImageFormatProperties2KHR,
+        VkPhysicalDeviceFeatures2KHR, VkPhysicalDeviceImageFormatInfo2KHR,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkQueueFamilyProperties2KHR, VkSparseImageFormatProperties2KHR,
         VkGetPhysicalDeviceFeatures2KHR,
         pattern VkGetPhysicalDeviceFeatures2KHR,
         HS_vkGetPhysicalDeviceFeatures2KHR,
@@ -56,24 +57,186 @@
         pattern VkGetPhysicalDeviceSparseImageFormatProperties2KHR,
         HS_vkGetPhysicalDeviceSparseImageFormatProperties2KHR,
         PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
-        module Graphics.Vulkan.Types.Enum.Device,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.Memory,
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.Queue,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.Sparse,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Device,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Memory,
-        module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkDeviceEventTypeEXT(..),
+        VkDeviceGroupPresentModeBitmaskKHR(..), VkDeviceCreateFlagBits(..),
+        VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkFormat(..), VkFormatFeatureBitmask(..),
+        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkMemoryAllocateBitmask(..), VkMemoryHeapBitmask(..),
+        VkMemoryPropertyBitmask(..), VkMemoryAllocateFlagBits(),
+        VkMemoryAllocateFlagBitsKHR(..), VkMemoryAllocateFlags(),
+        VkMemoryHeapFlagBits(), VkMemoryHeapFlags(),
+        VkMemoryPropertyFlagBits(), VkMemoryPropertyFlags(),
+        VkPhysicalDeviceType(..), VkQueueBitmask(..),
+        VkQueueGlobalPriorityEXT(..), VkQueueFlagBits(), VkQueueFlags(),
+        VkResult(..), VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkSparseImageFormatBitmask(..),
+        VkSparseMemoryBindBitmask(..), VkSparseImageFormatFlagBits(),
+        VkSparseImageFormatFlags(), VkSparseMemoryBindFlagBits(),
+        VkSparseMemoryBindFlags(), VkStructureType(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkDeviceCreateInfo, VkDeviceEventInfoEXT,
+        VkDeviceGeneratedCommandsFeaturesNVX,
+        VkDeviceGeneratedCommandsLimitsNVX, VkDeviceGroupBindSparseInfo,
+        VkDeviceGroupBindSparseInfoKHR,
+        VkDeviceGroupCommandBufferBeginInfo,
+        VkDeviceGroupCommandBufferBeginInfoKHR,
+        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfoKHR,
+        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
+        VkDeviceGroupRenderPassBeginInfo,
+        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
+        VkDeviceGroupSubmitInfoKHR, VkDeviceGroupSwapchainCreateInfoKHR,
+        VkDeviceQueueCreateInfo, VkDeviceQueueGlobalPriorityCreateInfoEXT,
+        VkDeviceQueueInfo2, VkExtent2D, VkExtent3D, VkFormatProperties,
+        VkFormatProperties2, VkImageBlit, VkImageCopy, VkImageCreateInfo,
+        VkImageFormatListCreateInfoKHR, VkImageFormatProperties,
+        VkImageFormatProperties2, VkImageMemoryBarrier,
+        VkImageMemoryRequirementsInfo2, VkImageMemoryRequirementsInfo2KHR,
+        VkImagePlaneMemoryRequirementsInfo,
+        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
+        VkImageSparseMemoryRequirementsInfo2,
+        VkImageSparseMemoryRequirementsInfo2KHR, VkImageSubresource,
+        VkImageSubresourceLayers, VkImageSubresourceRange,
+        VkImageSwapchainCreateInfoKHR, VkImageViewCreateInfo,
+        VkImageViewUsageCreateInfo, VkImageViewUsageCreateInfoKHR,
+        VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfoKHR,
+        VkMemoryAllocateInfo, VkMemoryBarrier,
+        VkMemoryDedicatedAllocateInfo, VkMemoryDedicatedAllocateInfoKHR,
+        VkMemoryDedicatedRequirements, VkMemoryDedicatedRequirementsKHR,
+        VkMemoryFdPropertiesKHR, VkMemoryGetFdInfoKHR, VkMemoryHeap,
+        VkMemoryHostPointerPropertiesEXT, VkMemoryRequirements,
+        VkMemoryRequirements2, VkMemoryRequirements2KHR, VkMemoryType,
+        VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceFeatures2, VkPhysicalDeviceGroupProperties,
+        VkPhysicalDeviceGroupPropertiesKHR, VkPhysicalDeviceIDProperties,
+        VkPhysicalDeviceIDPropertiesKHR, VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceLimits, VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties,
+        VkPhysicalDeviceSurfaceInfo2KHR,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
+        VkPhysicalDeviceFeatures, VkQueueFamilyProperties,
+        VkQueueFamilyProperties2, VkSparseBufferMemoryBindInfo,
+        VkSparseImageFormatProperties, VkSparseImageFormatProperties2,
+        VkSparseImageMemoryBind, VkSparseImageMemoryBindInfo,
+        VkSparseImageMemoryRequirements, VkSparseImageMemoryRequirements2,
+        VkSparseImageMemoryRequirements2KHR,
+        VkSparseImageOpaqueMemoryBindInfo, VkSparseMemoryBind,
         VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION,
         pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION,
         VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
@@ -127,8 +290,8 @@
 
 pattern VkGetPhysicalDeviceFeatures2KHR <-
         (is_VkGetPhysicalDeviceFeatures2KHR -> True)
-  where VkGetPhysicalDeviceFeatures2KHR
-          = _VkGetPhysicalDeviceFeatures2KHR
+  where
+    VkGetPhysicalDeviceFeatures2KHR = _VkGetPhysicalDeviceFeatures2KHR
 
 {-# INLINE _VkGetPhysicalDeviceFeatures2KHR #-}
 
@@ -172,24 +335,25 @@
                  HS_vkGetPhysicalDeviceFeatures2KHR
 
 instance VulkanProc "vkGetPhysicalDeviceFeatures2KHR" where
-        type VkProcType "vkGetPhysicalDeviceFeatures2KHR" =
-             HS_vkGetPhysicalDeviceFeatures2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceFeatures2KHR
+    type VkProcType "vkGetPhysicalDeviceFeatures2KHR" =
+         HS_vkGetPhysicalDeviceFeatures2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceFeatures2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeatures2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetPhysicalDeviceFeatures2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceFeatures2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceProperties2KHR <-
         (is_VkGetPhysicalDeviceProperties2KHR -> True)
-  where VkGetPhysicalDeviceProperties2KHR
-          = _VkGetPhysicalDeviceProperties2KHR
+  where
+    VkGetPhysicalDeviceProperties2KHR
+      = _VkGetPhysicalDeviceProperties2KHR
 
 {-# INLINE _VkGetPhysicalDeviceProperties2KHR #-}
 
@@ -233,25 +397,26 @@
                  HS_vkGetPhysicalDeviceProperties2KHR
 
 instance VulkanProc "vkGetPhysicalDeviceProperties2KHR" where
-        type VkProcType "vkGetPhysicalDeviceProperties2KHR" =
-             HS_vkGetPhysicalDeviceProperties2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceProperties2KHR
+    type VkProcType "vkGetPhysicalDeviceProperties2KHR" =
+         HS_vkGetPhysicalDeviceProperties2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetPhysicalDeviceProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceFormatProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceFormatProperties2KHR <-
         (is_VkGetPhysicalDeviceFormatProperties2KHR -> True)
-  where VkGetPhysicalDeviceFormatProperties2KHR
-          = _VkGetPhysicalDeviceFormatProperties2KHR
+  where
+    VkGetPhysicalDeviceFormatProperties2KHR
+      = _VkGetPhysicalDeviceFormatProperties2KHR
 
 {-# INLINE _VkGetPhysicalDeviceFormatProperties2KHR #-}
 
@@ -297,26 +462,27 @@
                  HS_vkGetPhysicalDeviceFormatProperties2KHR
 
 instance VulkanProc "vkGetPhysicalDeviceFormatProperties2KHR" where
-        type VkProcType "vkGetPhysicalDeviceFormatProperties2KHR" =
-             HS_vkGetPhysicalDeviceFormatProperties2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2KHR
+    type VkProcType "vkGetPhysicalDeviceFormatProperties2KHR" =
+         HS_vkGetPhysicalDeviceFormatProperties2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceFormatProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceFormatProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceFormatProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceFormatProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceFormatProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceImageFormatProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceImageFormatProperties2KHR <-
         (is_VkGetPhysicalDeviceImageFormatProperties2KHR -> True)
-  where VkGetPhysicalDeviceImageFormatProperties2KHR
-          = _VkGetPhysicalDeviceImageFormatProperties2KHR
+  where
+    VkGetPhysicalDeviceImageFormatProperties2KHR
+      = _VkGetPhysicalDeviceImageFormatProperties2KHR
 
 {-# INLINE _VkGetPhysicalDeviceImageFormatProperties2KHR #-}
 
@@ -370,26 +536,27 @@
 
 instance VulkanProc "vkGetPhysicalDeviceImageFormatProperties2KHR"
          where
-        type VkProcType "vkGetPhysicalDeviceImageFormatProperties2KHR" =
-             HS_vkGetPhysicalDeviceImageFormatProperties2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2KHR
+    type VkProcType "vkGetPhysicalDeviceImageFormatProperties2KHR" =
+         HS_vkGetPhysicalDeviceImageFormatProperties2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceImageFormatProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceImageFormatProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceImageFormatProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceImageFormatProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceImageFormatProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceQueueFamilyProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceQueueFamilyProperties2KHR <-
         (is_VkGetPhysicalDeviceQueueFamilyProperties2KHR -> True)
-  where VkGetPhysicalDeviceQueueFamilyProperties2KHR
-          = _VkGetPhysicalDeviceQueueFamilyProperties2KHR
+  where
+    VkGetPhysicalDeviceQueueFamilyProperties2KHR
+      = _VkGetPhysicalDeviceQueueFamilyProperties2KHR
 
 {-# INLINE _VkGetPhysicalDeviceQueueFamilyProperties2KHR #-}
 
@@ -438,26 +605,27 @@
 
 instance VulkanProc "vkGetPhysicalDeviceQueueFamilyProperties2KHR"
          where
-        type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2KHR" =
-             HS_vkGetPhysicalDeviceQueueFamilyProperties2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2KHR
+    type VkProcType "vkGetPhysicalDeviceQueueFamilyProperties2KHR" =
+         HS_vkGetPhysicalDeviceQueueFamilyProperties2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceQueueFamilyProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceQueueFamilyProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceMemoryProperties2KHR :: CString
 
 pattern VkGetPhysicalDeviceMemoryProperties2KHR <-
         (is_VkGetPhysicalDeviceMemoryProperties2KHR -> True)
-  where VkGetPhysicalDeviceMemoryProperties2KHR
-          = _VkGetPhysicalDeviceMemoryProperties2KHR
+  where
+    VkGetPhysicalDeviceMemoryProperties2KHR
+      = _VkGetPhysicalDeviceMemoryProperties2KHR
 
 {-# INLINE _VkGetPhysicalDeviceMemoryProperties2KHR #-}
 
@@ -501,27 +669,28 @@
                  HS_vkGetPhysicalDeviceMemoryProperties2KHR
 
 instance VulkanProc "vkGetPhysicalDeviceMemoryProperties2KHR" where
-        type VkProcType "vkGetPhysicalDeviceMemoryProperties2KHR" =
-             HS_vkGetPhysicalDeviceMemoryProperties2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2KHR
+    type VkProcType "vkGetPhysicalDeviceMemoryProperties2KHR" =
+         HS_vkGetPhysicalDeviceMemoryProperties2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceMemoryProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceMemoryProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceMemoryProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceMemoryProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceMemoryProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceSparseImageFormatProperties2KHR ::
         CString
 
 pattern VkGetPhysicalDeviceSparseImageFormatProperties2KHR <-
         (is_VkGetPhysicalDeviceSparseImageFormatProperties2KHR -> True)
-  where VkGetPhysicalDeviceSparseImageFormatProperties2KHR
-          = _VkGetPhysicalDeviceSparseImageFormatProperties2KHR
+  where
+    VkGetPhysicalDeviceSparseImageFormatProperties2KHR
+      = _VkGetPhysicalDeviceSparseImageFormatProperties2KHR
 
 {-# INLINE _VkGetPhysicalDeviceSparseImageFormatProperties2KHR #-}
 
@@ -576,20 +745,20 @@
 instance VulkanProc
            "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"
          where
-        type VkProcType
-               "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"
-             = HS_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2KHR
+    type VkProcType
+           "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"
+         = HS_vkGetPhysicalDeviceSparseImageFormatProperties2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceSparseImageFormatProperties2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSparseImageFormatProperties2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -603,8 +772,9 @@
 
 pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME <-
         (is_VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME -> True)
-  where VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-          = _VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+  where
+    VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
+      = _VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
            #-}
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_get_surface_capabilities2.hs
@@ -27,17 +27,24 @@
         --
 
         -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
-        VkExtent2D, VkExtent2D', module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        VkPhysicalDeviceSurfaceInfo2KHR, VkPhysicalDeviceSurfaceInfo2KHR',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        VkSurfaceCapabilities2KHR, VkSurfaceCapabilities2KHR',
-        VkSurfaceCapabilitiesKHR, VkSurfaceCapabilitiesKHR',
-        VkSurfaceFormat2KHR, VkSurfaceFormat2KHR', VkSurfaceFormatKHR,
-        VkSurfaceFormatKHR', module Graphics.Vulkan.Types.Enum.Surface,
+        VkColorComponentBitmask(..), VkColorSpaceKHR(..),
+        VkColorComponentFlagBits(), VkColorComponentFlags(),
+        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
+        VkCompositeAlphaFlagsKHR(), VkExtent2D, VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..), VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkPhysicalDeviceSurfaceInfo2KHR, VkStructureType(..),
+        VkSurfaceCapabilities2KHR, VkSurfaceCapabilitiesKHR,
+        VkSurfaceFormat2KHR, VkSurfaceFormatKHR,
+        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
+        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
+        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
         -- > #include "vk_platform.h"
         VkGetPhysicalDeviceSurfaceCapabilities2KHR,
         pattern VkGetPhysicalDeviceSurfaceCapabilities2KHR,
@@ -47,12 +54,84 @@
         pattern VkGetPhysicalDeviceSurfaceFormats2KHR,
         HS_vkGetPhysicalDeviceSurfaceFormats2KHR,
         PFN_vkGetPhysicalDeviceSurfaceFormats2KHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        module Graphics.Vulkan.Types.Struct.Surface,
+        module Graphics.Vulkan.Marshal, VkResult(..), VkBuffer,
+        VkBufferView, VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkExtent3D, VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2KHR,
+        VkPhysicalDeviceGroupProperties,
+        VkPhysicalDeviceGroupPropertiesKHR, VkPhysicalDeviceIDProperties,
+        VkPhysicalDeviceIDPropertiesKHR, VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceImageFormatInfo2KHR, VkPhysicalDeviceLimits,
+        VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
+        VkSurfaceCapabilities2EXT,
         VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION,
         pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION,
         VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME,
@@ -81,8 +160,9 @@
 
 pattern VkGetPhysicalDeviceSurfaceCapabilities2KHR <-
         (is_VkGetPhysicalDeviceSurfaceCapabilities2KHR -> True)
-  where VkGetPhysicalDeviceSurfaceCapabilities2KHR
-          = _VkGetPhysicalDeviceSurfaceCapabilities2KHR
+  where
+    VkGetPhysicalDeviceSurfaceCapabilities2KHR
+      = _VkGetPhysicalDeviceSurfaceCapabilities2KHR
 
 {-# INLINE _VkGetPhysicalDeviceSurfaceCapabilities2KHR #-}
 
@@ -133,26 +213,27 @@
 
 instance VulkanProc "vkGetPhysicalDeviceSurfaceCapabilities2KHR"
          where
-        type VkProcType "vkGetPhysicalDeviceSurfaceCapabilities2KHR" =
-             HS_vkGetPhysicalDeviceSurfaceCapabilities2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilities2KHR
+    type VkProcType "vkGetPhysicalDeviceSurfaceCapabilities2KHR" =
+         HS_vkGetPhysicalDeviceSurfaceCapabilities2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilities2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSurfaceCapabilities2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceSurfaceFormats2KHR :: CString
 
 pattern VkGetPhysicalDeviceSurfaceFormats2KHR <-
         (is_VkGetPhysicalDeviceSurfaceFormats2KHR -> True)
-  where VkGetPhysicalDeviceSurfaceFormats2KHR
-          = _VkGetPhysicalDeviceSurfaceFormats2KHR
+  where
+    VkGetPhysicalDeviceSurfaceFormats2KHR
+      = _VkGetPhysicalDeviceSurfaceFormats2KHR
 
 {-# INLINE _VkGetPhysicalDeviceSurfaceFormats2KHR #-}
 
@@ -204,19 +285,19 @@
                  HS_vkGetPhysicalDeviceSurfaceFormats2KHR
 
 instance VulkanProc "vkGetPhysicalDeviceSurfaceFormats2KHR" where
-        type VkProcType "vkGetPhysicalDeviceSurfaceFormats2KHR" =
-             HS_vkGetPhysicalDeviceSurfaceFormats2KHR
-        vkProcSymbol = _VkGetPhysicalDeviceSurfaceFormats2KHR
+    type VkProcType "vkGetPhysicalDeviceSurfaceFormats2KHR" =
+         HS_vkGetPhysicalDeviceSurfaceFormats2KHR
+    vkProcSymbol = _VkGetPhysicalDeviceSurfaceFormats2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSurfaceFormats2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSurfaceFormats2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSurfaceFormats2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSurfaceFormats2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -229,8 +310,9 @@
 
 pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME <-
         (is_VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME -> True)
-  where VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
-          = _VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
+  where
+    VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
+      = _VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_image_format_list.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_image_format_list.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_image_format_list.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_image_format_list.hs
@@ -17,16 +17,19 @@
         -- type: @device@
         --
         -- Extension number: @148@
-        VkExtent3D, VkExtent3D', module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image, VkImageCreateInfo,
-        VkImageCreateInfo', VkImageFormatListCreateInfoKHR,
-        VkImageFormatListCreateInfoKHR',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION,
+        VkExtent3D, VkBool32(..), VkDeviceSize(..), VkFlags(..),
+        VkSampleMask(..), VkFormat(..), VkFormatFeatureBitmask(..),
+        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkImageCreateInfo,
+        VkImageFormatListCreateInfoKHR, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkSharingMode(..),
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION,
         pattern VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION,
         VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME,
         pattern VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME,
@@ -40,11 +43,8 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.SharingMode
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.Extent         (VkExtent3D, VkExtent3D')
-import Graphics.Vulkan.Types.Struct.Image          (VkImageCreateInfo,
-                                                    VkImageCreateInfo',
-                                                    VkImageFormatListCreateInfoKHR,
-                                                    VkImageFormatListCreateInfoKHR')
+import Graphics.Vulkan.Types.Struct.Extent         (VkExtent3D)
+import Graphics.Vulkan.Types.Struct.Image          (VkImageCreateInfo, VkImageFormatListCreateInfoKHR)
 
 pattern VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -56,8 +56,9 @@
 
 pattern VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME <-
         (is_VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME -> True)
-  where VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME
-          = _VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME
+  where
+    VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME
+      = _VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_incremental_present.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_incremental_present.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_incremental_present.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_incremental_present.hs
@@ -22,14 +22,10 @@
         --
 
         -- ** Required extensions: 'VK_KHR_swapchain'.
-        VkExtent2D, VkExtent2D', VkOffset2D, VkOffset2D',
-        VkPresentInfoKHR, VkPresentInfoKHR', VkPresentRegionKHR,
-        VkPresentRegionKHR', VkPresentRegionsKHR, VkPresentRegionsKHR',
-        VkRectLayerKHR, VkRectLayerKHR',
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION,
+        VkExtent2D, VkOffset2D, VkPresentInfoKHR, VkPresentRegionKHR,
+        VkPresentRegionsKHR, VkRectLayerKHR, VkResult(..),
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION,
         pattern VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION,
         VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME,
         pattern VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME,
@@ -39,16 +35,12 @@
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Types.Enum.Result
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.Extent      (VkExtent2D, VkExtent2D')
-import Graphics.Vulkan.Types.Struct.Offset      (VkOffset2D, VkOffset2D')
+import Graphics.Vulkan.Types.Struct.Extent      (VkExtent2D)
+import Graphics.Vulkan.Types.Struct.Offset      (VkOffset2D)
 import Graphics.Vulkan.Types.Struct.Present     (VkPresentInfoKHR,
-                                                 VkPresentInfoKHR',
                                                  VkPresentRegionKHR,
-                                                 VkPresentRegionKHR',
-                                                 VkPresentRegionsKHR,
-                                                 VkPresentRegionsKHR')
-import Graphics.Vulkan.Types.Struct.Rect        (VkRectLayerKHR,
-                                                 VkRectLayerKHR')
+                                                 VkPresentRegionsKHR)
+import Graphics.Vulkan.Types.Struct.Rect        (VkRectLayerKHR)
 
 pattern VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -61,8 +53,9 @@
 
 pattern VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME <-
         (is_VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME -> True)
-  where VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME
-          = _VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME
+  where
+    VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME
+      = _VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance1.hs
@@ -12,23 +12,78 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_maintenance1
-       (-- * Vulkan extension: @VK_KHR_maintenance1@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Piers Daniell @pdaniell-nv@
-        --
-        -- author: @KHR@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @70@
-        module Graphics.Vulkan.Types.Bitmasks, VkTrimCommandPoolKHR,
+       (VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkTrimCommandPoolKHR,
         pattern VkTrimCommandPoolKHR, HS_vkTrimCommandPoolKHR,
         PFN_vkTrimCommandPoolKHR, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Handles,
+        VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkBuffer, VkBufferView, VkBufferView_T(), VkBuffer_T(),
+        VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_KHR_MAINTENANCE1_SPEC_VERSION,
         pattern VK_KHR_MAINTENANCE1_SPEC_VERSION,
         VK_KHR_MAINTENANCE1_EXTENSION_NAME,
@@ -51,7 +106,8 @@
 pattern VkTrimCommandPoolKHR :: CString
 
 pattern VkTrimCommandPoolKHR <- (is_VkTrimCommandPoolKHR -> True)
-  where VkTrimCommandPoolKHR = _VkTrimCommandPoolKHR
+  where
+    VkTrimCommandPoolKHR = _VkTrimCommandPoolKHR
 
 {-# INLINE _VkTrimCommandPoolKHR #-}
 
@@ -91,16 +147,16 @@
                :: PFN_vkTrimCommandPoolKHR -> HS_vkTrimCommandPoolKHR
 
 instance VulkanProc "vkTrimCommandPoolKHR" where
-        type VkProcType "vkTrimCommandPoolKHR" = HS_vkTrimCommandPoolKHR
-        vkProcSymbol = _VkTrimCommandPoolKHR
+    type VkProcType "vkTrimCommandPoolKHR" = HS_vkTrimCommandPoolKHR
+    vkProcSymbol = _VkTrimCommandPoolKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkTrimCommandPoolKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkTrimCommandPoolKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkTrimCommandPoolKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_MAINTENANCE1_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -112,8 +168,9 @@
 
 pattern VK_KHR_MAINTENANCE1_EXTENSION_NAME <-
         (is_VK_KHR_MAINTENANCE1_EXTENSION_NAME -> True)
-  where VK_KHR_MAINTENANCE1_EXTENSION_NAME
-          = _VK_KHR_MAINTENANCE1_EXTENSION_NAME
+  where
+    VK_KHR_MAINTENANCE1_EXTENSION_NAME
+      = _VK_KHR_MAINTENANCE1_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_MAINTENANCE1_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance2.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance2.hs
@@ -18,13 +18,13 @@
         -- type: @device@
         --
         -- Extension number: @118@
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        module Graphics.Vulkan.Types.Struct.Pipeline,
-        module Graphics.Vulkan.Types.Enum.PointClippingBehavior,
-        module Graphics.Vulkan.Types.Struct.RenderPass,
-        module Graphics.Vulkan.Types.Enum.TessellationDomainOrigin,
+        VkImageViewUsageCreateInfoKHR,
+        VkInputAttachmentAspectReferenceKHR,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPipelineTessellationDomainOriginStateCreateInfoKHR,
+        VkPointClippingBehavior(..), VkPointClippingBehaviorKHR(..),
+        VkRenderPassInputAttachmentAspectCreateInfoKHR,
+        VkTessellationDomainOrigin(..), VkTessellationDomainOriginKHR(..),
         VK_KHR_MAINTENANCE2_SPEC_VERSION,
         pattern VK_KHR_MAINTENANCE2_SPEC_VERSION,
         VK_KHR_MAINTENANCE2_EXTENSION_NAME,
@@ -54,11 +54,11 @@
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Types.Enum.PointClippingBehavior
 import Graphics.Vulkan.Types.Enum.TessellationDomainOrigin
-import Graphics.Vulkan.Types.Struct.Image
-import Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference
-import Graphics.Vulkan.Types.Struct.PhysicalDevice
-import Graphics.Vulkan.Types.Struct.Pipeline
-import Graphics.Vulkan.Types.Struct.RenderPass
+import Graphics.Vulkan.Types.Struct.Image                          (VkImageViewUsageCreateInfoKHR)
+import Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference (VkInputAttachmentAspectReferenceKHR)
+import Graphics.Vulkan.Types.Struct.PhysicalDevice                 (VkPhysicalDevicePointClippingPropertiesKHR)
+import Graphics.Vulkan.Types.Struct.Pipeline                       (VkPipelineTessellationDomainOriginStateCreateInfoKHR)
+import Graphics.Vulkan.Types.Struct.RenderPass                     (VkRenderPassInputAttachmentAspectCreateInfoKHR)
 
 pattern VK_KHR_MAINTENANCE2_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -70,8 +70,9 @@
 
 pattern VK_KHR_MAINTENANCE2_EXTENSION_NAME <-
         (is_VK_KHR_MAINTENANCE2_EXTENSION_NAME -> True)
-  where VK_KHR_MAINTENANCE2_EXTENSION_NAME
-          = _VK_KHR_MAINTENANCE2_EXTENSION_NAME
+  where
+    VK_KHR_MAINTENANCE2_EXTENSION_NAME
+      = _VK_KHR_MAINTENANCE2_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_MAINTENANCE2_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_maintenance3.hs
@@ -28,18 +28,59 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Types.Struct.Descriptor,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        VkDescriptorSetLayoutSupportKHR,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
         VkGetDescriptorSetLayoutSupportKHR,
         pattern VkGetDescriptorSetLayoutSupportKHR,
         HS_vkGetDescriptorSetLayoutSupportKHR,
         PFN_vkGetDescriptorSetLayoutSupportKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Descriptor,
-        module Graphics.Vulkan.Types.Enum.Shader,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Handles,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkDescriptorBindingBitmaskEXT(..),
+        VkDescriptorPoolCreateBitmask(..), VkDescriptorType(..),
+        VkDescriptorUpdateTemplateType(..),
+        VkDescriptorBindingFlagBitsEXT(), VkDescriptorBindingFlagsEXT(),
+        VkDescriptorPoolCreateFlagBits(), VkDescriptorPoolCreateFlags(),
+        VkDescriptorSetLayoutCreateBitmask(..),
+        VkDescriptorSetLayoutCreateFlagBits(),
+        VkDescriptorSetLayoutCreateFlags(),
+        VkDescriptorUpdateTemplateTypeKHR(..), VkShaderInfoTypeAMD(..),
+        VkShaderStageBitmask(..), VkShaderStageFlagBits(),
+        VkShaderStageFlags(), VkStructureType(..), VkBuffer, VkBufferView,
+        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkDescriptorBufferInfo, VkDescriptorImageInfo,
+        VkDescriptorPoolCreateInfo, VkDescriptorPoolSize,
+        VkDescriptorSetAllocateInfo, VkDescriptorSetLayoutBinding,
+        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
+        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutSupport,
+        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
+        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
+        VkDescriptorUpdateTemplateCreateInfo,
+        VkDescriptorUpdateTemplateCreateInfoKHR,
+        VkDescriptorUpdateTemplateEntry,
+        VkDescriptorUpdateTemplateEntryKHR,
         VK_KHR_MAINTENANCE3_SPEC_VERSION,
         pattern VK_KHR_MAINTENANCE3_SPEC_VERSION,
         VK_KHR_MAINTENANCE3_EXTENSION_NAME,
@@ -58,14 +99,15 @@
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Struct.Descriptor
-import Graphics.Vulkan.Types.Struct.PhysicalDevice
+import Graphics.Vulkan.Types.Struct.PhysicalDevice (VkPhysicalDeviceMaintenance3PropertiesKHR)
 
 pattern VkGetDescriptorSetLayoutSupportKHR :: CString
 
 pattern VkGetDescriptorSetLayoutSupportKHR <-
         (is_VkGetDescriptorSetLayoutSupportKHR -> True)
-  where VkGetDescriptorSetLayoutSupportKHR
-          = _VkGetDescriptorSetLayoutSupportKHR
+  where
+    VkGetDescriptorSetLayoutSupportKHR
+      = _VkGetDescriptorSetLayoutSupportKHR
 
 {-# INLINE _VkGetDescriptorSetLayoutSupportKHR #-}
 
@@ -113,18 +155,18 @@
                  HS_vkGetDescriptorSetLayoutSupportKHR
 
 instance VulkanProc "vkGetDescriptorSetLayoutSupportKHR" where
-        type VkProcType "vkGetDescriptorSetLayoutSupportKHR" =
-             HS_vkGetDescriptorSetLayoutSupportKHR
-        vkProcSymbol = _VkGetDescriptorSetLayoutSupportKHR
+    type VkProcType "vkGetDescriptorSetLayoutSupportKHR" =
+         HS_vkGetDescriptorSetLayoutSupportKHR
+    vkProcSymbol = _VkGetDescriptorSetLayoutSupportKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetDescriptorSetLayoutSupportKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetDescriptorSetLayoutSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetDescriptorSetLayoutSupportKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetDescriptorSetLayoutSupportKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_MAINTENANCE3_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -136,8 +178,9 @@
 
 pattern VK_KHR_MAINTENANCE3_EXTENSION_NAME <-
         (is_VK_KHR_MAINTENANCE3_EXTENSION_NAME -> True)
-  where VK_KHR_MAINTENANCE3_EXTENSION_NAME
-          = _VK_KHR_MAINTENANCE3_EXTENSION_NAME
+  where
+    VK_KHR_MAINTENANCE3_EXTENSION_NAME
+      = _VK_KHR_MAINTENANCE3_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_MAINTENANCE3_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_mir_surface.hs
@@ -12,34 +12,56 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_mir_surface
-       (-- * Vulkan extension: @VK_KHR_mir_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
-        --
-        -- author: @KHR@
-        --
-        -- type: @instance@
-        --
-        -- platform: @mir@
-        --
-        -- Extension number: @8@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks, VkMirSurfaceCreateInfoKHR,
-        VkMirSurfaceCreateInfoKHR',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkCreateMirSurfaceKHR, pattern VkCreateMirSurfaceKHR,
-        HS_vkCreateMirSurfaceKHR, PFN_vkCreateMirSurfaceKHR,
-        vkCreateMirSurfaceKHR, vkCreateMirSurfaceKHRUnsafe,
-        vkCreateMirSurfaceKHRSafe,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkMirSurfaceCreateInfoKHR,
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VkCreateMirSurfaceKHR,
+        pattern VkCreateMirSurfaceKHR, HS_vkCreateMirSurfaceKHR,
+        PFN_vkCreateMirSurfaceKHR, vkCreateMirSurfaceKHR,
+        vkCreateMirSurfaceKHRUnsafe, vkCreateMirSurfaceKHRSafe,
         VkGetPhysicalDeviceMirPresentationSupportKHR,
         pattern VkGetPhysicalDeviceMirPresentationSupportKHR,
         HS_vkGetPhysicalDeviceMirPresentationSupportKHR,
@@ -47,16 +69,53 @@
         vkGetPhysicalDeviceMirPresentationSupportKHR,
         vkGetPhysicalDeviceMirPresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceMirPresentationSupportKHRSafe,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Include,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformMirKhr,
-        VK_KHR_MIR_SURFACE_SPEC_VERSION,
+        module Graphics.Vulkan.Marshal, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR, MirConnection,
+        MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID, Window,
+        WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT, XcbWindowT,
+        VkAllocationCallbacks, VK_KHR_MIR_SURFACE_SPEC_VERSION,
         pattern VK_KHR_MIR_SURFACE_SPEC_VERSION,
         VK_KHR_MIR_SURFACE_EXTENSION_NAME,
         pattern VK_KHR_MIR_SURFACE_EXTENSION_NAME,
@@ -81,7 +140,8 @@
 pattern VkCreateMirSurfaceKHR :: CString
 
 pattern VkCreateMirSurfaceKHR <- (is_VkCreateMirSurfaceKHR -> True)
-  where VkCreateMirSurfaceKHR = _VkCreateMirSurfaceKHR
+  where
+    VkCreateMirSurfaceKHR = _VkCreateMirSurfaceKHR
 
 {-# INLINE _VkCreateMirSurfaceKHR #-}
 
@@ -290,23 +350,24 @@
                :: PFN_vkCreateMirSurfaceKHR -> HS_vkCreateMirSurfaceKHR
 
 instance VulkanProc "vkCreateMirSurfaceKHR" where
-        type VkProcType "vkCreateMirSurfaceKHR" = HS_vkCreateMirSurfaceKHR
-        vkProcSymbol = _VkCreateMirSurfaceKHR
+    type VkProcType "vkCreateMirSurfaceKHR" = HS_vkCreateMirSurfaceKHR
+    vkProcSymbol = _VkCreateMirSurfaceKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateMirSurfaceKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateMirSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateMirSurfaceKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateMirSurfaceKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceMirPresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceMirPresentationSupportKHR <-
         (is_VkGetPhysicalDeviceMirPresentationSupportKHR -> True)
-  where VkGetPhysicalDeviceMirPresentationSupportKHR
-          = _VkGetPhysicalDeviceMirPresentationSupportKHR
+  where
+    VkGetPhysicalDeviceMirPresentationSupportKHR
+      = _VkGetPhysicalDeviceMirPresentationSupportKHR
 
 {-# INLINE _VkGetPhysicalDeviceMirPresentationSupportKHR #-}
 
@@ -494,19 +555,19 @@
 
 instance VulkanProc "vkGetPhysicalDeviceMirPresentationSupportKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceMirPresentationSupportKHR" =
-             HS_vkGetPhysicalDeviceMirPresentationSupportKHR
-        vkProcSymbol = _VkGetPhysicalDeviceMirPresentationSupportKHR
+    type VkProcType "vkGetPhysicalDeviceMirPresentationSupportKHR" =
+         HS_vkGetPhysicalDeviceMirPresentationSupportKHR
+    vkProcSymbol = _VkGetPhysicalDeviceMirPresentationSupportKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceMirPresentationSupportKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceMirPresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceMirPresentationSupportKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceMirPresentationSupportKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_MIR_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -518,8 +579,9 @@
 
 pattern VK_KHR_MIR_SURFACE_EXTENSION_NAME <-
         (is_VK_KHR_MIR_SURFACE_EXTENSION_NAME -> True)
-  where VK_KHR_MIR_SURFACE_EXTENSION_NAME
-          = _VK_KHR_MIR_SURFACE_EXTENSION_NAME
+  where
+    VK_KHR_MIR_SURFACE_EXTENSION_NAME
+      = _VK_KHR_MIR_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_MIR_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_multiview.hs
@@ -23,9 +23,9 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        module Graphics.Vulkan.Types.Struct.RenderPass,
-        VK_KHR_MULTIVIEW_SPEC_VERSION,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkRenderPassMultiviewCreateInfoKHR, VK_KHR_MULTIVIEW_SPEC_VERSION,
         pattern VK_KHR_MULTIVIEW_SPEC_VERSION,
         VK_KHR_MULTIVIEW_EXTENSION_NAME,
         pattern VK_KHR_MULTIVIEW_EXTENSION_NAME,
@@ -40,8 +40,9 @@
                                                     pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
                                                     pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO)
 import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Types.Struct.PhysicalDevice
-import Graphics.Vulkan.Types.Struct.RenderPass
+import Graphics.Vulkan.Types.Struct.PhysicalDevice (VkPhysicalDeviceMultiviewFeaturesKHR,
+                                                    VkPhysicalDeviceMultiviewPropertiesKHR)
+import Graphics.Vulkan.Types.Struct.RenderPass     (VkRenderPassMultiviewCreateInfoKHR)
 
 pattern VK_KHR_MULTIVIEW_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -53,8 +54,8 @@
 
 pattern VK_KHR_MULTIVIEW_EXTENSION_NAME <-
         (is_VK_KHR_MULTIVIEW_EXTENSION_NAME -> True)
-  where VK_KHR_MULTIVIEW_EXTENSION_NAME
-          = _VK_KHR_MULTIVIEW_EXTENSION_NAME
+  where
+    VK_KHR_MULTIVIEW_EXTENSION_NAME = _VK_KHR_MULTIVIEW_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_MULTIVIEW_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_push_descriptor.hs
@@ -27,27 +27,82 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes, VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceProperties,
-        VkPhysicalDeviceProperties', VkPhysicalDeviceProperties2,
-        VkPhysicalDeviceProperties2',
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkPhysicalDeviceLimits,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
         VkPhysicalDevicePushDescriptorPropertiesKHR,
-        VkPhysicalDevicePushDescriptorPropertiesKHR',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType(..),
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VkCmdPushDescriptorSetKHR, pattern VkCmdPushDescriptorSetKHR,
         HS_vkCmdPushDescriptorSetKHR, PFN_vkCmdPushDescriptorSetKHR,
-        module Graphics.Vulkan.Types.Enum.Descriptor,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Descriptor,
-        module Graphics.Vulkan.Types.Struct.WriteDescriptorSet,
+        VkDescriptorBindingBitmaskEXT(..),
+        VkDescriptorPoolCreateBitmask(..), VkDescriptorType(..),
+        VkDescriptorUpdateTemplateType(..),
+        VkDescriptorBindingFlagBitsEXT(), VkDescriptorBindingFlagsEXT(),
+        VkDescriptorPoolCreateFlagBits(), VkDescriptorPoolCreateFlags(),
+        VkDescriptorSetLayoutCreateBitmask(..),
+        VkDescriptorSetLayoutCreateFlagBits(),
+        VkDescriptorSetLayoutCreateFlags(),
+        VkDescriptorUpdateTemplateTypeKHR(..), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkPipelineBindPoint(..), VkPipelineCacheHeaderVersion(..),
+        VkPipelineCreateBitmask(..), VkPipelineStageBitmask(..),
+        VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..), VkBuffer, VkBufferView,
+        VkBufferView_T(), VkBuffer_T(), VkCommandBuffer,
+        VkCommandBuffer_T(), VkCommandPool, VkCommandPool_T(),
+        VkDebugReportCallbackEXT, VkDebugReportCallbackEXT_T(),
+        VkDebugUtilsMessengerEXT, VkDebugUtilsMessengerEXT_T(),
+        VkDescriptorPool, VkDescriptorPool_T(), VkDescriptorSet,
+        VkDescriptorSetLayout, VkDescriptorSetLayout_T(),
+        VkDescriptorSet_T(), VkDescriptorUpdateTemplate,
+        VkDescriptorUpdateTemplateKHR, VkDescriptorUpdateTemplateKHR_T(),
+        VkDescriptorUpdateTemplate_T(), VkDevice, VkDeviceMemory,
+        VkDeviceMemory_T(), VkDevice_T(), VkDisplayKHR, VkDisplayKHR_T(),
+        VkDisplayModeKHR, VkDisplayModeKHR_T(), VkEvent, VkEvent_T(),
+        VkFence, VkFence_T(), VkFramebuffer, VkFramebuffer_T(), VkImage,
+        VkImageView, VkImageView_T(), VkImage_T(),
+        VkIndirectCommandsLayoutNVX, VkIndirectCommandsLayoutNVX_T(),
+        VkInstance, VkInstance_T(), VkObjectTableNVX, VkObjectTableNVX_T(),
+        VkPhysicalDevice, VkPhysicalDevice_T(), VkPipeline,
+        VkPipelineCache, VkPipelineCache_T(), VkPipelineLayout,
+        VkPipelineLayout_T(), VkPipeline_T(), VkQueryPool, VkQueryPool_T(),
+        VkQueue, VkQueue_T(), VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkDescriptorBufferInfo, VkDescriptorImageInfo,
+        VkDescriptorPoolCreateInfo, VkDescriptorPoolSize,
+        VkDescriptorSetAllocateInfo, VkDescriptorSetLayoutBinding,
+        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
+        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutSupport,
+        VkDescriptorSetLayoutSupportKHR,
+        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
+        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
+        VkDescriptorUpdateTemplateCreateInfo,
+        VkDescriptorUpdateTemplateCreateInfoKHR,
+        VkDescriptorUpdateTemplateEntry,
+        VkDescriptorUpdateTemplateEntryKHR, VkWriteDescriptorSet,
         VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION,
         pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION,
         VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME,
@@ -73,23 +128,18 @@
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Struct.Descriptor
-import Graphics.Vulkan.Types.Struct.PhysicalDevice     (VkPhysicalDeviceLimits,
-                                                        VkPhysicalDeviceLimits',
-                                                        VkPhysicalDeviceProperties,
-                                                        VkPhysicalDeviceProperties',
+import Graphics.Vulkan.Types.Struct.PhysicalDevice     (VkPhysicalDeviceLimits, VkPhysicalDeviceProperties,
                                                         VkPhysicalDeviceProperties2,
-                                                        VkPhysicalDeviceProperties2',
                                                         VkPhysicalDevicePushDescriptorPropertiesKHR,
-                                                        VkPhysicalDevicePushDescriptorPropertiesKHR',
-                                                        VkPhysicalDeviceSparseProperties,
-                                                        VkPhysicalDeviceSparseProperties')
+                                                        VkPhysicalDeviceSparseProperties)
 import Graphics.Vulkan.Types.Struct.WriteDescriptorSet
 
 pattern VkCmdPushDescriptorSetKHR :: CString
 
 pattern VkCmdPushDescriptorSetKHR <-
         (is_VkCmdPushDescriptorSetKHR -> True)
-  where VkCmdPushDescriptorSetKHR = _VkCmdPushDescriptorSetKHR
+  where
+    VkCmdPushDescriptorSetKHR = _VkCmdPushDescriptorSetKHR
 
 {-# INLINE _VkCmdPushDescriptorSetKHR #-}
 
@@ -142,17 +192,17 @@
                PFN_vkCmdPushDescriptorSetKHR -> HS_vkCmdPushDescriptorSetKHR
 
 instance VulkanProc "vkCmdPushDescriptorSetKHR" where
-        type VkProcType "vkCmdPushDescriptorSetKHR" =
-             HS_vkCmdPushDescriptorSetKHR
-        vkProcSymbol = _VkCmdPushDescriptorSetKHR
+    type VkProcType "vkCmdPushDescriptorSetKHR" =
+         HS_vkCmdPushDescriptorSetKHR
+    vkProcSymbol = _VkCmdPushDescriptorSetKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdPushDescriptorSetKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdPushDescriptorSetKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdPushDescriptorSetKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdPushDescriptorSetKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -164,8 +214,9 @@
 
 pattern VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME <-
         (is_VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME -> True)
-  where VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
-          = _VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
+  where
+    VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
+      = _VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME #-}
 
@@ -201,8 +252,9 @@
 
 pattern VkCmdPushDescriptorSetWithTemplateKHR <-
         (is_VkCmdPushDescriptorSetWithTemplateKHR -> True)
-  where VkCmdPushDescriptorSetWithTemplateKHR
-          = _VkCmdPushDescriptorSetWithTemplateKHR
+  where
+    VkCmdPushDescriptorSetWithTemplateKHR
+      = _VkCmdPushDescriptorSetWithTemplateKHR
 
 {-# INLINE _VkCmdPushDescriptorSetWithTemplateKHR #-}
 
@@ -256,19 +308,19 @@
                  HS_vkCmdPushDescriptorSetWithTemplateKHR
 
 instance VulkanProc "vkCmdPushDescriptorSetWithTemplateKHR" where
-        type VkProcType "vkCmdPushDescriptorSetWithTemplateKHR" =
-             HS_vkCmdPushDescriptorSetWithTemplateKHR
-        vkProcSymbol = _VkCmdPushDescriptorSetWithTemplateKHR
+    type VkProcType "vkCmdPushDescriptorSetWithTemplateKHR" =
+         HS_vkCmdPushDescriptorSetWithTemplateKHR
+    vkProcSymbol = _VkCmdPushDescriptorSetWithTemplateKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkCmdPushDescriptorSetWithTemplateKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkCmdPushDescriptorSetWithTemplateKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkCmdPushDescriptorSetWithTemplateKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkCmdPushDescriptorSetWithTemplateKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 -- | Create descriptor update template for pushed descriptor updates
 pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR ::
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_relaxed_block_layout.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_relaxed_block_layout.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_relaxed_block_layout.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_relaxed_block_layout.hs
@@ -36,8 +36,9 @@
 
 pattern VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME <-
         (is_VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME -> True)
-  where VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME
-          = _VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME
+  where
+    VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME
+      = _VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_mirror_clamp_to_edge.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_mirror_clamp_to_edge.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_mirror_clamp_to_edge.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_mirror_clamp_to_edge.hs
@@ -39,8 +39,9 @@
 
 pattern VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME <-
         (is_VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME -> True)
-  where VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME
-          = _VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME
+  where
+    VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME
+      = _VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_sampler_ycbcr_conversion.hs
@@ -28,13 +28,16 @@
         --
 
         -- ** Required extensions: 'VK_KHR_maintenance1', 'VK_KHR_bind_memory2', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2'.
-        module Graphics.Vulkan.Types.Struct.Bind,
-        module Graphics.Vulkan.Types.Enum.ChromaLocation,
-        module Graphics.Vulkan.Types.Struct.Image,
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
-        module Graphics.Vulkan.Types.Struct.Sampler,
-        module Graphics.Vulkan.Types.Enum.Sampler,
-        VkCreateSamplerYcbcrConversionKHR,
+        VkBindImagePlaneMemoryInfoKHR, VkChromaLocation(..),
+        VkChromaLocationKHR(..), VkImagePlaneMemoryRequirementsInfoKHR,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkSamplerYcbcrConversionCreateInfoKHR,
+        VkSamplerYcbcrConversionImageFormatPropertiesKHR,
+        VkSamplerYcbcrConversionInfoKHR, VkSamplerAddressMode(..),
+        VkSamplerMipmapMode(..), VkSamplerReductionModeEXT(..),
+        VkSamplerYcbcrModelConversion(..), VkSamplerYcbcrRange(..),
+        VkSamplerCreateFlagBits(..), VkSamplerYcbcrModelConversionKHR(..),
+        VkSamplerYcbcrRangeKHR(..), VkCreateSamplerYcbcrConversionKHR,
         pattern VkCreateSamplerYcbcrConversionKHR,
         HS_vkCreateSamplerYcbcrConversionKHR,
         PFN_vkCreateSamplerYcbcrConversionKHR,
@@ -42,19 +45,58 @@
         pattern VkDestroySamplerYcbcrConversionKHR,
         HS_vkDestroySamplerYcbcrConversionKHR,
         PFN_vkDestroySamplerYcbcrConversionKHR,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.ComponentSwizzle,
-        module Graphics.Vulkan.Types.Enum.Filter,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.ComponentMapping,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkComponentSwizzle(..),
+        VkFilter(..), VkFormat(..), VkFormatFeatureBitmask(..),
+        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
+        VkInternalAllocationType(..), VkResult(..), VkStructureType(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkComponentMapping, VkSamplerCreateInfo,
+        VkSamplerReductionModeCreateInfoEXT,
+        VkSamplerYcbcrConversionCreateInfo,
+        VkSamplerYcbcrConversionImageFormatProperties,
+        VkSamplerYcbcrConversionInfo,
         VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION,
         pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION,
         VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
@@ -193,18 +235,19 @@
 import Graphics.Vulkan.Types.Funcpointers
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Struct.AllocationCallbacks
-import Graphics.Vulkan.Types.Struct.Bind
+import Graphics.Vulkan.Types.Struct.Bind                 (VkBindImagePlaneMemoryInfoKHR)
 import Graphics.Vulkan.Types.Struct.ComponentMapping
-import Graphics.Vulkan.Types.Struct.Image
-import Graphics.Vulkan.Types.Struct.PhysicalDevice
+import Graphics.Vulkan.Types.Struct.Image                (VkImagePlaneMemoryRequirementsInfoKHR)
+import Graphics.Vulkan.Types.Struct.PhysicalDevice       (VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR)
 import Graphics.Vulkan.Types.Struct.Sampler
 
 pattern VkCreateSamplerYcbcrConversionKHR :: CString
 
 pattern VkCreateSamplerYcbcrConversionKHR <-
         (is_VkCreateSamplerYcbcrConversionKHR -> True)
-  where VkCreateSamplerYcbcrConversionKHR
-          = _VkCreateSamplerYcbcrConversionKHR
+  where
+    VkCreateSamplerYcbcrConversionKHR
+      = _VkCreateSamplerYcbcrConversionKHR
 
 {-# INLINE _VkCreateSamplerYcbcrConversionKHR #-}
 
@@ -259,25 +302,26 @@
                  HS_vkCreateSamplerYcbcrConversionKHR
 
 instance VulkanProc "vkCreateSamplerYcbcrConversionKHR" where
-        type VkProcType "vkCreateSamplerYcbcrConversionKHR" =
-             HS_vkCreateSamplerYcbcrConversionKHR
-        vkProcSymbol = _VkCreateSamplerYcbcrConversionKHR
+    type VkProcType "vkCreateSamplerYcbcrConversionKHR" =
+         HS_vkCreateSamplerYcbcrConversionKHR
+    vkProcSymbol = _VkCreateSamplerYcbcrConversionKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkCreateSamplerYcbcrConversionKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkCreateSamplerYcbcrConversionKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateSamplerYcbcrConversionKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDestroySamplerYcbcrConversionKHR :: CString
 
 pattern VkDestroySamplerYcbcrConversionKHR <-
         (is_VkDestroySamplerYcbcrConversionKHR -> True)
-  where VkDestroySamplerYcbcrConversionKHR
-          = _VkDestroySamplerYcbcrConversionKHR
+  where
+    VkDestroySamplerYcbcrConversionKHR
+      = _VkDestroySamplerYcbcrConversionKHR
 
 {-# INLINE _VkDestroySamplerYcbcrConversionKHR #-}
 
@@ -324,18 +368,18 @@
                  HS_vkDestroySamplerYcbcrConversionKHR
 
 instance VulkanProc "vkDestroySamplerYcbcrConversionKHR" where
-        type VkProcType "vkDestroySamplerYcbcrConversionKHR" =
-             HS_vkDestroySamplerYcbcrConversionKHR
-        vkProcSymbol = _VkDestroySamplerYcbcrConversionKHR
+    type VkProcType "vkDestroySamplerYcbcrConversionKHR" =
+         HS_vkDestroySamplerYcbcrConversionKHR
+    vkProcSymbol = _VkDestroySamplerYcbcrConversionKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkDestroySamplerYcbcrConversionKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkDestroySamplerYcbcrConversionKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroySamplerYcbcrConversionKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -348,8 +392,9 @@
 
 pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME <-
         (is_VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME -> True)
-  where VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
-          = _VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
+  where
+    VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
+      = _VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_shader_draw_parameters.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_shader_draw_parameters.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_shader_draw_parameters.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_shader_draw_parameters.hs
@@ -36,8 +36,9 @@
 
 pattern VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME <-
         (is_VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME -> True)
-  where VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
-          = _VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
+  where
+    VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
+      = _VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_shared_presentable_image.hs
@@ -27,20 +27,48 @@
         --
 
         -- ** Required extensions: 'VK_KHR_swapchain', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2'.
-        module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
-        VkExtent2D, VkExtent2D', module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Image,
-        VkSharedPresentSurfaceCapabilitiesKHR,
-        VkSharedPresentSurfaceCapabilitiesKHR',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        VkSurfaceCapabilities2KHR, VkSurfaceCapabilities2KHR',
-        VkSurfaceCapabilitiesKHR, VkSurfaceCapabilitiesKHR',
-        module Graphics.Vulkan.Types.Enum.Surface, -- > #include "vk_platform.h"
-                                                   VkGetSwapchainStatusKHR,
-        pattern VkGetSwapchainStatusKHR, HS_vkGetSwapchainStatusKHR,
-        PFN_vkGetSwapchainStatusKHR,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
+        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
+        VkCompositeAlphaFlagsKHR(), VkExtent2D, VkBool32(..),
+        VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkSharedPresentSurfaceCapabilitiesKHR, VkStructureType(..),
+        VkSurfaceCapabilities2KHR, VkSurfaceCapabilitiesKHR,
+        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
+        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
+        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
+        -- > #include "vk_platform.h"
+        VkGetSwapchainStatusKHR, pattern VkGetSwapchainStatusKHR,
+        HS_vkGetSwapchainStatusKHR, PFN_vkGetSwapchainStatusKHR,
+        VkResult(..), VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION,
         pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION,
         VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME,
@@ -61,20 +89,17 @@
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Enum.Surface
 import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.Extent                              (VkExtent2D,
-                                                                         VkExtent2D')
-import Graphics.Vulkan.Types.Struct.SharedPresentSurfaceCapabilitiesKHR (VkSharedPresentSurfaceCapabilitiesKHR,
-                                                                         VkSharedPresentSurfaceCapabilitiesKHR')
+import Graphics.Vulkan.Types.Struct.Extent                              (VkExtent2D)
+import Graphics.Vulkan.Types.Struct.SharedPresentSurfaceCapabilitiesKHR (VkSharedPresentSurfaceCapabilitiesKHR)
 import Graphics.Vulkan.Types.Struct.Surface                             (VkSurfaceCapabilities2KHR,
-                                                                         VkSurfaceCapabilities2KHR',
-                                                                         VkSurfaceCapabilitiesKHR,
-                                                                         VkSurfaceCapabilitiesKHR')
+                                                                         VkSurfaceCapabilitiesKHR)
 
 pattern VkGetSwapchainStatusKHR :: CString
 
 pattern VkGetSwapchainStatusKHR <-
         (is_VkGetSwapchainStatusKHR -> True)
-  where VkGetSwapchainStatusKHR = _VkGetSwapchainStatusKHR
+  where
+    VkGetSwapchainStatusKHR = _VkGetSwapchainStatusKHR
 
 {-# INLINE _VkGetSwapchainStatusKHR #-}
 
@@ -116,17 +141,17 @@
                PFN_vkGetSwapchainStatusKHR -> HS_vkGetSwapchainStatusKHR
 
 instance VulkanProc "vkGetSwapchainStatusKHR" where
-        type VkProcType "vkGetSwapchainStatusKHR" =
-             HS_vkGetSwapchainStatusKHR
-        vkProcSymbol = _VkGetSwapchainStatusKHR
+    type VkProcType "vkGetSwapchainStatusKHR" =
+         HS_vkGetSwapchainStatusKHR
+    vkProcSymbol = _VkGetSwapchainStatusKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainStatusKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainStatusKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetSwapchainStatusKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetSwapchainStatusKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -139,8 +164,9 @@
 
 pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME <-
         (is_VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME -> True)
-  where VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME
-          = _VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME
+  where
+    VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME
+      = _VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_storage_buffer_storage_class.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_storage_buffer_storage_class.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_storage_buffer_storage_class.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_storage_buffer_storage_class.hs
@@ -37,8 +37,9 @@
 
 pattern VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME <-
         (is_VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME -> True)
-  where VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
-          = _VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
+  where
+    VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
+      = _VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_surface.hs
@@ -56,22 +56,68 @@
         vkGetPhysicalDeviceSurfacePresentModesKHR,
         vkGetPhysicalDeviceSurfacePresentModesKHRUnsafe,
         vkGetPhysicalDeviceSurfacePresentModesKHRSafe,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.PresentModeKHR,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.Surface,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Surface,
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkColorComponentBitmask(..),
+        VkColorSpaceKHR(..), VkColorComponentFlagBits(),
+        VkColorComponentFlags(), VkCompositeAlphaBitmaskKHR(..),
+        VkCompositeAlphaFlagBitsKHR(), VkCompositeAlphaFlagsKHR(),
+        VkFormat(..), VkFormatFeatureBitmask(..),
+        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkInternalAllocationType(..), VkPresentModeKHR(..), VkResult(..),
+        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
+        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
+        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkExtent2D, VkExtent3D,
+        VkSurfaceCapabilities2EXT, VkSurfaceCapabilities2KHR,
+        VkSurfaceCapabilitiesKHR, VkSurfaceFormat2KHR, VkSurfaceFormatKHR,
         VK_KHR_SURFACE_SPEC_VERSION, pattern VK_KHR_SURFACE_SPEC_VERSION,
         VK_KHR_SURFACE_EXTENSION_NAME,
         pattern VK_KHR_SURFACE_EXTENSION_NAME,
@@ -104,7 +150,8 @@
 pattern VkDestroySurfaceKHR :: CString
 
 pattern VkDestroySurfaceKHR <- (is_VkDestroySurfaceKHR -> True)
-  where VkDestroySurfaceKHR = _VkDestroySurfaceKHR
+  where
+    VkDestroySurfaceKHR = _VkDestroySurfaceKHR
 
 {-# INLINE _VkDestroySurfaceKHR #-}
 
@@ -274,23 +321,24 @@
                :: PFN_vkDestroySurfaceKHR -> HS_vkDestroySurfaceKHR
 
 instance VulkanProc "vkDestroySurfaceKHR" where
-        type VkProcType "vkDestroySurfaceKHR" = HS_vkDestroySurfaceKHR
-        vkProcSymbol = _VkDestroySurfaceKHR
+    type VkProcType "vkDestroySurfaceKHR" = HS_vkDestroySurfaceKHR
+    vkProcSymbol = _VkDestroySurfaceKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroySurfaceKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroySurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySurfaceKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroySurfaceKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceSurfaceSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceSurfaceSupportKHR <-
         (is_VkGetPhysicalDeviceSurfaceSupportKHR -> True)
-  where VkGetPhysicalDeviceSurfaceSupportKHR
-          = _VkGetPhysicalDeviceSurfaceSupportKHR
+  where
+    VkGetPhysicalDeviceSurfaceSupportKHR
+      = _VkGetPhysicalDeviceSurfaceSupportKHR
 
 {-# INLINE _VkGetPhysicalDeviceSurfaceSupportKHR #-}
 
@@ -503,26 +551,27 @@
                  HS_vkGetPhysicalDeviceSurfaceSupportKHR
 
 instance VulkanProc "vkGetPhysicalDeviceSurfaceSupportKHR" where
-        type VkProcType "vkGetPhysicalDeviceSurfaceSupportKHR" =
-             HS_vkGetPhysicalDeviceSurfaceSupportKHR
-        vkProcSymbol = _VkGetPhysicalDeviceSurfaceSupportKHR
+    type VkProcType "vkGetPhysicalDeviceSurfaceSupportKHR" =
+         HS_vkGetPhysicalDeviceSurfaceSupportKHR
+    vkProcSymbol = _VkGetPhysicalDeviceSurfaceSupportKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSurfaceSupportKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSurfaceSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSurfaceSupportKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSurfaceSupportKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceSurfaceCapabilitiesKHR :: CString
 
 pattern VkGetPhysicalDeviceSurfaceCapabilitiesKHR <-
         (is_VkGetPhysicalDeviceSurfaceCapabilitiesKHR -> True)
-  where VkGetPhysicalDeviceSurfaceCapabilitiesKHR
-          = _VkGetPhysicalDeviceSurfaceCapabilitiesKHR
+  where
+    VkGetPhysicalDeviceSurfaceCapabilitiesKHR
+      = _VkGetPhysicalDeviceSurfaceCapabilitiesKHR
 
 {-# INLINE _VkGetPhysicalDeviceSurfaceCapabilitiesKHR #-}
 
@@ -731,26 +780,27 @@
 
 instance VulkanProc "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" =
-             HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
-        vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilitiesKHR
+    type VkProcType "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" =
+         HS_vkGetPhysicalDeviceSurfaceCapabilitiesKHR
+    vkProcSymbol = _VkGetPhysicalDeviceSurfaceCapabilitiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSurfaceCapabilitiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceSurfaceFormatsKHR :: CString
 
 pattern VkGetPhysicalDeviceSurfaceFormatsKHR <-
         (is_VkGetPhysicalDeviceSurfaceFormatsKHR -> True)
-  where VkGetPhysicalDeviceSurfaceFormatsKHR
-          = _VkGetPhysicalDeviceSurfaceFormatsKHR
+  where
+    VkGetPhysicalDeviceSurfaceFormatsKHR
+      = _VkGetPhysicalDeviceSurfaceFormatsKHR
 
 {-# INLINE _VkGetPhysicalDeviceSurfaceFormatsKHR #-}
 
@@ -966,26 +1016,27 @@
                  HS_vkGetPhysicalDeviceSurfaceFormatsKHR
 
 instance VulkanProc "vkGetPhysicalDeviceSurfaceFormatsKHR" where
-        type VkProcType "vkGetPhysicalDeviceSurfaceFormatsKHR" =
-             HS_vkGetPhysicalDeviceSurfaceFormatsKHR
-        vkProcSymbol = _VkGetPhysicalDeviceSurfaceFormatsKHR
+    type VkProcType "vkGetPhysicalDeviceSurfaceFormatsKHR" =
+         HS_vkGetPhysicalDeviceSurfaceFormatsKHR
+    vkProcSymbol = _VkGetPhysicalDeviceSurfaceFormatsKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSurfaceFormatsKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSurfaceFormatsKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSurfaceFormatsKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSurfaceFormatsKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceSurfacePresentModesKHR :: CString
 
 pattern VkGetPhysicalDeviceSurfacePresentModesKHR <-
         (is_VkGetPhysicalDeviceSurfacePresentModesKHR -> True)
-  where VkGetPhysicalDeviceSurfacePresentModesKHR
-          = _VkGetPhysicalDeviceSurfacePresentModesKHR
+  where
+    VkGetPhysicalDeviceSurfacePresentModesKHR
+      = _VkGetPhysicalDeviceSurfacePresentModesKHR
 
 {-# INLINE _VkGetPhysicalDeviceSurfacePresentModesKHR #-}
 
@@ -1205,19 +1256,19 @@
 
 instance VulkanProc "vkGetPhysicalDeviceSurfacePresentModesKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceSurfacePresentModesKHR" =
-             HS_vkGetPhysicalDeviceSurfacePresentModesKHR
-        vkProcSymbol = _VkGetPhysicalDeviceSurfacePresentModesKHR
+    type VkProcType "vkGetPhysicalDeviceSurfacePresentModesKHR" =
+         HS_vkGetPhysicalDeviceSurfacePresentModesKHR
+    vkProcSymbol = _VkGetPhysicalDeviceSurfacePresentModesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceSurfacePresentModesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceSurfacePresentModesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceSurfacePresentModesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceSurfacePresentModesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -1229,8 +1280,8 @@
 
 pattern VK_KHR_SURFACE_EXTENSION_NAME <-
         (is_VK_KHR_SURFACE_EXTENSION_NAME -> True)
-  where VK_KHR_SURFACE_EXTENSION_NAME
-          = _VK_KHR_SURFACE_EXTENSION_NAME
+  where
+    VK_KHR_SURFACE_EXTENSION_NAME = _VK_KHR_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_swapchain.hs
@@ -46,26 +46,70 @@
         VkQueuePresentKHR, pattern VkQueuePresentKHR, HS_vkQueuePresentKHR,
         PFN_vkQueuePresentKHR, vkQueuePresentKHR, vkQueuePresentKHRUnsafe,
         vkQueuePresentKHRSafe, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Color,
-        module Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.PresentModeKHR,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Enum.Surface,
-        module Graphics.Vulkan.Types.Enum.SwapchainCreateFlagsKHR,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.Present,
-        module Graphics.Vulkan.Types.Struct.SwapchainC,
-        VK_KHR_SWAPCHAIN_SPEC_VERSION,
+        VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkColorComponentBitmask(..), VkColorSpaceKHR(..),
+        VkColorComponentFlagBits(), VkColorComponentFlags(),
+        VkCompositeAlphaBitmaskKHR(..), VkCompositeAlphaFlagBitsKHR(),
+        VkCompositeAlphaFlagsKHR(), VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(),
+        VkInternalAllocationType(..), VkPresentModeKHR(..), VkResult(..),
+        VkSharingMode(..), VkStructureType(..),
+        VkSurfaceCounterBitmaskEXT(..), VkSurfaceTransformBitmaskKHR(..),
+        VkSurfaceCounterFlagBitsEXT(), VkSurfaceCounterFlagsEXT(),
+        VkSurfaceTransformFlagBitsKHR(), VkSurfaceTransformFlagsKHR(),
+        VkSwapchainCreateBitmaskKHR(..), VkSwapchainCreateFlagBitsKHR(),
+        VkSwapchainCreateFlagsKHR(), VkSystemAllocationScope(..),
+        newVkAllocationFunction, newVkDebugReportCallbackEXT,
+        newVkDebugUtilsMessengerCallbackEXT, newVkFreeFunction,
+        newVkInternalAllocationNotification, newVkInternalFreeNotification,
+        newVkReallocationFunction, newVkVoidFunction,
+        unwrapVkAllocationFunction, unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkExtent2D, VkExtent3D, VkPresentInfoKHR,
+        VkPresentRegionKHR, VkPresentRegionsKHR, VkPresentTimeGOOGLE,
+        VkPresentTimesInfoGOOGLE, VkSwapchainCounterCreateInfoEXT,
+        VkSwapchainCreateInfoKHR, VK_KHR_SWAPCHAIN_SPEC_VERSION,
         pattern VK_KHR_SWAPCHAIN_SPEC_VERSION,
         VK_KHR_SWAPCHAIN_EXTENSION_NAME,
         pattern VK_KHR_SWAPCHAIN_EXTENSION_NAME,
@@ -75,20 +119,15 @@
         pattern VK_ERROR_OUT_OF_DATE_KHR,
         pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR, -- ** Required extensions: 'VK_KHR_surface'.
                                               VkAcquireNextImageInfoKHR,
-        VkAcquireNextImageInfoKHR', VkBindImageMemoryInfo,
-        VkBindImageMemoryInfo', VkBindImageMemorySwapchainInfoKHR,
-        VkBindImageMemorySwapchainInfoKHR',
-        VkDeviceGroupPresentCapabilitiesKHR,
-        VkDeviceGroupPresentCapabilitiesKHR', VkDeviceGroupPresentInfoKHR,
-        VkDeviceGroupPresentInfoKHR',
-        module Graphics.Vulkan.Types.Enum.Device,
-        VkDeviceGroupSwapchainCreateInfoKHR,
-        VkDeviceGroupSwapchainCreateInfoKHR', VkExtent2D, VkExtent2D',
-        VkExtent3D, VkExtent3D', VkImageCreateInfo, VkImageCreateInfo',
-        VkImageSwapchainCreateInfoKHR, VkImageSwapchainCreateInfoKHR',
-        VkPresentInfoKHR, VkPresentInfoKHR',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        VkSwapchainCreateInfoKHR, VkSwapchainCreateInfoKHR',
+        VkBindImageMemoryInfo, VkBindImageMemorySwapchainInfoKHR,
+        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
+        VkDeviceEventTypeEXT(..), VkDeviceGroupPresentModeBitmaskKHR(..),
+        VkDeviceCreateFlagBits(..), VkDeviceGroupPresentModeFlagBitsKHR(),
+        VkDeviceGroupPresentModeFlagsKHR(), VkDeviceQueueCreateBitmask(..),
+        VkDeviceQueueCreateFlagBits(), VkDeviceQueueCreateFlags(),
+        VkDeviceGroupSwapchainCreateInfoKHR, VkImageCreateInfo,
+        VkImageSwapchainCreateInfoKHR, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(),
         -- > #include "vk_platform.h"
         VkGetDeviceGroupPresentCapabilitiesKHR,
         pattern VkGetDeviceGroupPresentCapabilitiesKHR,
@@ -114,11 +153,18 @@
         VkAcquireNextImage2KHR, pattern VkAcquireNextImage2KHR,
         HS_vkAcquireNextImage2KHR, PFN_vkAcquireNextImage2KHR,
         vkAcquireNextImage2KHR, vkAcquireNextImage2KHRUnsafe,
-        vkAcquireNextImage2KHRSafe,
-        module Graphics.Vulkan.Types.Struct.AcquireNextImageInfoKHR,
-        module Graphics.Vulkan.Types.Struct.Device,
-        module Graphics.Vulkan.Types.Struct.Offset,
-        module Graphics.Vulkan.Types.Struct.Rect,
+        vkAcquireNextImage2KHRSafe, VkDeviceCreateInfo,
+        VkDeviceEventInfoEXT, VkDeviceGeneratedCommandsFeaturesNVX,
+        VkDeviceGeneratedCommandsLimitsNVX, VkDeviceGroupBindSparseInfo,
+        VkDeviceGroupBindSparseInfoKHR,
+        VkDeviceGroupCommandBufferBeginInfo,
+        VkDeviceGroupCommandBufferBeginInfoKHR,
+        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfoKHR,
+        VkDeviceGroupRenderPassBeginInfo,
+        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
+        VkDeviceGroupSubmitInfoKHR, VkDeviceQueueCreateInfo,
+        VkDeviceQueueGlobalPriorityCreateInfoEXT, VkDeviceQueueInfo2,
+        VkOffset2D, VkOffset3D, VkRect2D, VkRectLayerKHR,
         pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,
         pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,
         pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,
@@ -152,15 +198,10 @@
 import Graphics.Vulkan.Types.Struct.AcquireNextImageInfoKHR
 import Graphics.Vulkan.Types.Struct.AllocationCallbacks
 import Graphics.Vulkan.Types.Struct.Bind                    (VkBindImageMemoryInfo,
-                                                             VkBindImageMemoryInfo',
-                                                             VkBindImageMemorySwapchainInfoKHR,
-                                                             VkBindImageMemorySwapchainInfoKHR')
+                                                             VkBindImageMemorySwapchainInfoKHR)
 import Graphics.Vulkan.Types.Struct.Device
 import Graphics.Vulkan.Types.Struct.Extent
-import Graphics.Vulkan.Types.Struct.Image                   (VkImageCreateInfo,
-                                                             VkImageCreateInfo',
-                                                             VkImageSwapchainCreateInfoKHR,
-                                                             VkImageSwapchainCreateInfoKHR')
+import Graphics.Vulkan.Types.Struct.Image                   (VkImageCreateInfo, VkImageSwapchainCreateInfoKHR)
 import Graphics.Vulkan.Types.Struct.Offset
 import Graphics.Vulkan.Types.Struct.Present
 import Graphics.Vulkan.Types.Struct.Rect
@@ -170,7 +211,8 @@
 pattern VkCreateSwapchainKHR :: CString
 
 pattern VkCreateSwapchainKHR <- (is_VkCreateSwapchainKHR -> True)
-  where VkCreateSwapchainKHR = _VkCreateSwapchainKHR
+  where
+    VkCreateSwapchainKHR = _VkCreateSwapchainKHR
 
 {-# INLINE _VkCreateSwapchainKHR #-}
 
@@ -379,21 +421,22 @@
                :: PFN_vkCreateSwapchainKHR -> HS_vkCreateSwapchainKHR
 
 instance VulkanProc "vkCreateSwapchainKHR" where
-        type VkProcType "vkCreateSwapchainKHR" = HS_vkCreateSwapchainKHR
-        vkProcSymbol = _VkCreateSwapchainKHR
+    type VkProcType "vkCreateSwapchainKHR" = HS_vkCreateSwapchainKHR
+    vkProcSymbol = _VkCreateSwapchainKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateSwapchainKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateSwapchainKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateSwapchainKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateSwapchainKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDestroySwapchainKHR :: CString
 
 pattern VkDestroySwapchainKHR <- (is_VkDestroySwapchainKHR -> True)
-  where VkDestroySwapchainKHR = _VkDestroySwapchainKHR
+  where
+    VkDestroySwapchainKHR = _VkDestroySwapchainKHR
 
 {-# INLINE _VkDestroySwapchainKHR #-}
 
@@ -564,22 +607,23 @@
                :: PFN_vkDestroySwapchainKHR -> HS_vkDestroySwapchainKHR
 
 instance VulkanProc "vkDestroySwapchainKHR" where
-        type VkProcType "vkDestroySwapchainKHR" = HS_vkDestroySwapchainKHR
-        vkProcSymbol = _VkDestroySwapchainKHR
+    type VkProcType "vkDestroySwapchainKHR" = HS_vkDestroySwapchainKHR
+    vkProcSymbol = _VkDestroySwapchainKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroySwapchainKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroySwapchainKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroySwapchainKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroySwapchainKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetSwapchainImagesKHR :: CString
 
 pattern VkGetSwapchainImagesKHR <-
         (is_VkGetSwapchainImagesKHR -> True)
-  where VkGetSwapchainImagesKHR = _VkGetSwapchainImagesKHR
+  where
+    VkGetSwapchainImagesKHR = _VkGetSwapchainImagesKHR
 
 {-# INLINE _VkGetSwapchainImagesKHR #-}
 
@@ -784,22 +828,23 @@
                PFN_vkGetSwapchainImagesKHR -> HS_vkGetSwapchainImagesKHR
 
 instance VulkanProc "vkGetSwapchainImagesKHR" where
-        type VkProcType "vkGetSwapchainImagesKHR" =
-             HS_vkGetSwapchainImagesKHR
-        vkProcSymbol = _VkGetSwapchainImagesKHR
+    type VkProcType "vkGetSwapchainImagesKHR" =
+         HS_vkGetSwapchainImagesKHR
+    vkProcSymbol = _VkGetSwapchainImagesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainImagesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetSwapchainImagesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetSwapchainImagesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetSwapchainImagesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkAcquireNextImageKHR :: CString
 
 pattern VkAcquireNextImageKHR <- (is_VkAcquireNextImageKHR -> True)
-  where VkAcquireNextImageKHR = _VkAcquireNextImageKHR
+  where
+    VkAcquireNextImageKHR = _VkAcquireNextImageKHR
 
 {-# INLINE _VkAcquireNextImageKHR #-}
 
@@ -1028,21 +1073,22 @@
                :: PFN_vkAcquireNextImageKHR -> HS_vkAcquireNextImageKHR
 
 instance VulkanProc "vkAcquireNextImageKHR" where
-        type VkProcType "vkAcquireNextImageKHR" = HS_vkAcquireNextImageKHR
-        vkProcSymbol = _VkAcquireNextImageKHR
+    type VkProcType "vkAcquireNextImageKHR" = HS_vkAcquireNextImageKHR
+    vkProcSymbol = _VkAcquireNextImageKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkAcquireNextImageKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkAcquireNextImageKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkAcquireNextImageKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkAcquireNextImageKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkQueuePresentKHR :: CString
 
 pattern VkQueuePresentKHR <- (is_VkQueuePresentKHR -> True)
-  where VkQueuePresentKHR = _VkQueuePresentKHR
+  where
+    VkQueuePresentKHR = _VkQueuePresentKHR
 
 {-# INLINE _VkQueuePresentKHR #-}
 
@@ -1215,16 +1261,16 @@
                PFN_vkQueuePresentKHR -> HS_vkQueuePresentKHR
 
 instance VulkanProc "vkQueuePresentKHR" where
-        type VkProcType "vkQueuePresentKHR" = HS_vkQueuePresentKHR
-        vkProcSymbol = _VkQueuePresentKHR
+    type VkProcType "vkQueuePresentKHR" = HS_vkQueuePresentKHR
+    vkProcSymbol = _VkQueuePresentKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkQueuePresentKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkQueuePresentKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkQueuePresentKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkQueuePresentKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_SWAPCHAIN_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -1236,8 +1282,8 @@
 
 pattern VK_KHR_SWAPCHAIN_EXTENSION_NAME <-
         (is_VK_KHR_SWAPCHAIN_EXTENSION_NAME -> True)
-  where VK_KHR_SWAPCHAIN_EXTENSION_NAME
-          = _VK_KHR_SWAPCHAIN_EXTENSION_NAME
+  where
+    VK_KHR_SWAPCHAIN_EXTENSION_NAME = _VK_KHR_SWAPCHAIN_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_SWAPCHAIN_EXTENSION_NAME #-}
 
@@ -1284,8 +1330,9 @@
 
 pattern VkGetDeviceGroupPresentCapabilitiesKHR <-
         (is_VkGetDeviceGroupPresentCapabilitiesKHR -> True)
-  where VkGetDeviceGroupPresentCapabilitiesKHR
-          = _VkGetDeviceGroupPresentCapabilitiesKHR
+  where
+    VkGetDeviceGroupPresentCapabilitiesKHR
+      = _VkGetDeviceGroupPresentCapabilitiesKHR
 
 {-# INLINE _VkGetDeviceGroupPresentCapabilitiesKHR #-}
 
@@ -1477,26 +1524,27 @@
                  HS_vkGetDeviceGroupPresentCapabilitiesKHR
 
 instance VulkanProc "vkGetDeviceGroupPresentCapabilitiesKHR" where
-        type VkProcType "vkGetDeviceGroupPresentCapabilitiesKHR" =
-             HS_vkGetDeviceGroupPresentCapabilitiesKHR
-        vkProcSymbol = _VkGetDeviceGroupPresentCapabilitiesKHR
+    type VkProcType "vkGetDeviceGroupPresentCapabilitiesKHR" =
+         HS_vkGetDeviceGroupPresentCapabilitiesKHR
+    vkProcSymbol = _VkGetDeviceGroupPresentCapabilitiesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetDeviceGroupPresentCapabilitiesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetDeviceGroupPresentCapabilitiesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetDeviceGroupPresentCapabilitiesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetDeviceGroupPresentCapabilitiesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetDeviceGroupSurfacePresentModesKHR :: CString
 
 pattern VkGetDeviceGroupSurfacePresentModesKHR <-
         (is_VkGetDeviceGroupSurfacePresentModesKHR -> True)
-  where VkGetDeviceGroupSurfacePresentModesKHR
-          = _VkGetDeviceGroupSurfacePresentModesKHR
+  where
+    VkGetDeviceGroupSurfacePresentModesKHR
+      = _VkGetDeviceGroupSurfacePresentModesKHR
 
 {-# INLINE _VkGetDeviceGroupSurfacePresentModesKHR #-}
 
@@ -1703,26 +1751,27 @@
                  HS_vkGetDeviceGroupSurfacePresentModesKHR
 
 instance VulkanProc "vkGetDeviceGroupSurfacePresentModesKHR" where
-        type VkProcType "vkGetDeviceGroupSurfacePresentModesKHR" =
-             HS_vkGetDeviceGroupSurfacePresentModesKHR
-        vkProcSymbol = _VkGetDeviceGroupSurfacePresentModesKHR
+    type VkProcType "vkGetDeviceGroupSurfacePresentModesKHR" =
+         HS_vkGetDeviceGroupSurfacePresentModesKHR
+    vkProcSymbol = _VkGetDeviceGroupSurfacePresentModesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetDeviceGroupSurfacePresentModesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetDeviceGroupSurfacePresentModesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetDeviceGroupSurfacePresentModesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetDeviceGroupSurfacePresentModesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDevicePresentRectanglesKHR :: CString
 
 pattern VkGetPhysicalDevicePresentRectanglesKHR <-
         (is_VkGetPhysicalDevicePresentRectanglesKHR -> True)
-  where VkGetPhysicalDevicePresentRectanglesKHR
-          = _VkGetPhysicalDevicePresentRectanglesKHR
+  where
+    VkGetPhysicalDevicePresentRectanglesKHR
+      = _VkGetPhysicalDevicePresentRectanglesKHR
 
 {-# INLINE _VkGetPhysicalDevicePresentRectanglesKHR #-}
 
@@ -1938,25 +1987,26 @@
                  HS_vkGetPhysicalDevicePresentRectanglesKHR
 
 instance VulkanProc "vkGetPhysicalDevicePresentRectanglesKHR" where
-        type VkProcType "vkGetPhysicalDevicePresentRectanglesKHR" =
-             HS_vkGetPhysicalDevicePresentRectanglesKHR
-        vkProcSymbol = _VkGetPhysicalDevicePresentRectanglesKHR
+    type VkProcType "vkGetPhysicalDevicePresentRectanglesKHR" =
+         HS_vkGetPhysicalDevicePresentRectanglesKHR
+    vkProcSymbol = _VkGetPhysicalDevicePresentRectanglesKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDevicePresentRectanglesKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDevicePresentRectanglesKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDevicePresentRectanglesKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDevicePresentRectanglesKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkAcquireNextImage2KHR :: CString
 
 pattern VkAcquireNextImage2KHR <-
         (is_VkAcquireNextImage2KHR -> True)
-  where VkAcquireNextImage2KHR = _VkAcquireNextImage2KHR
+  where
+    VkAcquireNextImage2KHR = _VkAcquireNextImage2KHR
 
 {-# INLINE _VkAcquireNextImage2KHR #-}
 
@@ -2150,17 +2200,17 @@
                PFN_vkAcquireNextImage2KHR -> HS_vkAcquireNextImage2KHR
 
 instance VulkanProc "vkAcquireNextImage2KHR" where
-        type VkProcType "vkAcquireNextImage2KHR" =
-             HS_vkAcquireNextImage2KHR
-        vkProcSymbol = _VkAcquireNextImage2KHR
+    type VkProcType "vkAcquireNextImage2KHR" =
+         HS_vkAcquireNextImage2KHR
+    vkProcSymbol = _VkAcquireNextImage2KHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkAcquireNextImage2KHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkAcquireNextImage2KHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkAcquireNextImage2KHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkAcquireNextImage2KHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR ::
         VkStructureType
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_variable_pointers.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_variable_pointers.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_variable_pointers.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_variable_pointers.hs
@@ -23,7 +23,7 @@
         --
 
         -- ** Required extensions: 'VK_KHR_get_physical_device_properties2', 'VK_KHR_storage_buffer_storage_class'.
-        module Graphics.Vulkan.Types.Struct.PhysicalDevice,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
         VK_KHR_VARIABLE_POINTERS_SPEC_VERSION,
         pattern VK_KHR_VARIABLE_POINTERS_SPEC_VERSION,
         VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME,
@@ -33,7 +33,7 @@
 import GHC.Ptr                                     (Ptr (..))
 import Graphics.Vulkan.Core_1_1                    (pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES)
 import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Types.Struct.PhysicalDevice
+import Graphics.Vulkan.Types.Struct.PhysicalDevice (VkPhysicalDeviceVariablePointerFeaturesKHR)
 
 pattern VK_KHR_VARIABLE_POINTERS_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -45,8 +45,9 @@
 
 pattern VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME <-
         (is_VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME -> True)
-  where VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME
-          = _VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME
+  where
+    VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME
+      = _VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_wayland_surface.hs
@@ -12,29 +12,52 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_wayland_surface
-       (-- * Vulkan extension: @VK_KHR_wayland_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
-        --
-        -- author: @KHR@
-        --
-        -- type: @instance@
-        --
-        -- platform: @wayland@
-        --
-        -- Extension number: @7@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Bitmasks,
-        VkWaylandSurfaceCreateInfoKHR, VkWaylandSurfaceCreateInfoKHR',
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkStructureType(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkWaylandSurfaceCreateInfoKHR,
         -- > #include "vk_platform.h"
         VkCreateWaylandSurfaceKHR, pattern VkCreateWaylandSurfaceKHR,
         HS_vkCreateWaylandSurfaceKHR, PFN_vkCreateWaylandSurfaceKHR,
@@ -47,16 +70,53 @@
         vkGetPhysicalDeviceWaylandPresentationSupportKHR,
         vkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceWaylandPresentationSupportKHRSafe,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Include,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformWaylandKhr,
-        VK_KHR_WAYLAND_SURFACE_SPEC_VERSION,
+        module Graphics.Vulkan.Marshal, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR, MirConnection,
+        MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID, Window,
+        WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT, XcbWindowT,
+        VkAllocationCallbacks, VK_KHR_WAYLAND_SURFACE_SPEC_VERSION,
         pattern VK_KHR_WAYLAND_SURFACE_SPEC_VERSION,
         VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME,
         pattern VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME,
@@ -82,7 +142,8 @@
 
 pattern VkCreateWaylandSurfaceKHR <-
         (is_VkCreateWaylandSurfaceKHR -> True)
-  where VkCreateWaylandSurfaceKHR = _VkCreateWaylandSurfaceKHR
+  where
+    VkCreateWaylandSurfaceKHR = _VkCreateWaylandSurfaceKHR
 
 {-# INLINE _VkCreateWaylandSurfaceKHR #-}
 
@@ -294,24 +355,25 @@
                PFN_vkCreateWaylandSurfaceKHR -> HS_vkCreateWaylandSurfaceKHR
 
 instance VulkanProc "vkCreateWaylandSurfaceKHR" where
-        type VkProcType "vkCreateWaylandSurfaceKHR" =
-             HS_vkCreateWaylandSurfaceKHR
-        vkProcSymbol = _VkCreateWaylandSurfaceKHR
+    type VkProcType "vkCreateWaylandSurfaceKHR" =
+         HS_vkCreateWaylandSurfaceKHR
+    vkProcSymbol = _VkCreateWaylandSurfaceKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateWaylandSurfaceKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateWaylandSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateWaylandSurfaceKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateWaylandSurfaceKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceWaylandPresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceWaylandPresentationSupportKHR <-
         (is_VkGetPhysicalDeviceWaylandPresentationSupportKHR -> True)
-  where VkGetPhysicalDeviceWaylandPresentationSupportKHR
-          = _VkGetPhysicalDeviceWaylandPresentationSupportKHR
+  where
+    VkGetPhysicalDeviceWaylandPresentationSupportKHR
+      = _VkGetPhysicalDeviceWaylandPresentationSupportKHR
 
 {-# INLINE _VkGetPhysicalDeviceWaylandPresentationSupportKHR #-}
 
@@ -503,19 +565,19 @@
 instance VulkanProc
            "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
-             = HS_vkGetPhysicalDeviceWaylandPresentationSupportKHR
-        vkProcSymbol = _VkGetPhysicalDeviceWaylandPresentationSupportKHR
+    type VkProcType "vkGetPhysicalDeviceWaylandPresentationSupportKHR"
+         = HS_vkGetPhysicalDeviceWaylandPresentationSupportKHR
+    vkProcSymbol = _VkGetPhysicalDeviceWaylandPresentationSupportKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceWaylandPresentationSupportKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_WAYLAND_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -527,8 +589,9 @@
 
 pattern VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME <-
         (is_VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME -> True)
-  where VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
-          = _VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
+  where
+    VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
+      = _VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_keyed_mutex.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_keyed_mutex.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_keyed_mutex.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_keyed_mutex.hs
@@ -5,30 +5,24 @@
 {-# LANGUAGE Strict          #-}
 {-# LANGUAGE ViewPatterns    #-}
 module Graphics.Vulkan.Ext.VK_KHR_win32_keyed_mutex
-       (-- * Vulkan extension: @VK_KHR_win32_keyed_mutex@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Carsten Rohde @crohde@
-        --
-        -- author: @KHR@
-        --
-        -- type: @device@
-        --
-        -- platform: @win32@
-        --
-        -- Extension number: @76@
-        --
-        -- Required extensions: 'VK_KHR_external_memory_win32'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_external_memory_win32'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Enum.StructureType, VkSubmitInfo,
-        VkSubmitInfo', VkWin32KeyedMutexAcquireReleaseInfoKHR,
-        VkWin32KeyedMutexAcquireReleaseInfoKHR',
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkPipelineBindPoint(..), VkPipelineCacheHeaderVersion(..),
+        VkPipelineCreateBitmask(..), VkPipelineStageBitmask(..),
+        VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..), VkStructureType(..),
+        VkSubmitInfo, VkWin32KeyedMutexAcquireReleaseInfoKHR,
         -- > #include "vk_platform.h"
         VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION,
         pattern VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION,
@@ -41,10 +35,8 @@
 import Graphics.Vulkan.Types.BaseTypes
 import Graphics.Vulkan.Types.Enum.Pipeline
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.PlatformWin32Khr (VkWin32KeyedMutexAcquireReleaseInfoKHR,
-                                                      VkWin32KeyedMutexAcquireReleaseInfoKHR')
-import Graphics.Vulkan.Types.Struct.SubmitInfo       (VkSubmitInfo,
-                                                      VkSubmitInfo')
+import Graphics.Vulkan.Types.Struct.PlatformWin32Khr (VkWin32KeyedMutexAcquireReleaseInfoKHR)
+import Graphics.Vulkan.Types.Struct.SubmitInfo       (VkSubmitInfo)
 
 pattern VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -56,8 +48,9 @@
 
 pattern VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME <-
         (is_VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME -> True)
-  where VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME
-          = _VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME
+  where
+    VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME
+      = _VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_win32_surface.hs
@@ -12,33 +12,57 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_win32_surface
-       (-- * Vulkan extension: @VK_KHR_win32_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
-        --
-        -- author: @KHR@
-        --
-        -- type: @instance@
-        --
-        -- platform: @win32@
-        --
-        -- Extension number: @10@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Bitmasks, VkWin32SurfaceCreateInfoKHR,
-        VkWin32SurfaceCreateInfoKHR', -- > #include "vk_platform.h"
-                                      VkCreateWin32SurfaceKHR,
-        pattern VkCreateWin32SurfaceKHR, HS_vkCreateWin32SurfaceKHR,
-        PFN_vkCreateWin32SurfaceKHR, vkCreateWin32SurfaceKHR,
-        vkCreateWin32SurfaceKHRUnsafe, vkCreateWin32SurfaceKHRSafe,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkStructureType(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkWin32SurfaceCreateInfoKHR,
+        -- > #include "vk_platform.h"
+        VkCreateWin32SurfaceKHR, pattern VkCreateWin32SurfaceKHR,
+        HS_vkCreateWin32SurfaceKHR, PFN_vkCreateWin32SurfaceKHR,
+        vkCreateWin32SurfaceKHR, vkCreateWin32SurfaceKHRUnsafe,
+        vkCreateWin32SurfaceKHRSafe,
         VkGetPhysicalDeviceWin32PresentationSupportKHR,
         pattern VkGetPhysicalDeviceWin32PresentationSupportKHR,
         HS_vkGetPhysicalDeviceWin32PresentationSupportKHR,
@@ -46,15 +70,62 @@
         vkGetPhysicalDeviceWin32PresentationSupportKHR,
         vkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceWin32PresentationSupportKHRSafe,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Include,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformWin32Khr,
+        module Graphics.Vulkan.Marshal, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR, MirConnection,
+        MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID, Window,
+        WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT, XcbWindowT,
+        VkAllocationCallbacks, VkD3D12FenceSubmitInfoKHR,
+        VkExportFenceWin32HandleInfoKHR, VkExportMemoryWin32HandleInfoKHR,
+        VkExportMemoryWin32HandleInfoNV,
+        VkExportSemaphoreWin32HandleInfoKHR, VkFenceGetWin32HandleInfoKHR,
+        VkImportFenceWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoKHR,
+        VkImportMemoryWin32HandleInfoNV,
+        VkImportSemaphoreWin32HandleInfoKHR, VkMemoryGetWin32HandleInfoKHR,
+        VkMemoryWin32HandlePropertiesKHR, VkSemaphoreGetWin32HandleInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoNV,
         VK_KHR_WIN32_SURFACE_SPEC_VERSION,
         pattern VK_KHR_WIN32_SURFACE_SPEC_VERSION,
         VK_KHR_WIN32_SURFACE_EXTENSION_NAME,
@@ -81,7 +152,8 @@
 
 pattern VkCreateWin32SurfaceKHR <-
         (is_VkCreateWin32SurfaceKHR -> True)
-  where VkCreateWin32SurfaceKHR = _VkCreateWin32SurfaceKHR
+  where
+    VkCreateWin32SurfaceKHR = _VkCreateWin32SurfaceKHR
 
 {-# INLINE _VkCreateWin32SurfaceKHR #-}
 
@@ -292,24 +364,25 @@
                PFN_vkCreateWin32SurfaceKHR -> HS_vkCreateWin32SurfaceKHR
 
 instance VulkanProc "vkCreateWin32SurfaceKHR" where
-        type VkProcType "vkCreateWin32SurfaceKHR" =
-             HS_vkCreateWin32SurfaceKHR
-        vkProcSymbol = _VkCreateWin32SurfaceKHR
+    type VkProcType "vkCreateWin32SurfaceKHR" =
+         HS_vkCreateWin32SurfaceKHR
+    vkProcSymbol = _VkCreateWin32SurfaceKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateWin32SurfaceKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateWin32SurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateWin32SurfaceKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateWin32SurfaceKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceWin32PresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceWin32PresentationSupportKHR <-
         (is_VkGetPhysicalDeviceWin32PresentationSupportKHR -> True)
-  where VkGetPhysicalDeviceWin32PresentationSupportKHR
-          = _VkGetPhysicalDeviceWin32PresentationSupportKHR
+  where
+    VkGetPhysicalDeviceWin32PresentationSupportKHR
+      = _VkGetPhysicalDeviceWin32PresentationSupportKHR
 
 {-# INLINE _VkGetPhysicalDeviceWin32PresentationSupportKHR #-}
 
@@ -487,19 +560,19 @@
 instance VulkanProc
            "vkGetPhysicalDeviceWin32PresentationSupportKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceWin32PresentationSupportKHR" =
-             HS_vkGetPhysicalDeviceWin32PresentationSupportKHR
-        vkProcSymbol = _VkGetPhysicalDeviceWin32PresentationSupportKHR
+    type VkProcType "vkGetPhysicalDeviceWin32PresentationSupportKHR" =
+         HS_vkGetPhysicalDeviceWin32PresentationSupportKHR
+    vkProcSymbol = _VkGetPhysicalDeviceWin32PresentationSupportKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceWin32PresentationSupportKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_WIN32_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -511,8 +584,9 @@
 
 pattern VK_KHR_WIN32_SURFACE_EXTENSION_NAME <-
         (is_VK_KHR_WIN32_SURFACE_EXTENSION_NAME -> True)
-  where VK_KHR_WIN32_SURFACE_EXTENSION_NAME
-          = _VK_KHR_WIN32_SURFACE_EXTENSION_NAME
+  where
+    VK_KHR_WIN32_SURFACE_EXTENSION_NAME
+      = _VK_KHR_WIN32_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_WIN32_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xcb_surface.hs
@@ -12,33 +12,57 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_xcb_surface
-       (-- * Vulkan extension: @VK_KHR_xcb_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
-        --
-        -- author: @KHR@
-        --
-        -- type: @instance@
-        --
-        -- platform: @xcb@
-        --
-        -- Extension number: @6@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Bitmasks, VkXcbSurfaceCreateInfoKHR,
-        VkXcbSurfaceCreateInfoKHR', -- > #include "vk_platform.h"
-                                    VkCreateXcbSurfaceKHR,
-        pattern VkCreateXcbSurfaceKHR, HS_vkCreateXcbSurfaceKHR,
-        PFN_vkCreateXcbSurfaceKHR, vkCreateXcbSurfaceKHR,
-        vkCreateXcbSurfaceKHRUnsafe, vkCreateXcbSurfaceKHRSafe,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkStructureType(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateInfoKHR,
+        -- > #include "vk_platform.h"
+        VkCreateXcbSurfaceKHR, pattern VkCreateXcbSurfaceKHR,
+        HS_vkCreateXcbSurfaceKHR, PFN_vkCreateXcbSurfaceKHR,
+        vkCreateXcbSurfaceKHR, vkCreateXcbSurfaceKHRUnsafe,
+        vkCreateXcbSurfaceKHRSafe,
         VkGetPhysicalDeviceXcbPresentationSupportKHR,
         pattern VkGetPhysicalDeviceXcbPresentationSupportKHR,
         HS_vkGetPhysicalDeviceXcbPresentationSupportKHR,
@@ -46,16 +70,53 @@
         vkGetPhysicalDeviceXcbPresentationSupportKHR,
         vkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceXcbPresentationSupportKHRSafe,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Include,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformXcbKhr,
-        VK_KHR_XCB_SURFACE_SPEC_VERSION,
+        module Graphics.Vulkan.Marshal, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR, MirConnection,
+        MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID, Window,
+        WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT, XcbWindowT,
+        VkAllocationCallbacks, VK_KHR_XCB_SURFACE_SPEC_VERSION,
         pattern VK_KHR_XCB_SURFACE_SPEC_VERSION,
         VK_KHR_XCB_SURFACE_EXTENSION_NAME,
         pattern VK_KHR_XCB_SURFACE_EXTENSION_NAME,
@@ -80,7 +141,8 @@
 pattern VkCreateXcbSurfaceKHR :: CString
 
 pattern VkCreateXcbSurfaceKHR <- (is_VkCreateXcbSurfaceKHR -> True)
-  where VkCreateXcbSurfaceKHR = _VkCreateXcbSurfaceKHR
+  where
+    VkCreateXcbSurfaceKHR = _VkCreateXcbSurfaceKHR
 
 {-# INLINE _VkCreateXcbSurfaceKHR #-}
 
@@ -289,23 +351,24 @@
                :: PFN_vkCreateXcbSurfaceKHR -> HS_vkCreateXcbSurfaceKHR
 
 instance VulkanProc "vkCreateXcbSurfaceKHR" where
-        type VkProcType "vkCreateXcbSurfaceKHR" = HS_vkCreateXcbSurfaceKHR
-        vkProcSymbol = _VkCreateXcbSurfaceKHR
+    type VkProcType "vkCreateXcbSurfaceKHR" = HS_vkCreateXcbSurfaceKHR
+    vkProcSymbol = _VkCreateXcbSurfaceKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateXcbSurfaceKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateXcbSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateXcbSurfaceKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateXcbSurfaceKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceXcbPresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceXcbPresentationSupportKHR <-
         (is_VkGetPhysicalDeviceXcbPresentationSupportKHR -> True)
-  where VkGetPhysicalDeviceXcbPresentationSupportKHR
-          = _VkGetPhysicalDeviceXcbPresentationSupportKHR
+  where
+    VkGetPhysicalDeviceXcbPresentationSupportKHR
+      = _VkGetPhysicalDeviceXcbPresentationSupportKHR
 
 {-# INLINE _VkGetPhysicalDeviceXcbPresentationSupportKHR #-}
 
@@ -511,19 +574,19 @@
 
 instance VulkanProc "vkGetPhysicalDeviceXcbPresentationSupportKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceXcbPresentationSupportKHR" =
-             HS_vkGetPhysicalDeviceXcbPresentationSupportKHR
-        vkProcSymbol = _VkGetPhysicalDeviceXcbPresentationSupportKHR
+    type VkProcType "vkGetPhysicalDeviceXcbPresentationSupportKHR" =
+         HS_vkGetPhysicalDeviceXcbPresentationSupportKHR
+    vkProcSymbol = _VkGetPhysicalDeviceXcbPresentationSupportKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceXcbPresentationSupportKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_XCB_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -535,8 +598,9 @@
 
 pattern VK_KHR_XCB_SURFACE_EXTENSION_NAME <-
         (is_VK_KHR_XCB_SURFACE_EXTENSION_NAME -> True)
-  where VK_KHR_XCB_SURFACE_EXTENSION_NAME
-          = _VK_KHR_XCB_SURFACE_EXTENSION_NAME
+  where
+    VK_KHR_XCB_SURFACE_EXTENSION_NAME
+      = _VK_KHR_XCB_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_XCB_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_KHR_xlib_surface.hs
@@ -12,33 +12,57 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_KHR_xlib_surface
-       (-- * Vulkan extension: @VK_KHR_xlib_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jesse Hall @critsec,Ian Elliott @ianelliottus@
-        --
-        -- author: @KHR@
-        --
-        -- type: @instance@
-        --
-        -- platform: @xlib@
-        --
-        -- Extension number: @5@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Bitmasks, VkXlibSurfaceCreateInfoKHR,
-        VkXlibSurfaceCreateInfoKHR', -- > #include "vk_platform.h"
-                                     VkCreateXlibSurfaceKHR,
-        pattern VkCreateXlibSurfaceKHR, HS_vkCreateXlibSurfaceKHR,
-        PFN_vkCreateXlibSurfaceKHR, vkCreateXlibSurfaceKHR,
-        vkCreateXlibSurfaceKHRUnsafe, vkCreateXlibSurfaceKHRSafe,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkStructureType(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkXlibSurfaceCreateInfoKHR,
+        -- > #include "vk_platform.h"
+        VkCreateXlibSurfaceKHR, pattern VkCreateXlibSurfaceKHR,
+        HS_vkCreateXlibSurfaceKHR, PFN_vkCreateXlibSurfaceKHR,
+        vkCreateXlibSurfaceKHR, vkCreateXlibSurfaceKHRUnsafe,
+        vkCreateXlibSurfaceKHRSafe,
         VkGetPhysicalDeviceXlibPresentationSupportKHR,
         pattern VkGetPhysicalDeviceXlibPresentationSupportKHR,
         HS_vkGetPhysicalDeviceXlibPresentationSupportKHR,
@@ -46,16 +70,53 @@
         vkGetPhysicalDeviceXlibPresentationSupportKHR,
         vkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe,
         vkGetPhysicalDeviceXlibPresentationSupportKHRSafe,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Include,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformXlibKhr,
-        VK_KHR_XLIB_SURFACE_SPEC_VERSION,
+        module Graphics.Vulkan.Marshal, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        DWORD, Display, HANDLE, HINSTANCE, HWND, LPCWSTR, MirConnection,
+        MirSurface, RROutput, SECURITY_ATTRIBUTES, VisualID, Window,
+        WlDisplay, WlSurface, XcbConnectionT, XcbVisualidT, XcbWindowT,
+        VkAllocationCallbacks, VK_KHR_XLIB_SURFACE_SPEC_VERSION,
         pattern VK_KHR_XLIB_SURFACE_SPEC_VERSION,
         VK_KHR_XLIB_SURFACE_EXTENSION_NAME,
         pattern VK_KHR_XLIB_SURFACE_EXTENSION_NAME,
@@ -81,7 +142,8 @@
 
 pattern VkCreateXlibSurfaceKHR <-
         (is_VkCreateXlibSurfaceKHR -> True)
-  where VkCreateXlibSurfaceKHR = _VkCreateXlibSurfaceKHR
+  where
+    VkCreateXlibSurfaceKHR = _VkCreateXlibSurfaceKHR
 
 {-# INLINE _VkCreateXlibSurfaceKHR #-}
 
@@ -291,24 +353,25 @@
                PFN_vkCreateXlibSurfaceKHR -> HS_vkCreateXlibSurfaceKHR
 
 instance VulkanProc "vkCreateXlibSurfaceKHR" where
-        type VkProcType "vkCreateXlibSurfaceKHR" =
-             HS_vkCreateXlibSurfaceKHR
-        vkProcSymbol = _VkCreateXlibSurfaceKHR
+    type VkProcType "vkCreateXlibSurfaceKHR" =
+         HS_vkCreateXlibSurfaceKHR
+    vkProcSymbol = _VkCreateXlibSurfaceKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateXlibSurfaceKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateXlibSurfaceKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateXlibSurfaceKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateXlibSurfaceKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceXlibPresentationSupportKHR :: CString
 
 pattern VkGetPhysicalDeviceXlibPresentationSupportKHR <-
         (is_VkGetPhysicalDeviceXlibPresentationSupportKHR -> True)
-  where VkGetPhysicalDeviceXlibPresentationSupportKHR
-          = _VkGetPhysicalDeviceXlibPresentationSupportKHR
+  where
+    VkGetPhysicalDeviceXlibPresentationSupportKHR
+      = _VkGetPhysicalDeviceXlibPresentationSupportKHR
 
 {-# INLINE _VkGetPhysicalDeviceXlibPresentationSupportKHR #-}
 
@@ -511,19 +574,19 @@
 
 instance VulkanProc "vkGetPhysicalDeviceXlibPresentationSupportKHR"
          where
-        type VkProcType "vkGetPhysicalDeviceXlibPresentationSupportKHR" =
-             HS_vkGetPhysicalDeviceXlibPresentationSupportKHR
-        vkProcSymbol = _VkGetPhysicalDeviceXlibPresentationSupportKHR
+    type VkProcType "vkGetPhysicalDeviceXlibPresentationSupportKHR" =
+         HS_vkGetPhysicalDeviceXlibPresentationSupportKHR
+    vkProcSymbol = _VkGetPhysicalDeviceXlibPresentationSupportKHR
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceXlibPresentationSupportKHRSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_KHR_XLIB_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -535,8 +598,9 @@
 
 pattern VK_KHR_XLIB_SURFACE_EXTENSION_NAME <-
         (is_VK_KHR_XLIB_SURFACE_EXTENSION_NAME -> True)
-  where VK_KHR_XLIB_SURFACE_EXTENSION_NAME
-          = _VK_KHR_XLIB_SURFACE_EXTENSION_NAME
+  where
+    VK_KHR_XLIB_SURFACE_EXTENSION_NAME
+      = _VK_KHR_XLIB_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_KHR_XLIB_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_MVK_ios_surface.hs
@@ -10,41 +10,99 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_MVK_ios_surface
-       (-- * Vulkan extension: @VK_MVK_ios_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Bill Hollings @billhollings@
-        --
-        -- author: @MVK@
-        --
-        -- type: @instance@
-        --
-        -- platform: @ios@
-        --
-        -- Extension number: @123@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks, VkIOSSurfaceCreateInfoMVK,
-        VkIOSSurfaceCreateInfoMVK',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkCreateIOSSurfaceMVK, pattern VkCreateIOSSurfaceMVK,
-        HS_vkCreateIOSSurfaceMVK, PFN_vkCreateIOSSurfaceMVK,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformIosMvk,
-        VK_MVK_IOS_SURFACE_SPEC_VERSION,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkIOSSurfaceCreateInfoMVK,
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VkCreateIOSSurfaceMVK,
+        pattern VkCreateIOSSurfaceMVK, HS_vkCreateIOSSurfaceMVK,
+        PFN_vkCreateIOSSurfaceMVK, module Graphics.Vulkan.Marshal,
+        VkInternalAllocationType(..), VkResult(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VK_MVK_IOS_SURFACE_SPEC_VERSION,
         pattern VK_MVK_IOS_SURFACE_SPEC_VERSION,
         VK_MVK_IOS_SURFACE_EXTENSION_NAME,
         pattern VK_MVK_IOS_SURFACE_EXTENSION_NAME,
@@ -67,7 +125,8 @@
 pattern VkCreateIOSSurfaceMVK :: CString
 
 pattern VkCreateIOSSurfaceMVK <- (is_VkCreateIOSSurfaceMVK -> True)
-  where VkCreateIOSSurfaceMVK = _VkCreateIOSSurfaceMVK
+  where
+    VkCreateIOSSurfaceMVK = _VkCreateIOSSurfaceMVK
 
 {-# INLINE _VkCreateIOSSurfaceMVK #-}
 
@@ -113,16 +172,16 @@
                :: PFN_vkCreateIOSSurfaceMVK -> HS_vkCreateIOSSurfaceMVK
 
 instance VulkanProc "vkCreateIOSSurfaceMVK" where
-        type VkProcType "vkCreateIOSSurfaceMVK" = HS_vkCreateIOSSurfaceMVK
-        vkProcSymbol = _VkCreateIOSSurfaceMVK
+    type VkProcType "vkCreateIOSSurfaceMVK" = HS_vkCreateIOSSurfaceMVK
+    vkProcSymbol = _VkCreateIOSSurfaceMVK
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateIOSSurfaceMVKUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateIOSSurfaceMVKUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateIOSSurfaceMVKSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateIOSSurfaceMVKSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_MVK_IOS_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -134,8 +193,9 @@
 
 pattern VK_MVK_IOS_SURFACE_EXTENSION_NAME <-
         (is_VK_MVK_IOS_SURFACE_EXTENSION_NAME -> True)
-  where VK_MVK_IOS_SURFACE_EXTENSION_NAME
-          = _VK_MVK_IOS_SURFACE_EXTENSION_NAME
+  where
+    VK_MVK_IOS_SURFACE_EXTENSION_NAME
+      = _VK_MVK_IOS_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_MVK_IOS_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_MVK_macos_surface.hs
@@ -10,41 +10,99 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_MVK_macos_surface
-       (-- * Vulkan extension: @VK_MVK_macos_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Bill Hollings @billhollings@
-        --
-        -- author: @MVK@
-        --
-        -- type: @instance@
-        --
-        -- platform: @macos@
-        --
-        -- Extension number: @124@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks, VkMacOSSurfaceCreateInfoMVK,
-        VkMacOSSurfaceCreateInfoMVK',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkCreateMacOSSurfaceMVK, pattern VkCreateMacOSSurfaceMVK,
-        HS_vkCreateMacOSSurfaceMVK, PFN_vkCreateMacOSSurfaceMVK,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformMacosMvk,
-        VK_MVK_MACOS_SURFACE_SPEC_VERSION,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkMacOSSurfaceCreateInfoMVK,
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VkCreateMacOSSurfaceMVK,
+        pattern VkCreateMacOSSurfaceMVK, HS_vkCreateMacOSSurfaceMVK,
+        PFN_vkCreateMacOSSurfaceMVK, module Graphics.Vulkan.Marshal,
+        VkInternalAllocationType(..), VkResult(..),
+        VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VK_MVK_MACOS_SURFACE_SPEC_VERSION,
         pattern VK_MVK_MACOS_SURFACE_SPEC_VERSION,
         VK_MVK_MACOS_SURFACE_EXTENSION_NAME,
         pattern VK_MVK_MACOS_SURFACE_EXTENSION_NAME,
@@ -68,7 +126,8 @@
 
 pattern VkCreateMacOSSurfaceMVK <-
         (is_VkCreateMacOSSurfaceMVK -> True)
-  where VkCreateMacOSSurfaceMVK = _VkCreateMacOSSurfaceMVK
+  where
+    VkCreateMacOSSurfaceMVK = _VkCreateMacOSSurfaceMVK
 
 {-# INLINE _VkCreateMacOSSurfaceMVK #-}
 
@@ -116,17 +175,17 @@
                PFN_vkCreateMacOSSurfaceMVK -> HS_vkCreateMacOSSurfaceMVK
 
 instance VulkanProc "vkCreateMacOSSurfaceMVK" where
-        type VkProcType "vkCreateMacOSSurfaceMVK" =
-             HS_vkCreateMacOSSurfaceMVK
-        vkProcSymbol = _VkCreateMacOSSurfaceMVK
+    type VkProcType "vkCreateMacOSSurfaceMVK" =
+         HS_vkCreateMacOSSurfaceMVK
+    vkProcSymbol = _VkCreateMacOSSurfaceMVK
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateMacOSSurfaceMVKUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateMacOSSurfaceMVKUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateMacOSSurfaceMVKSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateMacOSSurfaceMVKSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_MVK_MACOS_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -138,8 +197,9 @@
 
 pattern VK_MVK_MACOS_SURFACE_EXTENSION_NAME <-
         (is_VK_MVK_MACOS_SURFACE_EXTENSION_NAME -> True)
-  where VK_MVK_MACOS_SURFACE_EXTENSION_NAME
-          = _VK_MVK_MACOS_SURFACE_EXTENSION_NAME
+  where
+    VK_MVK_MACOS_SURFACE_EXTENSION_NAME
+      = _VK_MVK_MACOS_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_MVK_MACOS_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs b/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NN_vi_surface.hs
@@ -10,40 +10,99 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_NN_vi_surface
-       (-- * Vulkan extension: @VK_NN_vi_surface@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Mathias Heyer gitlab:@mheyer@
-        --
-        -- author: @NN@
-        --
-        -- type: @instance@
-        --
-        -- platform: @vi@
-        --
-        -- Extension number: @63@
-        --
-        -- Required extensions: 'VK_KHR_surface'.
-        --
-
-        -- ** Required extensions: 'VK_KHR_surface'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        module Graphics.Vulkan.Types.Bitmasks, VkViSurfaceCreateInfoNN,
-        VkViSurfaceCreateInfoNN', -- > #include "vk_platform.h"
-                                  VkCreateViSurfaceNN,
-        pattern VkCreateViSurfaceNN, HS_vkCreateViSurfaceNN,
-        PFN_vkCreateViSurfaceNN, module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.PlatformViNn,
-        VK_NN_VI_SURFACE_SPEC_VERSION,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkStructureType(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkViSurfaceCreateInfoNN,
+        -- > #include "vk_platform.h"
+        VkCreateViSurfaceNN, pattern VkCreateViSurfaceNN,
+        HS_vkCreateViSurfaceNN, PFN_vkCreateViSurfaceNN,
+        module Graphics.Vulkan.Marshal, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VK_NN_VI_SURFACE_SPEC_VERSION,
         pattern VK_NN_VI_SURFACE_SPEC_VERSION,
         VK_NN_VI_SURFACE_EXTENSION_NAME,
         pattern VK_NN_VI_SURFACE_EXTENSION_NAME,
@@ -66,7 +125,8 @@
 pattern VkCreateViSurfaceNN :: CString
 
 pattern VkCreateViSurfaceNN <- (is_VkCreateViSurfaceNN -> True)
-  where VkCreateViSurfaceNN = _VkCreateViSurfaceNN
+  where
+    VkCreateViSurfaceNN = _VkCreateViSurfaceNN
 
 {-# INLINE _VkCreateViSurfaceNN #-}
 
@@ -111,16 +171,16 @@
                :: PFN_vkCreateViSurfaceNN -> HS_vkCreateViSurfaceNN
 
 instance VulkanProc "vkCreateViSurfaceNN" where
-        type VkProcType "vkCreateViSurfaceNN" = HS_vkCreateViSurfaceNN
-        vkProcSymbol = _VkCreateViSurfaceNN
+    type VkProcType "vkCreateViSurfaceNN" = HS_vkCreateViSurfaceNN
+    vkProcSymbol = _VkCreateViSurfaceNN
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateViSurfaceNNUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateViSurfaceNNUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateViSurfaceNNSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateViSurfaceNNSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NN_VI_SURFACE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -132,8 +192,8 @@
 
 pattern VK_NN_VI_SURFACE_EXTENSION_NAME <-
         (is_VK_NN_VI_SURFACE_EXTENSION_NAME -> True)
-  where VK_NN_VI_SURFACE_EXTENSION_NAME
-          = _VK_NN_VI_SURFACE_EXTENSION_NAME
+  where
+    VK_NN_VI_SURFACE_EXTENSION_NAME = _VK_NN_VI_SURFACE_EXTENSION_NAME
 
 {-# INLINE _VK_NN_VI_SURFACE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs b/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NVX_device_generated_commands.hs
@@ -10,50 +10,43 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_NVX_device_generated_commands
-       (-- * Vulkan extension: @VK_NVX_device_generated_commands@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Christoph Kubisch @pixeljetstream@
-        --
-        -- author: @NVX@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @87@
-        module Graphics.Vulkan.Types.BaseTypes,
-        VkCmdProcessCommandsInfoNVX, VkCmdProcessCommandsInfoNVX',
-        VkCmdReserveSpaceForCommandsInfoNVX,
-        VkCmdReserveSpaceForCommandsInfoNVX',
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkCmdProcessCommandsInfoNVX, VkCmdReserveSpaceForCommandsInfoNVX,
         VkDeviceGeneratedCommandsFeaturesNVX,
-        VkDeviceGeneratedCommandsFeaturesNVX',
-        VkDeviceGeneratedCommandsLimitsNVX,
-        VkDeviceGeneratedCommandsLimitsNVX',
-        module Graphics.Vulkan.Types.Enum.IndexType,
+        VkDeviceGeneratedCommandsLimitsNVX, VkIndexType(..),
         VkIndirectCommandsLayoutCreateInfoNVX,
-        VkIndirectCommandsLayoutCreateInfoNVX',
         VkIndirectCommandsLayoutTokenNVX,
-        VkIndirectCommandsLayoutTokenNVX',
-        module Graphics.Vulkan.Types.Enum.IndirectCommands,
-        VkIndirectCommandsTokenNVX, VkIndirectCommandsTokenNVX',
-        module Graphics.Vulkan.Types.Enum.Object,
-        VkObjectTableCreateInfoNVX, VkObjectTableCreateInfoNVX',
-        VkObjectTableDescriptorSetEntryNVX,
-        VkObjectTableDescriptorSetEntryNVX', VkObjectTableEntryNVX,
-        VkObjectTableEntryNVX', VkObjectTableIndexBufferEntryNVX,
-        VkObjectTableIndexBufferEntryNVX', VkObjectTablePipelineEntryNVX,
-        VkObjectTablePipelineEntryNVX', VkObjectTablePushConstantEntryNVX,
-        VkObjectTablePushConstantEntryNVX',
-        VkObjectTableVertexBufferEntryNVX,
-        VkObjectTableVertexBufferEntryNVX',
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Enum.Shader,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkCmdProcessCommandsNVX, pattern VkCmdProcessCommandsNVX,
-        HS_vkCmdProcessCommandsNVX, PFN_vkCmdProcessCommandsNVX,
-        VkCmdReserveSpaceForCommandsNVX,
+        VkIndirectCommandsLayoutUsageBitmaskNVX(..),
+        VkIndirectCommandsTokenTypeNVX(..),
+        VkIndirectCommandsLayoutUsageFlagBitsNVX(),
+        VkIndirectCommandsLayoutUsageFlagsNVX(),
+        VkIndirectCommandsTokenNVX, VkObjectEntryTypeNVX(..),
+        VkObjectEntryUsageBitmaskNVX(..), VkObjectType(..),
+        VkObjectEntryUsageFlagBitsNVX(), VkObjectEntryUsageFlagsNVX(),
+        VkObjectTableCreateInfoNVX, VkObjectTableDescriptorSetEntryNVX,
+        VkObjectTableEntryNVX, VkObjectTableIndexBufferEntryNVX,
+        VkObjectTablePipelineEntryNVX, VkObjectTablePushConstantEntryNVX,
+        VkObjectTableVertexBufferEntryNVX, VkPipelineBindPoint(..),
+        VkPipelineCacheHeaderVersion(..), VkPipelineCreateBitmask(..),
+        VkPipelineStageBitmask(..), VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..), VkShaderInfoTypeAMD(..),
+        VkShaderStageBitmask(..), VkShaderStageFlagBits(),
+        VkShaderStageFlags(), VkStructureType(..), -- > #include "vk_platform.h"
+                                                   VkCmdProcessCommandsNVX,
+        pattern VkCmdProcessCommandsNVX, HS_vkCmdProcessCommandsNVX,
+        PFN_vkCmdProcessCommandsNVX, VkCmdReserveSpaceForCommandsNVX,
         pattern VkCmdReserveSpaceForCommandsNVX,
         HS_vkCmdReserveSpaceForCommandsNVX,
         PFN_vkCmdReserveSpaceForCommandsNVX,
@@ -77,18 +70,60 @@
         pattern VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX,
         HS_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX,
         PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.InternalAllocationType,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Enum.SystemAllocationScope,
-        module Graphics.Vulkan.Types.Funcpointers,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.AllocationCallbacks,
-        module Graphics.Vulkan.Types.Struct.Cmd,
-        module Graphics.Vulkan.Types.Struct.Device,
-        module Graphics.Vulkan.Types.Struct.IndirectCommands,
-        module Graphics.Vulkan.Types.Struct.ObjectTable,
-        VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION,
+        module Graphics.Vulkan.Marshal, VkInternalAllocationType(..),
+        VkResult(..), VkSystemAllocationScope(..), newVkAllocationFunction,
+        newVkDebugReportCallbackEXT, newVkDebugUtilsMessengerCallbackEXT,
+        newVkFreeFunction, newVkInternalAllocationNotification,
+        newVkInternalFreeNotification, newVkReallocationFunction,
+        newVkVoidFunction, unwrapVkAllocationFunction,
+        unwrapVkDebugReportCallbackEXT,
+        unwrapVkDebugUtilsMessengerCallbackEXT, unwrapVkFreeFunction,
+        unwrapVkInternalAllocationNotification,
+        unwrapVkInternalFreeNotification, unwrapVkReallocationFunction,
+        unwrapVkVoidFunction, HS_vkAllocationFunction,
+        HS_vkDebugReportCallbackEXT, HS_vkDebugUtilsMessengerCallbackEXT,
+        HS_vkFreeFunction, HS_vkInternalAllocationNotification,
+        HS_vkInternalFreeNotification, HS_vkReallocationFunction,
+        HS_vkVoidFunction, PFN_vkAllocationFunction,
+        PFN_vkDebugReportCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT,
+        PFN_vkFreeFunction, PFN_vkInternalAllocationNotification,
+        PFN_vkInternalFreeNotification, PFN_vkReallocationFunction,
+        PFN_vkVoidFunction, VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkAllocationCallbacks, VkDeviceCreateInfo, VkDeviceEventInfoEXT,
+        VkDeviceGroupBindSparseInfo, VkDeviceGroupBindSparseInfoKHR,
+        VkDeviceGroupCommandBufferBeginInfo,
+        VkDeviceGroupCommandBufferBeginInfoKHR,
+        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfoKHR,
+        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
+        VkDeviceGroupRenderPassBeginInfo,
+        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
+        VkDeviceGroupSubmitInfoKHR, VkDeviceGroupSwapchainCreateInfoKHR,
+        VkDeviceQueueCreateInfo, VkDeviceQueueGlobalPriorityCreateInfoEXT,
+        VkDeviceQueueInfo2, VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION,
         pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION,
         VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME,
         pattern VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME,
@@ -108,8 +143,7 @@
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Proc                      (VulkanProc (..))
 import Graphics.Vulkan.Types.BaseTypes
-import Graphics.Vulkan.Types.Enum.AccessFlags            (VkAccessBitmask (..),
-                                                          VkAccessFlagBits)
+import Graphics.Vulkan.Types.Enum.AccessFlags            (VkAccessBitmask (..))
 import Graphics.Vulkan.Types.Enum.IndexType
 import Graphics.Vulkan.Types.Enum.IndirectCommands
 import Graphics.Vulkan.Types.Enum.InternalAllocationType
@@ -131,7 +165,8 @@
 
 pattern VkCmdProcessCommandsNVX <-
         (is_VkCmdProcessCommandsNVX -> True)
-  where VkCmdProcessCommandsNVX = _VkCmdProcessCommandsNVX
+  where
+    VkCmdProcessCommandsNVX = _VkCmdProcessCommandsNVX
 
 {-# INLINE _VkCmdProcessCommandsNVX #-}
 
@@ -173,24 +208,24 @@
                PFN_vkCmdProcessCommandsNVX -> HS_vkCmdProcessCommandsNVX
 
 instance VulkanProc "vkCmdProcessCommandsNVX" where
-        type VkProcType "vkCmdProcessCommandsNVX" =
-             HS_vkCmdProcessCommandsNVX
-        vkProcSymbol = _VkCmdProcessCommandsNVX
+    type VkProcType "vkCmdProcessCommandsNVX" =
+         HS_vkCmdProcessCommandsNVX
+    vkProcSymbol = _VkCmdProcessCommandsNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdProcessCommandsNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdProcessCommandsNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdProcessCommandsNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdProcessCommandsNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCmdReserveSpaceForCommandsNVX :: CString
 
 pattern VkCmdReserveSpaceForCommandsNVX <-
         (is_VkCmdReserveSpaceForCommandsNVX -> True)
-  where VkCmdReserveSpaceForCommandsNVX
-          = _VkCmdReserveSpaceForCommandsNVX
+  where
+    VkCmdReserveSpaceForCommandsNVX = _VkCmdReserveSpaceForCommandsNVX
 
 {-# INLINE _VkCmdReserveSpaceForCommandsNVX #-}
 
@@ -236,24 +271,25 @@
                  HS_vkCmdReserveSpaceForCommandsNVX
 
 instance VulkanProc "vkCmdReserveSpaceForCommandsNVX" where
-        type VkProcType "vkCmdReserveSpaceForCommandsNVX" =
-             HS_vkCmdReserveSpaceForCommandsNVX
-        vkProcSymbol = _VkCmdReserveSpaceForCommandsNVX
+    type VkProcType "vkCmdReserveSpaceForCommandsNVX" =
+         HS_vkCmdReserveSpaceForCommandsNVX
+    vkProcSymbol = _VkCmdReserveSpaceForCommandsNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdReserveSpaceForCommandsNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdReserveSpaceForCommandsNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdReserveSpaceForCommandsNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdReserveSpaceForCommandsNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCreateIndirectCommandsLayoutNVX :: CString
 
 pattern VkCreateIndirectCommandsLayoutNVX <-
         (is_VkCreateIndirectCommandsLayoutNVX -> True)
-  where VkCreateIndirectCommandsLayoutNVX
-          = _VkCreateIndirectCommandsLayoutNVX
+  where
+    VkCreateIndirectCommandsLayoutNVX
+      = _VkCreateIndirectCommandsLayoutNVX
 
 {-# INLINE _VkCreateIndirectCommandsLayoutNVX #-}
 
@@ -306,25 +342,26 @@
                  HS_vkCreateIndirectCommandsLayoutNVX
 
 instance VulkanProc "vkCreateIndirectCommandsLayoutNVX" where
-        type VkProcType "vkCreateIndirectCommandsLayoutNVX" =
-             HS_vkCreateIndirectCommandsLayoutNVX
-        vkProcSymbol = _VkCreateIndirectCommandsLayoutNVX
+    type VkProcType "vkCreateIndirectCommandsLayoutNVX" =
+         HS_vkCreateIndirectCommandsLayoutNVX
+    vkProcSymbol = _VkCreateIndirectCommandsLayoutNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkCreateIndirectCommandsLayoutNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkCreateIndirectCommandsLayoutNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateIndirectCommandsLayoutNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateIndirectCommandsLayoutNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDestroyIndirectCommandsLayoutNVX :: CString
 
 pattern VkDestroyIndirectCommandsLayoutNVX <-
         (is_VkDestroyIndirectCommandsLayoutNVX -> True)
-  where VkDestroyIndirectCommandsLayoutNVX
-          = _VkDestroyIndirectCommandsLayoutNVX
+  where
+    VkDestroyIndirectCommandsLayoutNVX
+      = _VkDestroyIndirectCommandsLayoutNVX
 
 {-# INLINE _VkDestroyIndirectCommandsLayoutNVX #-}
 
@@ -369,24 +406,25 @@
                  HS_vkDestroyIndirectCommandsLayoutNVX
 
 instance VulkanProc "vkDestroyIndirectCommandsLayoutNVX" where
-        type VkProcType "vkDestroyIndirectCommandsLayoutNVX" =
-             HS_vkDestroyIndirectCommandsLayoutNVX
-        vkProcSymbol = _VkDestroyIndirectCommandsLayoutNVX
+    type VkProcType "vkDestroyIndirectCommandsLayoutNVX" =
+         HS_vkDestroyIndirectCommandsLayoutNVX
+    vkProcSymbol = _VkDestroyIndirectCommandsLayoutNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkDestroyIndirectCommandsLayoutNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkDestroyIndirectCommandsLayoutNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyIndirectCommandsLayoutNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyIndirectCommandsLayoutNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkCreateObjectTableNVX :: CString
 
 pattern VkCreateObjectTableNVX <-
         (is_VkCreateObjectTableNVX -> True)
-  where VkCreateObjectTableNVX = _VkCreateObjectTableNVX
+  where
+    VkCreateObjectTableNVX = _VkCreateObjectTableNVX
 
 {-# INLINE _VkCreateObjectTableNVX #-}
 
@@ -433,23 +471,24 @@
                PFN_vkCreateObjectTableNVX -> HS_vkCreateObjectTableNVX
 
 instance VulkanProc "vkCreateObjectTableNVX" where
-        type VkProcType "vkCreateObjectTableNVX" =
-             HS_vkCreateObjectTableNVX
-        vkProcSymbol = _VkCreateObjectTableNVX
+    type VkProcType "vkCreateObjectTableNVX" =
+         HS_vkCreateObjectTableNVX
+    vkProcSymbol = _VkCreateObjectTableNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCreateObjectTableNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCreateObjectTableNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCreateObjectTableNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCreateObjectTableNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkDestroyObjectTableNVX :: CString
 
 pattern VkDestroyObjectTableNVX <-
         (is_VkDestroyObjectTableNVX -> True)
-  where VkDestroyObjectTableNVX = _VkDestroyObjectTableNVX
+  where
+    VkDestroyObjectTableNVX = _VkDestroyObjectTableNVX
 
 {-# INLINE _VkDestroyObjectTableNVX #-}
 
@@ -489,22 +528,23 @@
                PFN_vkDestroyObjectTableNVX -> HS_vkDestroyObjectTableNVX
 
 instance VulkanProc "vkDestroyObjectTableNVX" where
-        type VkProcType "vkDestroyObjectTableNVX" =
-             HS_vkDestroyObjectTableNVX
-        vkProcSymbol = _VkDestroyObjectTableNVX
+    type VkProcType "vkDestroyObjectTableNVX" =
+         HS_vkDestroyObjectTableNVX
+    vkProcSymbol = _VkDestroyObjectTableNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkDestroyObjectTableNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkDestroyObjectTableNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkDestroyObjectTableNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkDestroyObjectTableNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkRegisterObjectsNVX :: CString
 
 pattern VkRegisterObjectsNVX <- (is_VkRegisterObjectsNVX -> True)
-  where VkRegisterObjectsNVX = _VkRegisterObjectsNVX
+  where
+    VkRegisterObjectsNVX = _VkRegisterObjectsNVX
 
 {-# INLINE _VkRegisterObjectsNVX #-}
 
@@ -553,22 +593,23 @@
                :: PFN_vkRegisterObjectsNVX -> HS_vkRegisterObjectsNVX
 
 instance VulkanProc "vkRegisterObjectsNVX" where
-        type VkProcType "vkRegisterObjectsNVX" = HS_vkRegisterObjectsNVX
-        vkProcSymbol = _VkRegisterObjectsNVX
+    type VkProcType "vkRegisterObjectsNVX" = HS_vkRegisterObjectsNVX
+    vkProcSymbol = _VkRegisterObjectsNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkRegisterObjectsNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkRegisterObjectsNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkRegisterObjectsNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkRegisterObjectsNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkUnregisterObjectsNVX :: CString
 
 pattern VkUnregisterObjectsNVX <-
         (is_VkUnregisterObjectsNVX -> True)
-  where VkUnregisterObjectsNVX = _VkUnregisterObjectsNVX
+  where
+    VkUnregisterObjectsNVX = _VkUnregisterObjectsNVX
 
 {-# INLINE _VkUnregisterObjectsNVX #-}
 
@@ -617,25 +658,26 @@
                PFN_vkUnregisterObjectsNVX -> HS_vkUnregisterObjectsNVX
 
 instance VulkanProc "vkUnregisterObjectsNVX" where
-        type VkProcType "vkUnregisterObjectsNVX" =
-             HS_vkUnregisterObjectsNVX
-        vkProcSymbol = _VkUnregisterObjectsNVX
+    type VkProcType "vkUnregisterObjectsNVX" =
+         HS_vkUnregisterObjectsNVX
+    vkProcSymbol = _VkUnregisterObjectsNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkUnregisterObjectsNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkUnregisterObjectsNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkUnregisterObjectsNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkUnregisterObjectsNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX ::
         CString
 
 pattern VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX <-
         (is_VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX -> True)
-  where VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
-          = _VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+  where
+    VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+      = _VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 
 {-# INLINE _VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX #-}
 
@@ -685,19 +727,19 @@
 instance VulkanProc
            "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"
          where
-        type VkProcType "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"
-             = HS_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
-        vkProcSymbol = _VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+    type VkProcType "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"
+         = HS_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
+    vkProcSymbol = _VkGetPhysicalDeviceGeneratedCommandsPropertiesNVX
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceGeneratedCommandsPropertiesNVXSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -710,8 +752,9 @@
 
 pattern VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME <-
         (is_VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME -> True)
-  where VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
-          = _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
+  where
+    VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
+      = _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME
 
 {-# INLINE _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NVX_multiview_per_view_attributes.hs b/src-gen/Graphics/Vulkan/Ext/VK_NVX_multiview_per_view_attributes.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NVX_multiview_per_view_attributes.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NVX_multiview_per_view_attributes.hs
@@ -22,18 +22,13 @@
         --
 
         -- ** Required extensions: 'VK_KHR_multiview'.
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.BaseTypes, VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits',
+        module Graphics.Vulkan.Marshal, VkBool32(..), VkDeviceSize(..),
+        VkFlags(..), VkSampleMask(..), VkPhysicalDeviceLimits,
         VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
-        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties',
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2',
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties',
-        module Graphics.Vulkan.Types.Enum.PhysicalDeviceType,
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceSparseProperties, VkPhysicalDeviceType(..),
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION,
         pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION,
@@ -49,18 +44,11 @@
 import Graphics.Vulkan.Types.Enum.PhysicalDeviceType
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Enum.Subpass            (VkSubpassDescriptionBitmask (..),
-                                                      VkSubpassDescriptionFlagBits)
-import Graphics.Vulkan.Types.Struct.PhysicalDevice   (VkPhysicalDeviceLimits,
-                                                      VkPhysicalDeviceLimits',
-                                                      VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
-                                                      VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',
+import Graphics.Vulkan.Types.Enum.Subpass            (VkSubpassDescriptionBitmask (..))
+import Graphics.Vulkan.Types.Struct.PhysicalDevice   (VkPhysicalDeviceLimits, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
                                                       VkPhysicalDeviceProperties,
-                                                      VkPhysicalDeviceProperties',
                                                       VkPhysicalDeviceProperties2,
-                                                      VkPhysicalDeviceProperties2',
-                                                      VkPhysicalDeviceSparseProperties,
-                                                      VkPhysicalDeviceSparseProperties')
+                                                      VkPhysicalDeviceSparseProperties)
 
 pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -74,8 +62,9 @@
 
 pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME <-
         (is_VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME -> True)
-  where VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
-          = _VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
+  where
+    VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
+      = _VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME
 
 {-# INLINE _VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_clip_space_w_scaling.hs
@@ -10,32 +10,83 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_NV_clip_space_w_scaling
-       (-- * Vulkan extension: @VK_NV_clip_space_w_scaling@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Eric Werness @ewerness-nv@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @88@
-        module Graphics.Vulkan.Types.BaseTypes, VkExtent2D, VkExtent2D',
-        VkOffset2D, VkOffset2D', module Graphics.Vulkan.Types.Bitmasks,
-        VkPipelineViewportStateCreateInfo,
-        VkPipelineViewportStateCreateInfo',
-        VkPipelineViewportWScalingStateCreateInfoNV,
-        VkPipelineViewportWScalingStateCreateInfoNV', VkRect2D, VkRect2D',
-        module Graphics.Vulkan.Types.Enum.StructureType, VkViewport,
-        VkViewport', VkViewportWScalingNV, VkViewportWScalingNV',
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkExtent2D, VkOffset2D, VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkPipelineViewportStateCreateInfo,
+        VkPipelineViewportWScalingStateCreateInfoNV, VkRect2D,
+        VkStructureType(..), VkViewport, VkViewportWScalingNV,
         -- > #include "vk_platform.h"
         VkCmdSetViewportWScalingNV, pattern VkCmdSetViewportWScalingNV,
         HS_vkCmdSetViewportWScalingNV, PFN_vkCmdSetViewportWScalingNV,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Viewport,
-        VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION,
+        VkBuffer, VkBufferView, VkBufferView_T(), VkBuffer_T(),
+        VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkViewportSwizzleNV, VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION,
         pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION,
         VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME,
         pattern VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME,
@@ -50,20 +101,19 @@
 import Graphics.Vulkan.Types.Enum.DynamicState  (VkDynamicState (..))
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
-import Graphics.Vulkan.Types.Struct.Extent      (VkExtent2D, VkExtent2D')
-import Graphics.Vulkan.Types.Struct.Offset      (VkOffset2D, VkOffset2D')
+import Graphics.Vulkan.Types.Struct.Extent      (VkExtent2D)
+import Graphics.Vulkan.Types.Struct.Offset      (VkOffset2D)
 import Graphics.Vulkan.Types.Struct.Pipeline    (VkPipelineViewportStateCreateInfo,
-                                                 VkPipelineViewportStateCreateInfo',
-                                                 VkPipelineViewportWScalingStateCreateInfoNV,
-                                                 VkPipelineViewportWScalingStateCreateInfoNV')
-import Graphics.Vulkan.Types.Struct.Rect        (VkRect2D, VkRect2D')
+                                                 VkPipelineViewportWScalingStateCreateInfoNV)
+import Graphics.Vulkan.Types.Struct.Rect        (VkRect2D)
 import Graphics.Vulkan.Types.Struct.Viewport
 
 pattern VkCmdSetViewportWScalingNV :: CString
 
 pattern VkCmdSetViewportWScalingNV <-
         (is_VkCmdSetViewportWScalingNV -> True)
-  where VkCmdSetViewportWScalingNV = _VkCmdSetViewportWScalingNV
+  where
+    VkCmdSetViewportWScalingNV = _VkCmdSetViewportWScalingNV
 
 {-# INLINE _VkCmdSetViewportWScalingNV #-}
 
@@ -110,17 +160,17 @@
                PFN_vkCmdSetViewportWScalingNV -> HS_vkCmdSetViewportWScalingNV
 
 instance VulkanProc "vkCmdSetViewportWScalingNV" where
-        type VkProcType "vkCmdSetViewportWScalingNV" =
-             HS_vkCmdSetViewportWScalingNV
-        vkProcSymbol = _VkCmdSetViewportWScalingNV
+    type VkProcType "vkCmdSetViewportWScalingNV" =
+         HS_vkCmdSetViewportWScalingNV
+    vkProcSymbol = _VkCmdSetViewportWScalingNV
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkCmdSetViewportWScalingNVUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkCmdSetViewportWScalingNVUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkCmdSetViewportWScalingNVSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkCmdSetViewportWScalingNVSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -133,8 +183,9 @@
 
 pattern VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME <-
         (is_VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME -> True)
-  where VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME
-          = _VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME
+  where
+    VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME
+      = _VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME
 
 {-# INLINE _VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_dedicated_allocation.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_dedicated_allocation.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_dedicated_allocation.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_dedicated_allocation.hs
@@ -5,34 +5,26 @@
 {-# LANGUAGE Strict          #-}
 {-# LANGUAGE ViewPatterns    #-}
 module Graphics.Vulkan.Ext.VK_NV_dedicated_allocation
-       (-- * Vulkan extension: @VK_NV_dedicated_allocation@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jeff Bolz @jeffbolznv@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @27@
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Buffer, VkBufferCreateInfo,
-        VkBufferCreateInfo', VkDedicatedAllocationBufferCreateInfoNV,
-        VkDedicatedAllocationBufferCreateInfoNV',
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkBufferCreateBitmask(..), VkBufferUsageBitmask(..),
+        VkBufferCreateFlagBits(), VkBufferCreateFlags(),
+        VkBufferUsageFlagBits(), VkBufferUsageFlags(),
+        VkBufferViewCreateFlagBits(..), VkBufferCreateInfo,
+        VkDedicatedAllocationBufferCreateInfoNV,
         VkDedicatedAllocationImageCreateInfoNV,
-        VkDedicatedAllocationImageCreateInfoNV',
-        VkDedicatedAllocationMemoryAllocateInfoNV,
-        VkDedicatedAllocationMemoryAllocateInfoNV', VkExtent3D,
-        VkExtent3D', module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image, VkImageCreateInfo,
-        VkImageCreateInfo', VkMemoryAllocateInfo, VkMemoryAllocateInfo',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION,
+        VkDedicatedAllocationMemoryAllocateInfoNV, VkExtent3D,
+        VkFormat(..), VkFormatFeatureBitmask(..),
+        VkFormatFeatureFlagBits(), VkFormatFeatureFlags(),
+        VkImageAspectBitmask(..), VkImageCreateBitmask(..),
+        VkImageLayout(..), VkImageTiling(..), VkImageType(..),
+        VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkImageCreateInfo,
+        VkMemoryAllocateInfo, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkSharingMode(..),
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION,
         pattern VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION,
         VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME,
         pattern VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME,
@@ -49,20 +41,13 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.SharingMode
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.Buffer              (VkBufferCreateInfo,
-                                                         VkBufferCreateInfo')
+import Graphics.Vulkan.Types.Struct.Buffer              (VkBufferCreateInfo)
 import Graphics.Vulkan.Types.Struct.DedicatedAllocation (VkDedicatedAllocationBufferCreateInfoNV,
-                                                         VkDedicatedAllocationBufferCreateInfoNV',
                                                          VkDedicatedAllocationImageCreateInfoNV,
-                                                         VkDedicatedAllocationImageCreateInfoNV',
-                                                         VkDedicatedAllocationMemoryAllocateInfoNV,
-                                                         VkDedicatedAllocationMemoryAllocateInfoNV')
-import Graphics.Vulkan.Types.Struct.Extent              (VkExtent3D,
-                                                         VkExtent3D')
-import Graphics.Vulkan.Types.Struct.Image               (VkImageCreateInfo,
-                                                         VkImageCreateInfo')
-import Graphics.Vulkan.Types.Struct.Memory              (VkMemoryAllocateInfo,
-                                                         VkMemoryAllocateInfo')
+                                                         VkDedicatedAllocationMemoryAllocateInfoNV)
+import Graphics.Vulkan.Types.Struct.Extent              (VkExtent3D)
+import Graphics.Vulkan.Types.Struct.Image               (VkImageCreateInfo)
+import Graphics.Vulkan.Types.Struct.Memory              (VkMemoryAllocateInfo)
 
 pattern VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION :: (Num a, Eq a) =>
         a
@@ -75,8 +60,9 @@
 
 pattern VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME <-
         (is_VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME -> True)
-  where VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
-          = _VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
+  where
+    VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
+      = _VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME
 
 {-# INLINE _VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory.hs
@@ -5,37 +5,48 @@
 {-# LANGUAGE Strict          #-}
 {-# LANGUAGE ViewPatterns    #-}
 module Graphics.Vulkan.Ext.VK_NV_external_memory
-       (-- * Vulkan extension: @VK_NV_external_memory@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @James Jones @cubanismo@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @57@
-        --
-        -- Required extensions: 'VK_NV_external_memory_capabilities'.
-        --
-
-        -- ** Required extensions: 'VK_NV_external_memory_capabilities'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        VkExportMemoryAllocateInfoNV, VkExportMemoryAllocateInfoNV',
-        VkExtent3D, VkExtent3D',
-        module Graphics.Vulkan.Types.Enum.External,
-        VkExternalMemoryImageCreateInfoNV,
-        VkExternalMemoryImageCreateInfoNV',
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image, VkImageCreateInfo,
-        VkImageCreateInfo', VkMemoryAllocateInfo, VkMemoryAllocateInfo',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.SharingMode,
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VK_NV_EXTERNAL_MEMORY_SPEC_VERSION,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkExportMemoryAllocateInfoNV, VkExtent3D,
+        VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(),
+        VkExternalMemoryImageCreateInfoNV, VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkImageCreateInfo,
+        VkMemoryAllocateInfo, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkSharingMode(..),
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VK_NV_EXTERNAL_MEMORY_SPEC_VERSION,
         pattern VK_NV_EXTERNAL_MEMORY_SPEC_VERSION,
         VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME,
         pattern VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME,
@@ -51,15 +62,11 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.SharingMode
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.Export         (VkExportMemoryAllocateInfoNV,
-                                                    VkExportMemoryAllocateInfoNV')
-import Graphics.Vulkan.Types.Struct.Extent         (VkExtent3D, VkExtent3D')
-import Graphics.Vulkan.Types.Struct.External       (VkExternalMemoryImageCreateInfoNV,
-                                                    VkExternalMemoryImageCreateInfoNV')
-import Graphics.Vulkan.Types.Struct.Image          (VkImageCreateInfo,
-                                                    VkImageCreateInfo')
-import Graphics.Vulkan.Types.Struct.Memory         (VkMemoryAllocateInfo,
-                                                    VkMemoryAllocateInfo')
+import Graphics.Vulkan.Types.Struct.Export         (VkExportMemoryAllocateInfoNV)
+import Graphics.Vulkan.Types.Struct.Extent         (VkExtent3D)
+import Graphics.Vulkan.Types.Struct.External       (VkExternalMemoryImageCreateInfoNV)
+import Graphics.Vulkan.Types.Struct.Image          (VkImageCreateInfo)
+import Graphics.Vulkan.Types.Struct.Memory         (VkMemoryAllocateInfo)
 
 pattern VK_NV_EXTERNAL_MEMORY_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -71,8 +78,9 @@
 
 pattern VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME <-
         (is_VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME -> True)
-  where VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME
-          = _VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME
+  where
+    VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME
+      = _VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME
 
 {-# INLINE _VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_capabilities.hs
@@ -11,37 +11,98 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_NV_external_memory_capabilities
-       (-- * Vulkan extension: @VK_NV_external_memory_capabilities@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @James Jones @cubanismo@
-        --
-        -- author: @NV@
-        --
-        -- type: @instance@
-        --
-        -- Extension number: @56@
-        module Graphics.Vulkan.Types.BaseTypes, VkExtent3D, VkExtent3D',
-        VkExternalImageFormatPropertiesNV,
-        VkExternalImageFormatPropertiesNV',
-        module Graphics.Vulkan.Types.Enum.External,
-        VkImageFormatProperties, VkImageFormatProperties',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkExtent3D, VkExternalImageFormatPropertiesNV,
+        VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(), VkImageFormatProperties,
+        VkSampleCountBitmask(..), VkSampleCountFlagBits(),
+        VkSampleCountFlags(),
         -- > #include "vk_platform.h"
         VkGetPhysicalDeviceExternalImageFormatPropertiesNV,
         pattern VkGetPhysicalDeviceExternalImageFormatPropertiesNV,
         HS_vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
         PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Format,
-        module Graphics.Vulkan.Types.Enum.Image,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
-        module Graphics.Vulkan.Types.Struct.Extent,
-        module Graphics.Vulkan.Types.Struct.External,
-        module Graphics.Vulkan.Types.Struct.Image,
+        module Graphics.Vulkan.Marshal, VkFormat(..),
+        VkFormatFeatureBitmask(..), VkFormatFeatureFlagBits(),
+        VkFormatFeatureFlags(), VkImageAspectBitmask(..),
+        VkImageCreateBitmask(..), VkImageLayout(..), VkImageTiling(..),
+        VkImageType(..), VkImageUsageBitmask(..), VkImageViewType(..),
+        VkImageAspectFlagBits(), VkImageAspectFlags(),
+        VkImageCreateFlagBits(), VkImageCreateFlags(),
+        VkImageUsageFlagBits(), VkImageUsageFlags(), VkResult(..),
+        VkBuffer, VkBufferView, VkBufferView_T(), VkBuffer_T(),
+        VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
+        VkExtent2D, VkExternalBufferProperties,
+        VkExternalBufferPropertiesKHR, VkExternalFenceProperties,
+        VkExternalFencePropertiesKHR, VkExternalImageFormatProperties,
+        VkExternalImageFormatPropertiesKHR,
+        VkExternalMemoryBufferCreateInfo,
+        VkExternalMemoryBufferCreateInfoKHR,
+        VkExternalMemoryImageCreateInfo,
+        VkExternalMemoryImageCreateInfoKHR,
+        VkExternalMemoryImageCreateInfoNV, VkExternalMemoryProperties,
+        VkExternalMemoryPropertiesKHR, VkExternalSemaphoreProperties,
+        VkExternalSemaphorePropertiesKHR, VkImageBlit, VkImageCopy,
+        VkImageCreateInfo, VkImageFormatListCreateInfoKHR,
+        VkImageFormatProperties2, VkImageFormatProperties2KHR,
+        VkImageMemoryBarrier, VkImageMemoryRequirementsInfo2,
+        VkImageMemoryRequirementsInfo2KHR,
+        VkImagePlaneMemoryRequirementsInfo,
+        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
+        VkImageSparseMemoryRequirementsInfo2,
+        VkImageSparseMemoryRequirementsInfo2KHR, VkImageSubresource,
+        VkImageSubresourceLayers, VkImageSubresourceRange,
+        VkImageSwapchainCreateInfoKHR, VkImageViewCreateInfo,
+        VkImageViewUsageCreateInfo, VkImageViewUsageCreateInfoKHR,
         VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION,
         pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION,
         VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
@@ -66,8 +127,9 @@
 
 pattern VkGetPhysicalDeviceExternalImageFormatPropertiesNV <-
         (is_VkGetPhysicalDeviceExternalImageFormatPropertiesNV -> True)
-  where VkGetPhysicalDeviceExternalImageFormatPropertiesNV
-          = _VkGetPhysicalDeviceExternalImageFormatPropertiesNV
+  where
+    VkGetPhysicalDeviceExternalImageFormatPropertiesNV
+      = _VkGetPhysicalDeviceExternalImageFormatPropertiesNV
 
 {-# INLINE _VkGetPhysicalDeviceExternalImageFormatPropertiesNV #-}
 
@@ -137,20 +199,20 @@
 instance VulkanProc
            "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"
          where
-        type VkProcType
-               "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"
-             = HS_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
-        vkProcSymbol = _VkGetPhysicalDeviceExternalImageFormatPropertiesNV
+    type VkProcType
+           "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"
+         = HS_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
+    vkProcSymbol = _VkGetPhysicalDeviceExternalImageFormatPropertiesNV
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe
-          = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe
+      = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe
-          = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe
+      = unwrapVkGetPhysicalDeviceExternalImageFormatPropertiesNVSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -164,8 +226,9 @@
 
 pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME <-
         (is_VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME -> True)
-  where VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
-          = _VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
+  where
+    VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
+      = _VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
 
 {-# INLINE _VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_external_memory_win32.hs
@@ -11,37 +11,65 @@
 {-# LANGUAGE TypeFamilies             #-}
 {-# LANGUAGE ViewPatterns             #-}
 module Graphics.Vulkan.Ext.VK_NV_external_memory_win32
-       (-- * Vulkan extension: @VK_NV_external_memory_win32@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @James Jones @cubanismo@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- platform: @win32@
-        --
-        -- Extension number: @58@
-        --
-        -- Required extensions: 'VK_NV_external_memory'.
-        --
-
-        -- ** Required extensions: 'VK_NV_external_memory'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        VkExportMemoryWin32HandleInfoNV, VkExportMemoryWin32HandleInfoNV',
-        module Graphics.Vulkan.Types.Enum.External,
-        VkImportMemoryWin32HandleInfoNV, VkImportMemoryWin32HandleInfoNV',
-        VkMemoryAllocateInfo, VkMemoryAllocateInfo',
-        module Graphics.Vulkan.Types.Enum.StructureType,
-        -- > #include "vk_platform.h"
-        VkGetMemoryWin32HandleNV, pattern VkGetMemoryWin32HandleNV,
-        HS_vkGetMemoryWin32HandleNV, PFN_vkGetMemoryWin32HandleNV,
-        module Graphics.Vulkan.Marshal,
-        module Graphics.Vulkan.Types.Enum.Result,
-        module Graphics.Vulkan.Types.Handles,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkExportMemoryWin32HandleInfoNV, VkExternalFenceFeatureBitmask(..),
+        VkExternalFenceHandleTypeBitmask(..),
+        VkExternalMemoryFeatureBitmask(..),
+        VkExternalMemoryFeatureBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmaskNV(..),
+        VkExternalMemoryHandleTypeBitmask(..),
+        VkExternalSemaphoreFeatureBitmask(..),
+        VkExternalSemaphoreHandleTypeBitmask(..),
+        VkExternalFenceFeatureFlagBits(),
+        VkExternalFenceFeatureFlagBitsKHR(..),
+        VkExternalFenceFeatureFlags(), VkExternalFenceHandleTypeFlagBits(),
+        VkExternalFenceHandleTypeFlagBitsKHR(..),
+        VkExternalFenceHandleTypeFlags(),
+        VkExternalMemoryFeatureFlagBits(),
+        VkExternalMemoryFeatureFlagBitsKHR(..),
+        VkExternalMemoryFeatureFlagBitsNV(),
+        VkExternalMemoryFeatureFlags(), VkExternalMemoryFeatureFlagsNV(),
+        VkExternalMemoryHandleTypeFlagBits(),
+        VkExternalMemoryHandleTypeFlagBitsKHR(..),
+        VkExternalMemoryHandleTypeFlagBitsNV(),
+        VkExternalMemoryHandleTypeFlags(),
+        VkExternalMemoryHandleTypeFlagsNV(),
+        VkExternalSemaphoreFeatureFlagBits(),
+        VkExternalSemaphoreFeatureFlagBitsKHR(..),
+        VkExternalSemaphoreFeatureFlags(),
+        VkExternalSemaphoreHandleTypeFlagBits(),
+        VkExternalSemaphoreHandleTypeFlagBitsKHR(..),
+        VkExternalSemaphoreHandleTypeFlags(),
+        VkImportMemoryWin32HandleInfoNV, VkMemoryAllocateInfo,
+        VkStructureType(..), -- > #include "vk_platform.h"
+                             VkGetMemoryWin32HandleNV,
+        pattern VkGetMemoryWin32HandleNV, HS_vkGetMemoryWin32HandleNV,
+        PFN_vkGetMemoryWin32HandleNV, module Graphics.Vulkan.Marshal,
+        VkResult(..), VkBuffer, VkBufferView, VkBufferView_T(),
+        VkBuffer_T(), VkCommandBuffer, VkCommandBuffer_T(), VkCommandPool,
+        VkCommandPool_T(), VkDebugReportCallbackEXT,
+        VkDebugReportCallbackEXT_T(), VkDebugUtilsMessengerEXT,
+        VkDebugUtilsMessengerEXT_T(), VkDescriptorPool,
+        VkDescriptorPool_T(), VkDescriptorSet, VkDescriptorSetLayout,
+        VkDescriptorSetLayout_T(), VkDescriptorSet_T(),
+        VkDescriptorUpdateTemplate, VkDescriptorUpdateTemplateKHR,
+        VkDescriptorUpdateTemplateKHR_T(), VkDescriptorUpdateTemplate_T(),
+        VkDevice, VkDeviceMemory, VkDeviceMemory_T(), VkDevice_T(),
+        VkDisplayKHR, VkDisplayKHR_T(), VkDisplayModeKHR,
+        VkDisplayModeKHR_T(), VkEvent, VkEvent_T(), VkFence, VkFence_T(),
+        VkFramebuffer, VkFramebuffer_T(), VkImage, VkImageView,
+        VkImageView_T(), VkImage_T(), VkIndirectCommandsLayoutNVX,
+        VkIndirectCommandsLayoutNVX_T(), VkInstance, VkInstance_T(),
+        VkObjectTableNVX, VkObjectTableNVX_T(), VkPhysicalDevice,
+        VkPhysicalDevice_T(), VkPipeline, VkPipelineCache,
+        VkPipelineCache_T(), VkPipelineLayout, VkPipelineLayout_T(),
+        VkPipeline_T(), VkQueryPool, VkQueryPool_T(), VkQueue, VkQueue_T(),
+        VkRenderPass, VkRenderPass_T(), VkSampler,
+        VkSamplerYcbcrConversion, VkSamplerYcbcrConversionKHR,
+        VkSamplerYcbcrConversionKHR_T(), VkSamplerYcbcrConversion_T(),
+        VkSampler_T(), VkSemaphore, VkSemaphore_T(), VkShaderModule,
+        VkShaderModule_T(), VkSurfaceKHR, VkSurfaceKHR_T(), VkSwapchainKHR,
+        VkSwapchainKHR_T(), VkValidationCacheEXT, VkValidationCacheEXT_T(),
         VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION,
         pattern VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION,
         VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME,
@@ -58,18 +86,16 @@
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Handles
 import Graphics.Vulkan.Types.Include                 (HANDLE)
-import Graphics.Vulkan.Types.Struct.Memory           (VkMemoryAllocateInfo,
-                                                      VkMemoryAllocateInfo')
+import Graphics.Vulkan.Types.Struct.Memory           (VkMemoryAllocateInfo)
 import Graphics.Vulkan.Types.Struct.PlatformWin32Khr (VkExportMemoryWin32HandleInfoNV,
-                                                      VkExportMemoryWin32HandleInfoNV',
-                                                      VkImportMemoryWin32HandleInfoNV,
-                                                      VkImportMemoryWin32HandleInfoNV')
+                                                      VkImportMemoryWin32HandleInfoNV)
 
 pattern VkGetMemoryWin32HandleNV :: CString
 
 pattern VkGetMemoryWin32HandleNV <-
         (is_VkGetMemoryWin32HandleNV -> True)
-  where VkGetMemoryWin32HandleNV = _VkGetMemoryWin32HandleNV
+  where
+    VkGetMemoryWin32HandleNV = _VkGetMemoryWin32HandleNV
 
 {-# INLINE _VkGetMemoryWin32HandleNV #-}
 
@@ -117,17 +143,17 @@
                PFN_vkGetMemoryWin32HandleNV -> HS_vkGetMemoryWin32HandleNV
 
 instance VulkanProc "vkGetMemoryWin32HandleNV" where
-        type VkProcType "vkGetMemoryWin32HandleNV" =
-             HS_vkGetMemoryWin32HandleNV
-        vkProcSymbol = _VkGetMemoryWin32HandleNV
+    type VkProcType "vkGetMemoryWin32HandleNV" =
+         HS_vkGetMemoryWin32HandleNV
+    vkProcSymbol = _VkGetMemoryWin32HandleNV
 
-        {-# INLINE vkProcSymbol #-}
-        unwrapVkProcPtrUnsafe = unwrapVkGetMemoryWin32HandleNVUnsafe
+    {-# INLINE vkProcSymbol #-}
+    unwrapVkProcPtrUnsafe = unwrapVkGetMemoryWin32HandleNVUnsafe
 
-        {-# INLINE unwrapVkProcPtrUnsafe #-}
-        unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandleNVSafe
+    {-# INLINE unwrapVkProcPtrUnsafe #-}
+    unwrapVkProcPtrSafe = unwrapVkGetMemoryWin32HandleNVSafe
 
-        {-# INLINE unwrapVkProcPtrSafe #-}
+    {-# INLINE unwrapVkProcPtrSafe #-}
 
 pattern VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -140,8 +166,9 @@
 
 pattern VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME <-
         (is_VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME -> True)
-  where VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
-          = _VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
+  where
+    VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
+      = _VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME
 
 {-# INLINE _VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_fill_rectangle.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_fill_rectangle.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_fill_rectangle.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_fill_rectangle.hs
@@ -37,8 +37,9 @@
 
 pattern VK_NV_FILL_RECTANGLE_EXTENSION_NAME <-
         (is_VK_NV_FILL_RECTANGLE_EXTENSION_NAME -> True)
-  where VK_NV_FILL_RECTANGLE_EXTENSION_NAME
-          = _VK_NV_FILL_RECTANGLE_EXTENSION_NAME
+  where
+    VK_NV_FILL_RECTANGLE_EXTENSION_NAME
+      = _VK_NV_FILL_RECTANGLE_EXTENSION_NAME
 
 {-# INLINE _VK_NV_FILL_RECTANGLE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_fragment_coverage_to_color.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_fragment_coverage_to_color.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_fragment_coverage_to_color.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_fragment_coverage_to_color.hs
@@ -5,26 +5,54 @@
 {-# LANGUAGE Strict          #-}
 {-# LANGUAGE ViewPatterns    #-}
 module Graphics.Vulkan.Ext.VK_NV_fragment_coverage_to_color
-       (-- * Vulkan extension: @VK_NV_fragment_coverage_to_color@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jeff Bolz @jeffbolznv@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @150@
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Bitmasks,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkAndroidSurfaceCreateFlagsKHR(..), VkBufferViewCreateFlags(..),
+        VkCommandPoolTrimFlags(..), VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
         VkPipelineCoverageToColorStateCreateInfoNV,
-        VkPipelineCoverageToColorStateCreateInfoNV',
-        VkPipelineMultisampleStateCreateInfo,
-        VkPipelineMultisampleStateCreateInfo',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPipelineMultisampleStateCreateInfo, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION,
         pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION,
@@ -39,9 +67,7 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Struct.Pipeline       (VkPipelineCoverageToColorStateCreateInfoNV,
-                                                    VkPipelineCoverageToColorStateCreateInfoNV',
-                                                    VkPipelineMultisampleStateCreateInfo,
-                                                    VkPipelineMultisampleStateCreateInfo')
+                                                    VkPipelineMultisampleStateCreateInfo)
 
 pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -54,8 +80,9 @@
 
 pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME <-
         (is_VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME -> True)
-  where VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
-          = _VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
+  where
+    VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
+      = _VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME
 
 {-# INLINE _VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_framebuffer_mixed_samples.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_framebuffer_mixed_samples.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_framebuffer_mixed_samples.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_framebuffer_mixed_samples.hs
@@ -5,27 +5,55 @@
 {-# LANGUAGE Strict          #-}
 {-# LANGUAGE ViewPatterns    #-}
 module Graphics.Vulkan.Ext.VK_NV_framebuffer_mixed_samples
-       (-- * Vulkan extension: @VK_NV_framebuffer_mixed_samples@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Jeff Bolz @jeffbolznv@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- Extension number: @153@
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.CoverageModulationModeNV,
-        module Graphics.Vulkan.Types.Bitmasks,
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkCoverageModulationModeNV(..), VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..),
         VkPipelineCoverageModulationStateCreateInfoNV,
-        VkPipelineCoverageModulationStateCreateInfoNV',
-        VkPipelineMultisampleStateCreateInfo,
-        VkPipelineMultisampleStateCreateInfo',
-        module Graphics.Vulkan.Types.Enum.SampleCountFlags,
-        module Graphics.Vulkan.Types.Enum.StructureType,
+        VkPipelineMultisampleStateCreateInfo, VkSampleCountBitmask(..),
+        VkSampleCountFlagBits(), VkSampleCountFlags(), VkStructureType(..),
         -- > #include "vk_platform.h"
         VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION,
         pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION,
@@ -41,9 +69,7 @@
 import Graphics.Vulkan.Types.Enum.SampleCountFlags
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Struct.Pipeline               (VkPipelineCoverageModulationStateCreateInfoNV,
-                                                            VkPipelineCoverageModulationStateCreateInfoNV',
-                                                            VkPipelineMultisampleStateCreateInfo,
-                                                            VkPipelineMultisampleStateCreateInfo')
+                                                            VkPipelineMultisampleStateCreateInfo)
 
 pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -56,8 +82,9 @@
 
 pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME <-
         (is_VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME -> True)
-  where VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME
-          = _VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME
+  where
+    VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME
+      = _VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME
 
 {-# INLINE _VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_geometry_shader_passthrough.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_geometry_shader_passthrough.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_geometry_shader_passthrough.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_geometry_shader_passthrough.hs
@@ -36,8 +36,9 @@
 
 pattern VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME <-
         (is_VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME -> True)
-  where VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
-          = _VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
+  where
+    VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
+      = _VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME
 
 {-# INLINE _VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_glsl_shader.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_glsl_shader.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_glsl_shader.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_glsl_shader.hs
@@ -37,8 +37,9 @@
 
 pattern VK_NV_GLSL_SHADER_EXTENSION_NAME <-
         (is_VK_NV_GLSL_SHADER_EXTENSION_NAME -> True)
-  where VK_NV_GLSL_SHADER_EXTENSION_NAME
-          = _VK_NV_GLSL_SHADER_EXTENSION_NAME
+  where
+    VK_NV_GLSL_SHADER_EXTENSION_NAME
+      = _VK_NV_GLSL_SHADER_EXTENSION_NAME
 
 {-# INLINE _VK_NV_GLSL_SHADER_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_sample_mask_override_coverage.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_sample_mask_override_coverage.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_sample_mask_override_coverage.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_sample_mask_override_coverage.hs
@@ -37,8 +37,9 @@
 
 pattern VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME <-
         (is_VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME -> True)
-  where VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
-          = _VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
+  where
+    VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
+      = _VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME
 
 {-# INLINE _VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_shader_subgroup_partitioned.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_shader_subgroup_partitioned.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_shader_subgroup_partitioned.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_shader_subgroup_partitioned.hs
@@ -25,8 +25,7 @@
        where
 import GHC.Ptr                                         (Ptr (..))
 import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags (VkSubgroupFeatureBitmask (..),
-                                                        VkSubgroupFeatureFlagBits)
+import Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags (VkSubgroupFeatureBitmask (..))
 
 pattern VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION ::
         (Num a, Eq a) => a
@@ -39,8 +38,9 @@
 
 pattern VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME <-
         (is_VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME -> True)
-  where VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
-          = _VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
+  where
+    VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
+      = _VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME
 
 {-# INLINE _VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_array2.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_array2.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_array2.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_array2.hs
@@ -35,8 +35,9 @@
 
 pattern VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME <-
         (is_VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME -> True)
-  where VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME
-          = _VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME
+  where
+    VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME
+      = _VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME
 
 {-# INLINE _VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_swizzle.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_swizzle.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_swizzle.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_viewport_swizzle.hs
@@ -17,18 +17,56 @@
         -- type: @device@
         --
         -- Extension number: @99@
-        VkExtent2D, VkExtent2D', module Graphics.Vulkan.Types.BaseTypes,
-        VkOffset2D, VkOffset2D', module Graphics.Vulkan.Types.Bitmasks,
-        VkPipelineViewportStateCreateInfo,
-        VkPipelineViewportStateCreateInfo',
-        VkPipelineViewportSwizzleStateCreateInfoNV,
-        VkPipelineViewportSwizzleStateCreateInfoNV', VkRect2D, VkRect2D',
-        module Graphics.Vulkan.Types.Enum.StructureType, VkViewport,
-        VkViewport',
-        module Graphics.Vulkan.Types.Enum.ViewportCoordinateSwizzleNV,
-        VkViewportSwizzleNV, VkViewportSwizzleNV',
-        -- > #include "vk_platform.h"
-        VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION,
+        VkExtent2D, VkBool32(..), VkDeviceSize(..), VkFlags(..),
+        VkSampleMask(..), VkOffset2D, VkAndroidSurfaceCreateFlagsKHR(..),
+        VkBufferViewCreateFlags(..), VkCommandPoolTrimFlags(..),
+        VkCommandPoolTrimFlagsKHR(..),
+        VkDebugUtilsMessengerCallbackDataFlagsEXT(..),
+        VkDebugUtilsMessengerCreateFlagsEXT(..),
+        VkDescriptorPoolResetFlags(..),
+        VkDescriptorUpdateTemplateCreateFlags(..),
+        VkDescriptorUpdateTemplateCreateFlagsKHR(..),
+        VkDeviceCreateFlags(..), VkDisplayModeCreateFlagsKHR(..),
+        VkDisplaySurfaceCreateFlagsKHR(..), VkEventCreateFlags(..),
+        VkExternalFenceFeatureFlagsKHR(..),
+        VkExternalFenceHandleTypeFlagsKHR(..),
+        VkExternalMemoryFeatureFlagsKHR(..),
+        VkExternalMemoryHandleTypeFlagsKHR(..),
+        VkExternalSemaphoreFeatureFlagsKHR(..),
+        VkExternalSemaphoreHandleTypeFlagsKHR(..),
+        VkFenceImportFlagsKHR(..), VkFramebufferCreateFlags(..),
+        VkIOSSurfaceCreateFlagsMVK(..), VkImageViewCreateFlags(..),
+        VkInstanceCreateFlags(..), VkMacOSSurfaceCreateFlagsMVK(..),
+        VkMemoryAllocateFlagsKHR(..), VkMemoryMapFlags(..),
+        VkMirSurfaceCreateFlagsKHR(..), VkPeerMemoryFeatureFlagsKHR(..),
+        VkPipelineCacheCreateFlags(..),
+        VkPipelineColorBlendStateCreateFlags(..),
+        VkPipelineCoverageModulationStateCreateFlagsNV(..),
+        VkPipelineCoverageToColorStateCreateFlagsNV(..),
+        VkPipelineDepthStencilStateCreateFlags(..),
+        VkPipelineDiscardRectangleStateCreateFlagsEXT(..),
+        VkPipelineDynamicStateCreateFlags(..),
+        VkPipelineInputAssemblyStateCreateFlags(..),
+        VkPipelineLayoutCreateFlags(..),
+        VkPipelineMultisampleStateCreateFlags(..),
+        VkPipelineRasterizationConservativeStateCreateFlagsEXT(..),
+        VkPipelineRasterizationStateCreateFlags(..),
+        VkPipelineShaderStageCreateFlags(..),
+        VkPipelineTessellationStateCreateFlags(..),
+        VkPipelineVertexInputStateCreateFlags(..),
+        VkPipelineViewportStateCreateFlags(..),
+        VkPipelineViewportSwizzleStateCreateFlagsNV(..),
+        VkQueryPoolCreateFlags(..), VkRenderPassCreateFlags(..),
+        VkSamplerCreateFlags(..), VkSemaphoreCreateFlags(..),
+        VkSemaphoreImportFlagsKHR(..), VkShaderModuleCreateFlags(..),
+        VkValidationCacheCreateFlagsEXT(..), VkViSurfaceCreateFlagsNN(..),
+        VkWaylandSurfaceCreateFlagsKHR(..),
+        VkWin32SurfaceCreateFlagsKHR(..), VkXcbSurfaceCreateFlagsKHR(..),
+        VkXlibSurfaceCreateFlagsKHR(..), VkPipelineViewportStateCreateInfo,
+        VkPipelineViewportSwizzleStateCreateInfoNV, VkRect2D,
+        VkStructureType(..), VkViewport, VkViewportCoordinateSwizzleNV(..),
+        VkViewportSwizzleNV, -- > #include "vk_platform.h"
+                             VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION,
         pattern VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION,
         VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME,
         pattern VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME,
@@ -40,20 +78,12 @@
 import Graphics.Vulkan.Types.Bitmasks
 import Graphics.Vulkan.Types.Enum.StructureType
 import Graphics.Vulkan.Types.Enum.ViewportCoordinateSwizzleNV
-import Graphics.Vulkan.Types.Struct.Extent                    (VkExtent2D,
-                                                               VkExtent2D')
-import Graphics.Vulkan.Types.Struct.Offset                    (VkOffset2D,
-                                                               VkOffset2D')
+import Graphics.Vulkan.Types.Struct.Extent                    (VkExtent2D)
+import Graphics.Vulkan.Types.Struct.Offset                    (VkOffset2D)
 import Graphics.Vulkan.Types.Struct.Pipeline                  (VkPipelineViewportStateCreateInfo,
-                                                               VkPipelineViewportStateCreateInfo',
-                                                               VkPipelineViewportSwizzleStateCreateInfoNV,
-                                                               VkPipelineViewportSwizzleStateCreateInfoNV')
-import Graphics.Vulkan.Types.Struct.Rect                      (VkRect2D,
-                                                               VkRect2D')
-import Graphics.Vulkan.Types.Struct.Viewport                  (VkViewport,
-                                                               VkViewport',
-                                                               VkViewportSwizzleNV,
-                                                               VkViewportSwizzleNV')
+                                                               VkPipelineViewportSwizzleStateCreateInfoNV)
+import Graphics.Vulkan.Types.Struct.Rect                      (VkRect2D)
+import Graphics.Vulkan.Types.Struct.Viewport                  (VkViewport, VkViewportSwizzleNV)
 
 pattern VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -65,8 +95,9 @@
 
 pattern VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME <-
         (is_VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME -> True)
-  where VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME
-          = _VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME
+  where
+    VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME
+      = _VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME
 
 {-# INLINE _VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Ext/VK_NV_win32_keyed_mutex.hs b/src-gen/Graphics/Vulkan/Ext/VK_NV_win32_keyed_mutex.hs
--- a/src-gen/Graphics/Vulkan/Ext/VK_NV_win32_keyed_mutex.hs
+++ b/src-gen/Graphics/Vulkan/Ext/VK_NV_win32_keyed_mutex.hs
@@ -5,30 +5,24 @@
 {-# LANGUAGE Strict          #-}
 {-# LANGUAGE ViewPatterns    #-}
 module Graphics.Vulkan.Ext.VK_NV_win32_keyed_mutex
-       (-- * Vulkan extension: @VK_NV_win32_keyed_mutex@
-        -- |
-        --
-        -- supported: @vulkan@
-        --
-        -- contact: @Carsten Rohde @crohde@
-        --
-        -- author: @NV@
-        --
-        -- type: @device@
-        --
-        -- platform: @win32@
-        --
-        -- Extension number: @59@
-        --
-        -- Required extensions: 'VK_NV_external_memory_win32'.
-        --
-
-        -- ** Required extensions: 'VK_NV_external_memory_win32'.
-        module Graphics.Vulkan.Types.BaseTypes,
-        module Graphics.Vulkan.Types.Enum.Pipeline,
-        module Graphics.Vulkan.Types.Enum.StructureType, VkSubmitInfo,
-        VkSubmitInfo', VkWin32KeyedMutexAcquireReleaseInfoNV,
-        VkWin32KeyedMutexAcquireReleaseInfoNV',
+       (VkBool32(..), VkDeviceSize(..), VkFlags(..), VkSampleMask(..),
+        VkPipelineBindPoint(..), VkPipelineCacheHeaderVersion(..),
+        VkPipelineCreateBitmask(..), VkPipelineStageBitmask(..),
+        VkPipelineCacheCreateFlagBits(..),
+        VkPipelineColorBlendStateCreateFlagBits(..),
+        VkPipelineCreateFlagBits(), VkPipelineCreateFlags(),
+        VkPipelineDepthStencilStateCreateFlagBits(..),
+        VkPipelineDynamicStateCreateFlagBits(..),
+        VkPipelineInputAssemblyStateCreateFlagBits(..),
+        VkPipelineLayoutCreateFlagBits(..),
+        VkPipelineMultisampleStateCreateFlagBits(..),
+        VkPipelineRasterizationStateCreateFlagBits(..),
+        VkPipelineShaderStageCreateFlagBits(..), VkPipelineStageFlagBits(),
+        VkPipelineStageFlags(),
+        VkPipelineTessellationStateCreateFlagBits(..),
+        VkPipelineVertexInputStateCreateFlagBits(..),
+        VkPipelineViewportStateCreateFlagBits(..), VkStructureType(..),
+        VkSubmitInfo, VkWin32KeyedMutexAcquireReleaseInfoNV,
         -- > #include "vk_platform.h"
         VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION,
         pattern VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION,
@@ -41,10 +35,8 @@
 import Graphics.Vulkan.Types.BaseTypes
 import Graphics.Vulkan.Types.Enum.Pipeline
 import Graphics.Vulkan.Types.Enum.StructureType
-import Graphics.Vulkan.Types.Struct.PlatformWin32Khr (VkWin32KeyedMutexAcquireReleaseInfoNV,
-                                                      VkWin32KeyedMutexAcquireReleaseInfoNV')
-import Graphics.Vulkan.Types.Struct.SubmitInfo       (VkSubmitInfo,
-                                                      VkSubmitInfo')
+import Graphics.Vulkan.Types.Struct.PlatformWin32Khr (VkWin32KeyedMutexAcquireReleaseInfoNV)
+import Graphics.Vulkan.Types.Struct.SubmitInfo       (VkSubmitInfo)
 
 pattern VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION :: (Num a, Eq a) => a
 
@@ -56,8 +48,9 @@
 
 pattern VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME <-
         (is_VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME -> True)
-  where VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME
-          = _VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME
+  where
+    VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME
+      = _VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME
 
 {-# INLINE _VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME #-}
 
diff --git a/src-gen/Graphics/Vulkan/Types/BaseTypes.hs b/src-gen/Graphics/Vulkan/Types/BaseTypes.hs
--- a/src-gen/Graphics/Vulkan/Types/BaseTypes.hs
+++ b/src-gen/Graphics/Vulkan/Types/BaseTypes.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.BaseTypes
@@ -8,55 +6,53 @@
        where
 import Data.Bits               (Bits, FiniteBits)
 import Data.Coerce             (coerce)
-import Data.Data               (Data)
 import Foreign.Storable        (Storable)
-import GHC.Generics            (Generic)
 import Graphics.Vulkan.Marshal (Word32, Word64)
 
 newtype VkBool32 = VkBool32 Word32
-                     deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                               Storable, Real, Data, Generic)
+                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
+                             FiniteBits, Storable)
 
 instance Show VkBool32 where
-        {-# INLINE show #-}
-        show (VkBool32 x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> Word32 -> ShowS)
 
 instance Read VkBool32 where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS Word32)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS Word32)
 
 newtype VkDeviceSize = VkDeviceSize Word64
-                         deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                   Storable, Real, Data, Generic)
+                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
+                                 FiniteBits, Storable)
 
 instance Show VkDeviceSize where
-        {-# INLINE show #-}
-        show (VkDeviceSize x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> Word64 -> ShowS)
 
 instance Read VkDeviceSize where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS Word64)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS Word64)
 
 newtype VkFlags = VkFlags Word32
-                    deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                              Storable, Real, Data, Generic)
+                  deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
+                            FiniteBits, Storable)
 
 instance Show VkFlags where
-        {-# INLINE show #-}
-        show (VkFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> Word32 -> ShowS)
 
 instance Read VkFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS Word32)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS Word32)
 
 newtype VkSampleMask = VkSampleMask Word32
-                         deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                   Storable, Real, Data, Generic)
+                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
+                                 FiniteBits, Storable)
 
 instance Show VkSampleMask where
-        {-# INLINE show #-}
-        show (VkSampleMask x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> Word32 -> ShowS)
 
 instance Read VkSampleMask where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS Word32)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS Word32)
diff --git a/src-gen/Graphics/Vulkan/Types/Bitmasks.hs b/src-gen/Graphics/Vulkan/Types/Bitmasks.hs
--- a/src-gen/Graphics/Vulkan/Types/Bitmasks.hs
+++ b/src-gen/Graphics/Vulkan/Types/Bitmasks.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Bitmasks
@@ -51,729 +49,658 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
 newtype VkAndroidSurfaceCreateFlagsKHR = VkAndroidSurfaceCreateFlagsKHR VkFlags
-                                           deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                     FiniteBits, Storable, Real, Data, Generic)
+                                         deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkAndroidSurfaceCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkAndroidSurfaceCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkAndroidSurfaceCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkBufferViewCreateFlags = VkBufferViewCreateFlags VkFlags
-                                    deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                              FiniteBits, Storable, Real, Data, Generic)
+                                  deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkBufferViewCreateFlags where
-        {-# INLINE show #-}
-        show (VkBufferViewCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkBufferViewCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkCommandPoolTrimFlags = VkCommandPoolTrimFlags VkFlags
-                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                             FiniteBits, Storable, Real, Data, Generic)
+                                 deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkCommandPoolTrimFlags where
-        {-# INLINE show #-}
-        show (VkCommandPoolTrimFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkCommandPoolTrimFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlagsKHR VkFlags
-                                      deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                FiniteBits, Storable, Real, Data, Generic)
+                                    deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkCommandPoolTrimFlagsKHR where
-        {-# INLINE show #-}
-        show (VkCommandPoolTrimFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkCommandPoolTrimFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkDebugUtilsMessengerCallbackDataFlagsEXT = VkDebugUtilsMessengerCallbackDataFlagsEXT VkFlags
-                                                      deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                Integral, Bits, FiniteBits,
-                                                                Storable, Real, Data, Generic)
+                                                    deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                              Storable)
 
 instance Show VkDebugUtilsMessengerCallbackDataFlagsEXT where
-        {-# INLINE show #-}
-        show (VkDebugUtilsMessengerCallbackDataFlagsEXT x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDebugUtilsMessengerCallbackDataFlagsEXT where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkDebugUtilsMessengerCreateFlagsEXT = VkDebugUtilsMessengerCreateFlagsEXT VkFlags
-                                                deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                          Bits, FiniteBits, Storable, Real, Data,
-                                                          Generic)
+                                              deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkDebugUtilsMessengerCreateFlagsEXT where
-        {-# INLINE show #-}
-        show (VkDebugUtilsMessengerCreateFlagsEXT x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDebugUtilsMessengerCreateFlagsEXT where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkDescriptorPoolResetFlags = VkDescriptorPoolResetFlags VkFlags
-                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                 FiniteBits, Storable, Real, Data, Generic)
+                                     deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkDescriptorPoolResetFlags where
-        {-# INLINE show #-}
-        show (VkDescriptorPoolResetFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDescriptorPoolResetFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkDescriptorUpdateTemplateCreateFlags = VkDescriptorUpdateTemplateCreateFlags VkFlags
-                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                            Bits, FiniteBits, Storable, Real, Data,
-                                                            Generic)
+                                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkDescriptorUpdateTemplateCreateFlags where
-        {-# INLINE show #-}
-        show (VkDescriptorUpdateTemplateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDescriptorUpdateTemplateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlagsKHR VkFlags
-                                                     deriving (Eq, Ord, Num, Bounded, Enum,
-                                                               Integral, Bits, FiniteBits, Storable,
-                                                               Real, Data, Generic)
+                                                   deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                             Storable)
 
 instance Show VkDescriptorUpdateTemplateCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkDescriptorUpdateTemplateCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDescriptorUpdateTemplateCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkDeviceCreateFlags = VkDeviceCreateFlags VkFlags
-                                deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                          Storable, Real, Data, Generic)
+                              deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkDeviceCreateFlags where
-        {-# INLINE show #-}
-        show (VkDeviceCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDeviceCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkDisplayModeCreateFlagsKHR = VkDisplayModeCreateFlagsKHR VkFlags
-                                        deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                  FiniteBits, Storable, Real, Data, Generic)
+                                      deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkDisplayModeCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkDisplayModeCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDisplayModeCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkDisplaySurfaceCreateFlagsKHR = VkDisplaySurfaceCreateFlagsKHR VkFlags
-                                           deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                     FiniteBits, Storable, Real, Data, Generic)
+                                         deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkDisplaySurfaceCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkDisplaySurfaceCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDisplaySurfaceCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkEventCreateFlags = VkEventCreateFlags VkFlags
-                               deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                         Storable, Real, Data, Generic)
+                             deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkEventCreateFlags where
-        {-# INLINE show #-}
-        show (VkEventCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkEventCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlagsKHR VkFlags
-                                           deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                     FiniteBits, Storable, Real, Data, Generic)
+                                         deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalFenceFeatureFlagsKHR where
-        {-# INLINE show #-}
-        show (VkExternalFenceFeatureFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalFenceFeatureFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlagsKHR VkFlags
-                                              deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                        FiniteBits, Storable, Real, Data, Generic)
+                                            deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalFenceHandleTypeFlagsKHR where
-        {-# INLINE show #-}
-        show (VkExternalFenceHandleTypeFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalFenceHandleTypeFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlagsKHR VkFlags
-                                            deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                      FiniteBits, Storable, Real, Data, Generic)
+                                          deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalMemoryFeatureFlagsKHR where
-        {-# INLINE show #-}
-        show (VkExternalMemoryFeatureFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalMemoryFeatureFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlagsKHR VkFlags
-                                               deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                         Bits, FiniteBits, Storable, Real, Data,
-                                                         Generic)
+                                             deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalMemoryHandleTypeFlagsKHR where
-        {-# INLINE show #-}
-        show (VkExternalMemoryHandleTypeFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalMemoryHandleTypeFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlagsKHR VkFlags
-                                               deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                         Bits, FiniteBits, Storable, Real, Data,
-                                                         Generic)
+                                             deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalSemaphoreFeatureFlagsKHR where
-        {-# INLINE show #-}
-        show (VkExternalSemaphoreFeatureFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalSemaphoreFeatureFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlagsKHR VkFlags
-                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                            Bits, FiniteBits, Storable, Real, Data,
-                                                            Generic)
+                                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalSemaphoreHandleTypeFlagsKHR where
-        {-# INLINE show #-}
-        show (VkExternalSemaphoreHandleTypeFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalSemaphoreHandleTypeFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkFenceImportFlagsKHR = VkFenceImportFlagsKHR VkFlags
-                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                            Storable, Real, Data, Generic)
+                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkFenceImportFlagsKHR where
-        {-# INLINE show #-}
-        show (VkFenceImportFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkFenceImportFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkFramebufferCreateFlags = VkFramebufferCreateFlags VkFlags
-                                     deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                               FiniteBits, Storable, Real, Data, Generic)
+                                   deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkFramebufferCreateFlags where
-        {-# INLINE show #-}
-        show (VkFramebufferCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkFramebufferCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkIOSSurfaceCreateFlagsMVK = VkIOSSurfaceCreateFlagsMVK VkFlags
-                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                 FiniteBits, Storable, Real, Data, Generic)
+                                     deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkIOSSurfaceCreateFlagsMVK where
-        {-# INLINE show #-}
-        show (VkIOSSurfaceCreateFlagsMVK x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkIOSSurfaceCreateFlagsMVK where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkImageViewCreateFlags = VkImageViewCreateFlags VkFlags
-                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                             FiniteBits, Storable, Real, Data, Generic)
+                                 deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkImageViewCreateFlags where
-        {-# INLINE show #-}
-        show (VkImageViewCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkImageViewCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkInstanceCreateFlags = VkInstanceCreateFlags VkFlags
-                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                            Storable, Real, Data, Generic)
+                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkInstanceCreateFlags where
-        {-# INLINE show #-}
-        show (VkInstanceCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkInstanceCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkMacOSSurfaceCreateFlagsMVK = VkMacOSSurfaceCreateFlagsMVK VkFlags
-                                         deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                   FiniteBits, Storable, Real, Data, Generic)
+                                       deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkMacOSSurfaceCreateFlagsMVK where
-        {-# INLINE show #-}
-        show (VkMacOSSurfaceCreateFlagsMVK x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkMacOSSurfaceCreateFlagsMVK where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlagsKHR VkFlags
-                                     deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                               FiniteBits, Storable, Real, Data, Generic)
+                                   deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkMemoryAllocateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkMemoryAllocateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkMemoryAllocateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkMemoryMapFlags = VkMemoryMapFlags VkFlags
-                             deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                       Storable, Real, Data, Generic)
+                           deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkMemoryMapFlags where
-        {-# INLINE show #-}
-        show (VkMemoryMapFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkMemoryMapFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkMirSurfaceCreateFlagsKHR = VkMirSurfaceCreateFlagsKHR VkFlags
-                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                 FiniteBits, Storable, Real, Data, Generic)
+                                     deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkMirSurfaceCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkMirSurfaceCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkMirSurfaceCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlagsKHR VkFlags
-                                        deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                  FiniteBits, Storable, Real, Data, Generic)
+                                      deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPeerMemoryFeatureFlagsKHR where
-        {-# INLINE show #-}
-        show (VkPeerMemoryFeatureFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPeerMemoryFeatureFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineCacheCreateFlags = VkPipelineCacheCreateFlags VkFlags
-                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                 FiniteBits, Storable, Real, Data, Generic)
+                                     deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineCacheCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineCacheCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineCacheCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineColorBlendStateCreateFlags = VkPipelineColorBlendStateCreateFlags VkFlags
-                                                 deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                           Bits, FiniteBits, Storable, Real, Data,
-                                                           Generic)
+                                               deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineColorBlendStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineColorBlendStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineColorBlendStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineCoverageModulationStateCreateFlagsNV = VkPipelineCoverageModulationStateCreateFlagsNV VkFlags
-                                                           deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                     Integral, Bits, FiniteBits,
-                                                                     Storable, Real, Data, Generic)
+                                                         deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                                   Storable)
 
 instance Show VkPipelineCoverageModulationStateCreateFlagsNV where
-        {-# INLINE show #-}
-        show (VkPipelineCoverageModulationStateCreateFlagsNV x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineCoverageModulationStateCreateFlagsNV where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineCoverageToColorStateCreateFlagsNV = VkPipelineCoverageToColorStateCreateFlagsNV VkFlags
-                                                        deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                  Integral, Bits, FiniteBits,
-                                                                  Storable, Real, Data, Generic)
+                                                      deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                                Storable)
 
 instance Show VkPipelineCoverageToColorStateCreateFlagsNV where
-        {-# INLINE show #-}
-        show (VkPipelineCoverageToColorStateCreateFlagsNV x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineCoverageToColorStateCreateFlagsNV where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineDepthStencilStateCreateFlags = VkPipelineDepthStencilStateCreateFlags VkFlags
-                                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                             Bits, FiniteBits, Storable, Real, Data,
-                                                             Generic)
+                                                 deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                           Storable)
 
 instance Show VkPipelineDepthStencilStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineDepthStencilStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineDepthStencilStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineDiscardRectangleStateCreateFlagsEXT = VkPipelineDiscardRectangleStateCreateFlagsEXT VkFlags
-                                                          deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                    Integral, Bits, FiniteBits,
-                                                                    Storable, Real, Data, Generic)
+                                                        deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                                  Storable)
 
 instance Show VkPipelineDiscardRectangleStateCreateFlagsEXT where
-        {-# INLINE show #-}
-        show (VkPipelineDiscardRectangleStateCreateFlagsEXT x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineDiscardRectangleStateCreateFlagsEXT where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineDynamicStateCreateFlags = VkPipelineDynamicStateCreateFlags VkFlags
-                                              deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                        FiniteBits, Storable, Real, Data, Generic)
+                                            deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineDynamicStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineDynamicStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineDynamicStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineInputAssemblyStateCreateFlags = VkPipelineInputAssemblyStateCreateFlags VkFlags
-                                                    deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                              Bits, FiniteBits, Storable, Real,
-                                                              Data, Generic)
+                                                  deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                            Storable)
 
 instance Show VkPipelineInputAssemblyStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineInputAssemblyStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineInputAssemblyStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineLayoutCreateFlags = VkPipelineLayoutCreateFlags VkFlags
-                                        deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                  FiniteBits, Storable, Real, Data, Generic)
+                                      deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineLayoutCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineLayoutCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineLayoutCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineMultisampleStateCreateFlags = VkPipelineMultisampleStateCreateFlags VkFlags
-                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                            Bits, FiniteBits, Storable, Real, Data,
-                                                            Generic)
+                                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineMultisampleStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineMultisampleStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineMultisampleStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkPipelineRasterizationConservativeStateCreateFlagsEXT VkFlags
-                                                                   deriving (Eq, Ord, Num, Bounded,
-                                                                             Enum, Integral, Bits,
-                                                                             FiniteBits, Storable,
-                                                                             Real, Data, Generic)
+                                                                 deriving (Eq, Ord, Enum, Bits,
+                                                                           FiniteBits, Storable)
 
 instance Show
            VkPipelineRasterizationConservativeStateCreateFlagsEXT
          where
-        {-# INLINE show #-}
-        show (VkPipelineRasterizationConservativeStateCreateFlagsEXT x)
-          = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read
            VkPipelineRasterizationConservativeStateCreateFlagsEXT
          where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineRasterizationStateCreateFlags = VkPipelineRasterizationStateCreateFlags VkFlags
-                                                    deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                              Bits, FiniteBits, Storable, Real,
-                                                              Data, Generic)
+                                                  deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                            Storable)
 
 instance Show VkPipelineRasterizationStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineRasterizationStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineRasterizationStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineShaderStageCreateFlags = VkPipelineShaderStageCreateFlags VkFlags
-                                             deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                       FiniteBits, Storable, Real, Data, Generic)
+                                           deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineShaderStageCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineShaderStageCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineShaderStageCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineTessellationStateCreateFlags = VkPipelineTessellationStateCreateFlags VkFlags
-                                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                             Bits, FiniteBits, Storable, Real, Data,
-                                                             Generic)
+                                                 deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                           Storable)
 
 instance Show VkPipelineTessellationStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineTessellationStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineTessellationStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineVertexInputStateCreateFlags = VkPipelineVertexInputStateCreateFlags VkFlags
-                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                            Bits, FiniteBits, Storable, Real, Data,
-                                                            Generic)
+                                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineVertexInputStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineVertexInputStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineVertexInputStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineViewportStateCreateFlags = VkPipelineViewportStateCreateFlags VkFlags
-                                               deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                         Bits, FiniteBits, Storable, Real, Data,
-                                                         Generic)
+                                             deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineViewportStateCreateFlags where
-        {-# INLINE show #-}
-        show (VkPipelineViewportStateCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineViewportStateCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineViewportSwizzleStateCreateFlagsNV = VkPipelineViewportSwizzleStateCreateFlagsNV VkFlags
-                                                        deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                  Integral, Bits, FiniteBits,
-                                                                  Storable, Real, Data, Generic)
+                                                      deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                                Storable)
 
 instance Show VkPipelineViewportSwizzleStateCreateFlagsNV where
-        {-# INLINE show #-}
-        show (VkPipelineViewportSwizzleStateCreateFlagsNV x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineViewportSwizzleStateCreateFlagsNV where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkQueryPoolCreateFlags = VkQueryPoolCreateFlags VkFlags
-                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                             FiniteBits, Storable, Real, Data, Generic)
+                                 deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkQueryPoolCreateFlags where
-        {-# INLINE show #-}
-        show (VkQueryPoolCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkQueryPoolCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkRenderPassCreateFlags = VkRenderPassCreateFlags VkFlags
-                                    deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                              FiniteBits, Storable, Real, Data, Generic)
+                                  deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkRenderPassCreateFlags where
-        {-# INLINE show #-}
-        show (VkRenderPassCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkRenderPassCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkSamplerCreateFlags = VkSamplerCreateFlags VkFlags
-                                 deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                           Storable, Real, Data, Generic)
+                               deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkSamplerCreateFlags where
-        {-# INLINE show #-}
-        show (VkSamplerCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkSamplerCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkSemaphoreCreateFlags = VkSemaphoreCreateFlags VkFlags
-                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                             FiniteBits, Storable, Real, Data, Generic)
+                                 deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkSemaphoreCreateFlags where
-        {-# INLINE show #-}
-        show (VkSemaphoreCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkSemaphoreCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlagsKHR VkFlags
-                                      deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                FiniteBits, Storable, Real, Data, Generic)
+                                    deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkSemaphoreImportFlagsKHR where
-        {-# INLINE show #-}
-        show (VkSemaphoreImportFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkSemaphoreImportFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkShaderModuleCreateFlags = VkShaderModuleCreateFlags VkFlags
-                                      deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                FiniteBits, Storable, Real, Data, Generic)
+                                    deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkShaderModuleCreateFlags where
-        {-# INLINE show #-}
-        show (VkShaderModuleCreateFlags x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkShaderModuleCreateFlags where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkValidationCacheCreateFlagsEXT = VkValidationCacheCreateFlagsEXT VkFlags
-                                            deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                      FiniteBits, Storable, Real, Data, Generic)
+                                          deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkValidationCacheCreateFlagsEXT where
-        {-# INLINE show #-}
-        show (VkValidationCacheCreateFlagsEXT x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkValidationCacheCreateFlagsEXT where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkViSurfaceCreateFlagsNN = VkViSurfaceCreateFlagsNN VkFlags
-                                     deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                               FiniteBits, Storable, Real, Data, Generic)
+                                   deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkViSurfaceCreateFlagsNN where
-        {-# INLINE show #-}
-        show (VkViSurfaceCreateFlagsNN x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkViSurfaceCreateFlagsNN where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkWaylandSurfaceCreateFlagsKHR = VkWaylandSurfaceCreateFlagsKHR VkFlags
-                                           deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                     FiniteBits, Storable, Real, Data, Generic)
+                                         deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkWaylandSurfaceCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkWaylandSurfaceCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkWaylandSurfaceCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkWin32SurfaceCreateFlagsKHR = VkWin32SurfaceCreateFlagsKHR VkFlags
-                                         deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                   FiniteBits, Storable, Real, Data, Generic)
+                                       deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkWin32SurfaceCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkWin32SurfaceCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkWin32SurfaceCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkXcbSurfaceCreateFlagsKHR = VkXcbSurfaceCreateFlagsKHR VkFlags
-                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                 FiniteBits, Storable, Real, Data, Generic)
+                                     deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkXcbSurfaceCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkXcbSurfaceCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkXcbSurfaceCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkXlibSurfaceCreateFlagsKHR = VkXlibSurfaceCreateFlagsKHR VkFlags
-                                        deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                  FiniteBits, Storable, Real, Data, Generic)
+                                      deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkXlibSurfaceCreateFlagsKHR where
-        {-# INLINE show #-}
-        show (VkXlibSurfaceCreateFlagsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkXlibSurfaceCreateFlagsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/AccessFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/AccessFlags.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/AccessFlags.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/AccessFlags.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -24,9 +22,7 @@
         VkAccessFlags, VkAccessFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -35,7 +31,7 @@
 import Text.Read.Lex                   (Lexeme (..))
 
 newtype VkAccessBitmask (a :: FlagType) = VkAccessBitmask VkFlags
-                                            deriving (Eq, Ord, Storable, Data, Generic)
+                                          deriving (Eq, Ord, Storable)
 
 type VkAccessFlags = VkAccessBitmask FlagMask
 
@@ -53,88 +49,78 @@
 
 deriving instance FiniteBits (VkAccessBitmask FlagMask)
 
-deriving instance Integral (VkAccessBitmask FlagMask)
-
-deriving instance Num (VkAccessBitmask FlagMask)
-
-deriving instance Bounded (VkAccessBitmask FlagMask)
-
-deriving instance Enum (VkAccessBitmask FlagMask)
-
-deriving instance Real (VkAccessBitmask FlagMask)
-
 instance Show (VkAccessBitmask a) where
-        showsPrec _ VK_ACCESS_INDIRECT_COMMAND_READ_BIT
-          = showString "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"
-        showsPrec _ VK_ACCESS_INDEX_READ_BIT
-          = showString "VK_ACCESS_INDEX_READ_BIT"
-        showsPrec _ VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT
-          = showString "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"
-        showsPrec _ VK_ACCESS_UNIFORM_READ_BIT
-          = showString "VK_ACCESS_UNIFORM_READ_BIT"
-        showsPrec _ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT
-          = showString "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"
-        showsPrec _ VK_ACCESS_SHADER_READ_BIT
-          = showString "VK_ACCESS_SHADER_READ_BIT"
-        showsPrec _ VK_ACCESS_SHADER_WRITE_BIT
-          = showString "VK_ACCESS_SHADER_WRITE_BIT"
-        showsPrec _ VK_ACCESS_COLOR_ATTACHMENT_READ_BIT
-          = showString "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"
-        showsPrec _ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT
-          = showString "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"
-        showsPrec _ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
-          = showString "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"
-        showsPrec _ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
-          = showString "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"
-        showsPrec _ VK_ACCESS_TRANSFER_READ_BIT
-          = showString "VK_ACCESS_TRANSFER_READ_BIT"
-        showsPrec _ VK_ACCESS_TRANSFER_WRITE_BIT
-          = showString "VK_ACCESS_TRANSFER_WRITE_BIT"
-        showsPrec _ VK_ACCESS_HOST_READ_BIT
-          = showString "VK_ACCESS_HOST_READ_BIT"
-        showsPrec _ VK_ACCESS_HOST_WRITE_BIT
-          = showString "VK_ACCESS_HOST_WRITE_BIT"
-        showsPrec _ VK_ACCESS_MEMORY_READ_BIT
-          = showString "VK_ACCESS_MEMORY_READ_BIT"
-        showsPrec _ VK_ACCESS_MEMORY_WRITE_BIT
-          = showString "VK_ACCESS_MEMORY_WRITE_BIT"
-        showsPrec p (VkAccessBitmask x)
-          = showParen (p >= 11)
-              (showString "VkAccessBitmask " . showsPrec 11 x)
+    showsPrec _ VK_ACCESS_INDIRECT_COMMAND_READ_BIT
+      = showString "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"
+    showsPrec _ VK_ACCESS_INDEX_READ_BIT
+      = showString "VK_ACCESS_INDEX_READ_BIT"
+    showsPrec _ VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT
+      = showString "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"
+    showsPrec _ VK_ACCESS_UNIFORM_READ_BIT
+      = showString "VK_ACCESS_UNIFORM_READ_BIT"
+    showsPrec _ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT
+      = showString "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"
+    showsPrec _ VK_ACCESS_SHADER_READ_BIT
+      = showString "VK_ACCESS_SHADER_READ_BIT"
+    showsPrec _ VK_ACCESS_SHADER_WRITE_BIT
+      = showString "VK_ACCESS_SHADER_WRITE_BIT"
+    showsPrec _ VK_ACCESS_COLOR_ATTACHMENT_READ_BIT
+      = showString "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"
+    showsPrec _ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT
+      = showString "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"
+    showsPrec _ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
+      = showString "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"
+    showsPrec _ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
+      = showString "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"
+    showsPrec _ VK_ACCESS_TRANSFER_READ_BIT
+      = showString "VK_ACCESS_TRANSFER_READ_BIT"
+    showsPrec _ VK_ACCESS_TRANSFER_WRITE_BIT
+      = showString "VK_ACCESS_TRANSFER_WRITE_BIT"
+    showsPrec _ VK_ACCESS_HOST_READ_BIT
+      = showString "VK_ACCESS_HOST_READ_BIT"
+    showsPrec _ VK_ACCESS_HOST_WRITE_BIT
+      = showString "VK_ACCESS_HOST_WRITE_BIT"
+    showsPrec _ VK_ACCESS_MEMORY_READ_BIT
+      = showString "VK_ACCESS_MEMORY_READ_BIT"
+    showsPrec _ VK_ACCESS_MEMORY_WRITE_BIT
+      = showString "VK_ACCESS_MEMORY_WRITE_BIT"
+    showsPrec p (VkAccessBitmask x)
+      = showParen (p >= 11)
+          (showString "VkAccessBitmask " . showsPrec 11 x)
 
 instance Read (VkAccessBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_ACCESS_INDIRECT_COMMAND_READ_BIT",
-                   pure VK_ACCESS_INDIRECT_COMMAND_READ_BIT),
-                  ("VK_ACCESS_INDEX_READ_BIT", pure VK_ACCESS_INDEX_READ_BIT),
-                  ("VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT",
-                   pure VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT),
-                  ("VK_ACCESS_UNIFORM_READ_BIT", pure VK_ACCESS_UNIFORM_READ_BIT),
-                  ("VK_ACCESS_INPUT_ATTACHMENT_READ_BIT",
-                   pure VK_ACCESS_INPUT_ATTACHMENT_READ_BIT),
-                  ("VK_ACCESS_SHADER_READ_BIT", pure VK_ACCESS_SHADER_READ_BIT),
-                  ("VK_ACCESS_SHADER_WRITE_BIT", pure VK_ACCESS_SHADER_WRITE_BIT),
-                  ("VK_ACCESS_COLOR_ATTACHMENT_READ_BIT",
-                   pure VK_ACCESS_COLOR_ATTACHMENT_READ_BIT),
-                  ("VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT",
-                   pure VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT),
-                  ("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT",
-                   pure VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT),
-                  ("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT",
-                   pure VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT),
-                  ("VK_ACCESS_TRANSFER_READ_BIT", pure VK_ACCESS_TRANSFER_READ_BIT),
-                  ("VK_ACCESS_TRANSFER_WRITE_BIT",
-                   pure VK_ACCESS_TRANSFER_WRITE_BIT),
-                  ("VK_ACCESS_HOST_READ_BIT", pure VK_ACCESS_HOST_READ_BIT),
-                  ("VK_ACCESS_HOST_WRITE_BIT", pure VK_ACCESS_HOST_WRITE_BIT),
-                  ("VK_ACCESS_MEMORY_READ_BIT", pure VK_ACCESS_MEMORY_READ_BIT),
-                  ("VK_ACCESS_MEMORY_WRITE_BIT", pure VK_ACCESS_MEMORY_WRITE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkAccessBitmask") >>
-                      (VkAccessBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_ACCESS_INDIRECT_COMMAND_READ_BIT",
+               pure VK_ACCESS_INDIRECT_COMMAND_READ_BIT),
+              ("VK_ACCESS_INDEX_READ_BIT", pure VK_ACCESS_INDEX_READ_BIT),
+              ("VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT",
+               pure VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT),
+              ("VK_ACCESS_UNIFORM_READ_BIT", pure VK_ACCESS_UNIFORM_READ_BIT),
+              ("VK_ACCESS_INPUT_ATTACHMENT_READ_BIT",
+               pure VK_ACCESS_INPUT_ATTACHMENT_READ_BIT),
+              ("VK_ACCESS_SHADER_READ_BIT", pure VK_ACCESS_SHADER_READ_BIT),
+              ("VK_ACCESS_SHADER_WRITE_BIT", pure VK_ACCESS_SHADER_WRITE_BIT),
+              ("VK_ACCESS_COLOR_ATTACHMENT_READ_BIT",
+               pure VK_ACCESS_COLOR_ATTACHMENT_READ_BIT),
+              ("VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT",
+               pure VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT),
+              ("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT",
+               pure VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT),
+              ("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT",
+               pure VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT),
+              ("VK_ACCESS_TRANSFER_READ_BIT", pure VK_ACCESS_TRANSFER_READ_BIT),
+              ("VK_ACCESS_TRANSFER_WRITE_BIT",
+               pure VK_ACCESS_TRANSFER_WRITE_BIT),
+              ("VK_ACCESS_HOST_READ_BIT", pure VK_ACCESS_HOST_READ_BIT),
+              ("VK_ACCESS_HOST_WRITE_BIT", pure VK_ACCESS_HOST_WRITE_BIT),
+              ("VK_ACCESS_MEMORY_READ_BIT", pure VK_ACCESS_MEMORY_READ_BIT),
+              ("VK_ACCESS_MEMORY_WRITE_BIT", pure VK_ACCESS_MEMORY_WRITE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkAccessBitmask") >>
+                  (VkAccessBitmask <$> step readPrec)))
 
 -- | Controls coherency of indirect command reads
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Attachment.hs b/src-gen/Graphics/Vulkan/Types/Enum/Attachment.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Attachment.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Attachment.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -21,9 +19,7 @@
                             VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_STORE_OP_DONT_CARE))
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -33,7 +29,7 @@
 
 newtype VkAttachmentDescriptionBitmask (a ::
                                           FlagType) = VkAttachmentDescriptionBitmask VkFlags
-                                                        deriving (Eq, Ord, Storable, Data, Generic)
+                                                      deriving (Eq, Ord, Storable)
 
 type VkAttachmentDescriptionFlags =
      VkAttachmentDescriptionBitmask FlagMask
@@ -58,34 +54,23 @@
 deriving instance
          FiniteBits (VkAttachmentDescriptionBitmask FlagMask)
 
-deriving instance
-         Integral (VkAttachmentDescriptionBitmask FlagMask)
-
-deriving instance Num (VkAttachmentDescriptionBitmask FlagMask)
-
-deriving instance Bounded (VkAttachmentDescriptionBitmask FlagMask)
-
-deriving instance Enum (VkAttachmentDescriptionBitmask FlagMask)
-
-deriving instance Real (VkAttachmentDescriptionBitmask FlagMask)
-
 instance Show (VkAttachmentDescriptionBitmask a) where
-        showsPrec _ VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
-          = showString "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"
-        showsPrec p (VkAttachmentDescriptionBitmask x)
-          = showParen (p >= 11)
-              (showString "VkAttachmentDescriptionBitmask " . showsPrec 11 x)
+    showsPrec _ VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
+      = showString "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"
+    showsPrec p (VkAttachmentDescriptionBitmask x)
+      = showParen (p >= 11)
+          (showString "VkAttachmentDescriptionBitmask " . showsPrec 11 x)
 
 instance Read (VkAttachmentDescriptionBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT",
-                   pure VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkAttachmentDescriptionBitmask") >>
-                      (VkAttachmentDescriptionBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT",
+               pure VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkAttachmentDescriptionBitmask") >>
+                  (VkAttachmentDescriptionBitmask <$> step readPrec)))
 
 -- | The attachment may alias physical memory of another attachment in the same render pass
 --
@@ -100,31 +85,31 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAttachmentLoadOp VkAttachmentLoadOp registry at www.khronos.org>
 newtype VkAttachmentLoadOp = VkAttachmentLoadOp Int32
-                               deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                             deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkAttachmentLoadOp where
-        showsPrec _ VK_ATTACHMENT_LOAD_OP_LOAD
-          = showString "VK_ATTACHMENT_LOAD_OP_LOAD"
-        showsPrec _ VK_ATTACHMENT_LOAD_OP_CLEAR
-          = showString "VK_ATTACHMENT_LOAD_OP_CLEAR"
-        showsPrec _ VK_ATTACHMENT_LOAD_OP_DONT_CARE
-          = showString "VK_ATTACHMENT_LOAD_OP_DONT_CARE"
-        showsPrec p (VkAttachmentLoadOp x)
-          = showParen (p >= 11)
-              (showString "VkAttachmentLoadOp " . showsPrec 11 x)
+    showsPrec _ VK_ATTACHMENT_LOAD_OP_LOAD
+      = showString "VK_ATTACHMENT_LOAD_OP_LOAD"
+    showsPrec _ VK_ATTACHMENT_LOAD_OP_CLEAR
+      = showString "VK_ATTACHMENT_LOAD_OP_CLEAR"
+    showsPrec _ VK_ATTACHMENT_LOAD_OP_DONT_CARE
+      = showString "VK_ATTACHMENT_LOAD_OP_DONT_CARE"
+    showsPrec p (VkAttachmentLoadOp x)
+      = showParen (p >= 11)
+          (showString "VkAttachmentLoadOp " . showsPrec 11 x)
 
 instance Read VkAttachmentLoadOp where
-        readPrec
-          = parens
-              (choose
-                 [("VK_ATTACHMENT_LOAD_OP_LOAD", pure VK_ATTACHMENT_LOAD_OP_LOAD),
-                  ("VK_ATTACHMENT_LOAD_OP_CLEAR", pure VK_ATTACHMENT_LOAD_OP_CLEAR),
-                  ("VK_ATTACHMENT_LOAD_OP_DONT_CARE",
-                   pure VK_ATTACHMENT_LOAD_OP_DONT_CARE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkAttachmentLoadOp") >>
-                      (VkAttachmentLoadOp <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_ATTACHMENT_LOAD_OP_LOAD", pure VK_ATTACHMENT_LOAD_OP_LOAD),
+              ("VK_ATTACHMENT_LOAD_OP_CLEAR", pure VK_ATTACHMENT_LOAD_OP_CLEAR),
+              ("VK_ATTACHMENT_LOAD_OP_DONT_CARE",
+               pure VK_ATTACHMENT_LOAD_OP_DONT_CARE)]
+             +++
+             prec 10
+               (expectP (Ident "VkAttachmentLoadOp") >>
+                  (VkAttachmentLoadOp <$> step readPrec)))
 
 pattern VK_ATTACHMENT_LOAD_OP_LOAD :: VkAttachmentLoadOp
 
@@ -142,29 +127,29 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAttachmentStoreOp VkAttachmentStoreOp registry at www.khronos.org>
 newtype VkAttachmentStoreOp = VkAttachmentStoreOp Int32
-                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                              deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkAttachmentStoreOp where
-        showsPrec _ VK_ATTACHMENT_STORE_OP_STORE
-          = showString "VK_ATTACHMENT_STORE_OP_STORE"
-        showsPrec _ VK_ATTACHMENT_STORE_OP_DONT_CARE
-          = showString "VK_ATTACHMENT_STORE_OP_DONT_CARE"
-        showsPrec p (VkAttachmentStoreOp x)
-          = showParen (p >= 11)
-              (showString "VkAttachmentStoreOp " . showsPrec 11 x)
+    showsPrec _ VK_ATTACHMENT_STORE_OP_STORE
+      = showString "VK_ATTACHMENT_STORE_OP_STORE"
+    showsPrec _ VK_ATTACHMENT_STORE_OP_DONT_CARE
+      = showString "VK_ATTACHMENT_STORE_OP_DONT_CARE"
+    showsPrec p (VkAttachmentStoreOp x)
+      = showParen (p >= 11)
+          (showString "VkAttachmentStoreOp " . showsPrec 11 x)
 
 instance Read VkAttachmentStoreOp where
-        readPrec
-          = parens
-              (choose
-                 [("VK_ATTACHMENT_STORE_OP_STORE",
-                   pure VK_ATTACHMENT_STORE_OP_STORE),
-                  ("VK_ATTACHMENT_STORE_OP_DONT_CARE",
-                   pure VK_ATTACHMENT_STORE_OP_DONT_CARE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkAttachmentStoreOp") >>
-                      (VkAttachmentStoreOp <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_ATTACHMENT_STORE_OP_STORE",
+               pure VK_ATTACHMENT_STORE_OP_STORE),
+              ("VK_ATTACHMENT_STORE_OP_DONT_CARE",
+               pure VK_ATTACHMENT_STORE_OP_DONT_CARE)]
+             +++
+             prec 10
+               (expectP (Ident "VkAttachmentStoreOp") >>
+                  (VkAttachmentStoreOp <$> step readPrec)))
 
 pattern VK_ATTACHMENT_STORE_OP_STORE :: VkAttachmentStoreOp
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Blend.hs b/src-gen/Graphics/Vulkan/Types/Enum/Blend.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Blend.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Blend.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -25,9 +23,7 @@
                           VK_BLEND_OVERLAP_UNCORRELATED_EXT, VK_BLEND_OVERLAP_DISJOINT_EXT,
                           VK_BLEND_OVERLAP_CONJOINT_EXT))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -38,88 +34,88 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBlendFactor VkBlendFactor registry at www.khronos.org>
 newtype VkBlendFactor = VkBlendFactor Int32
-                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                        deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkBlendFactor where
-        showsPrec _ VK_BLEND_FACTOR_ZERO
-          = showString "VK_BLEND_FACTOR_ZERO"
-        showsPrec _ VK_BLEND_FACTOR_ONE = showString "VK_BLEND_FACTOR_ONE"
-        showsPrec _ VK_BLEND_FACTOR_SRC_COLOR
-          = showString "VK_BLEND_FACTOR_SRC_COLOR"
-        showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR
-          = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"
-        showsPrec _ VK_BLEND_FACTOR_DST_COLOR
-          = showString "VK_BLEND_FACTOR_DST_COLOR"
-        showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR
-          = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"
-        showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA
-          = showString "VK_BLEND_FACTOR_SRC_ALPHA"
-        showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
-          = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"
-        showsPrec _ VK_BLEND_FACTOR_DST_ALPHA
-          = showString "VK_BLEND_FACTOR_DST_ALPHA"
-        showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA
-          = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"
-        showsPrec _ VK_BLEND_FACTOR_CONSTANT_COLOR
-          = showString "VK_BLEND_FACTOR_CONSTANT_COLOR"
-        showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
-          = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"
-        showsPrec _ VK_BLEND_FACTOR_CONSTANT_ALPHA
-          = showString "VK_BLEND_FACTOR_CONSTANT_ALPHA"
-        showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
-          = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"
-        showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA_SATURATE
-          = showString "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"
-        showsPrec _ VK_BLEND_FACTOR_SRC1_COLOR
-          = showString "VK_BLEND_FACTOR_SRC1_COLOR"
-        showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
-          = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"
-        showsPrec _ VK_BLEND_FACTOR_SRC1_ALPHA
-          = showString "VK_BLEND_FACTOR_SRC1_ALPHA"
-        showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
-          = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"
-        showsPrec p (VkBlendFactor x)
-          = showParen (p >= 11)
-              (showString "VkBlendFactor " . showsPrec 11 x)
+    showsPrec _ VK_BLEND_FACTOR_ZERO
+      = showString "VK_BLEND_FACTOR_ZERO"
+    showsPrec _ VK_BLEND_FACTOR_ONE = showString "VK_BLEND_FACTOR_ONE"
+    showsPrec _ VK_BLEND_FACTOR_SRC_COLOR
+      = showString "VK_BLEND_FACTOR_SRC_COLOR"
+    showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR
+      = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"
+    showsPrec _ VK_BLEND_FACTOR_DST_COLOR
+      = showString "VK_BLEND_FACTOR_DST_COLOR"
+    showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR
+      = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"
+    showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA
+      = showString "VK_BLEND_FACTOR_SRC_ALPHA"
+    showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
+      = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"
+    showsPrec _ VK_BLEND_FACTOR_DST_ALPHA
+      = showString "VK_BLEND_FACTOR_DST_ALPHA"
+    showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA
+      = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"
+    showsPrec _ VK_BLEND_FACTOR_CONSTANT_COLOR
+      = showString "VK_BLEND_FACTOR_CONSTANT_COLOR"
+    showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
+      = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"
+    showsPrec _ VK_BLEND_FACTOR_CONSTANT_ALPHA
+      = showString "VK_BLEND_FACTOR_CONSTANT_ALPHA"
+    showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
+      = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"
+    showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA_SATURATE
+      = showString "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"
+    showsPrec _ VK_BLEND_FACTOR_SRC1_COLOR
+      = showString "VK_BLEND_FACTOR_SRC1_COLOR"
+    showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
+      = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"
+    showsPrec _ VK_BLEND_FACTOR_SRC1_ALPHA
+      = showString "VK_BLEND_FACTOR_SRC1_ALPHA"
+    showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
+      = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"
+    showsPrec p (VkBlendFactor x)
+      = showParen (p >= 11)
+          (showString "VkBlendFactor " . showsPrec 11 x)
 
 instance Read VkBlendFactor where
-        readPrec
-          = parens
-              (choose
-                 [("VK_BLEND_FACTOR_ZERO", pure VK_BLEND_FACTOR_ZERO),
-                  ("VK_BLEND_FACTOR_ONE", pure VK_BLEND_FACTOR_ONE),
-                  ("VK_BLEND_FACTOR_SRC_COLOR", pure VK_BLEND_FACTOR_SRC_COLOR),
-                  ("VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR",
-                   pure VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR),
-                  ("VK_BLEND_FACTOR_DST_COLOR", pure VK_BLEND_FACTOR_DST_COLOR),
-                  ("VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR",
-                   pure VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR),
-                  ("VK_BLEND_FACTOR_SRC_ALPHA", pure VK_BLEND_FACTOR_SRC_ALPHA),
-                  ("VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA",
-                   pure VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA),
-                  ("VK_BLEND_FACTOR_DST_ALPHA", pure VK_BLEND_FACTOR_DST_ALPHA),
-                  ("VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA",
-                   pure VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA),
-                  ("VK_BLEND_FACTOR_CONSTANT_COLOR",
-                   pure VK_BLEND_FACTOR_CONSTANT_COLOR),
-                  ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR",
-                   pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR),
-                  ("VK_BLEND_FACTOR_CONSTANT_ALPHA",
-                   pure VK_BLEND_FACTOR_CONSTANT_ALPHA),
-                  ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA",
-                   pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA),
-                  ("VK_BLEND_FACTOR_SRC_ALPHA_SATURATE",
-                   pure VK_BLEND_FACTOR_SRC_ALPHA_SATURATE),
-                  ("VK_BLEND_FACTOR_SRC1_COLOR", pure VK_BLEND_FACTOR_SRC1_COLOR),
-                  ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR",
-                   pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR),
-                  ("VK_BLEND_FACTOR_SRC1_ALPHA", pure VK_BLEND_FACTOR_SRC1_ALPHA),
-                  ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA",
-                   pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkBlendFactor") >>
-                      (VkBlendFactor <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_BLEND_FACTOR_ZERO", pure VK_BLEND_FACTOR_ZERO),
+              ("VK_BLEND_FACTOR_ONE", pure VK_BLEND_FACTOR_ONE),
+              ("VK_BLEND_FACTOR_SRC_COLOR", pure VK_BLEND_FACTOR_SRC_COLOR),
+              ("VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR",
+               pure VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR),
+              ("VK_BLEND_FACTOR_DST_COLOR", pure VK_BLEND_FACTOR_DST_COLOR),
+              ("VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR",
+               pure VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR),
+              ("VK_BLEND_FACTOR_SRC_ALPHA", pure VK_BLEND_FACTOR_SRC_ALPHA),
+              ("VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA",
+               pure VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA),
+              ("VK_BLEND_FACTOR_DST_ALPHA", pure VK_BLEND_FACTOR_DST_ALPHA),
+              ("VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA",
+               pure VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA),
+              ("VK_BLEND_FACTOR_CONSTANT_COLOR",
+               pure VK_BLEND_FACTOR_CONSTANT_COLOR),
+              ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR",
+               pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR),
+              ("VK_BLEND_FACTOR_CONSTANT_ALPHA",
+               pure VK_BLEND_FACTOR_CONSTANT_ALPHA),
+              ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA",
+               pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA),
+              ("VK_BLEND_FACTOR_SRC_ALPHA_SATURATE",
+               pure VK_BLEND_FACTOR_SRC_ALPHA_SATURATE),
+              ("VK_BLEND_FACTOR_SRC1_COLOR", pure VK_BLEND_FACTOR_SRC1_COLOR),
+              ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR",
+               pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR),
+              ("VK_BLEND_FACTOR_SRC1_ALPHA", pure VK_BLEND_FACTOR_SRC1_ALPHA),
+              ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA",
+               pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA)]
+             +++
+             prec 10
+               (expectP (Ident "VkBlendFactor") >>
+                  (VkBlendFactor <$> step readPrec)))
 
 pattern VK_BLEND_FACTOR_ZERO :: VkBlendFactor
 
@@ -201,32 +197,32 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBlendOp VkBlendOp registry at www.khronos.org>
 newtype VkBlendOp = VkBlendOp Int32
-                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                    deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkBlendOp where
-        showsPrec _ VK_BLEND_OP_ADD = showString "VK_BLEND_OP_ADD"
-        showsPrec _ VK_BLEND_OP_SUBTRACT
-          = showString "VK_BLEND_OP_SUBTRACT"
-        showsPrec _ VK_BLEND_OP_REVERSE_SUBTRACT
-          = showString "VK_BLEND_OP_REVERSE_SUBTRACT"
-        showsPrec _ VK_BLEND_OP_MIN = showString "VK_BLEND_OP_MIN"
-        showsPrec _ VK_BLEND_OP_MAX = showString "VK_BLEND_OP_MAX"
-        showsPrec p (VkBlendOp x)
-          = showParen (p >= 11) (showString "VkBlendOp " . showsPrec 11 x)
+    showsPrec _ VK_BLEND_OP_ADD = showString "VK_BLEND_OP_ADD"
+    showsPrec _ VK_BLEND_OP_SUBTRACT
+      = showString "VK_BLEND_OP_SUBTRACT"
+    showsPrec _ VK_BLEND_OP_REVERSE_SUBTRACT
+      = showString "VK_BLEND_OP_REVERSE_SUBTRACT"
+    showsPrec _ VK_BLEND_OP_MIN = showString "VK_BLEND_OP_MIN"
+    showsPrec _ VK_BLEND_OP_MAX = showString "VK_BLEND_OP_MAX"
+    showsPrec p (VkBlendOp x)
+      = showParen (p >= 11) (showString "VkBlendOp " . showsPrec 11 x)
 
 instance Read VkBlendOp where
-        readPrec
-          = parens
-              (choose
-                 [("VK_BLEND_OP_ADD", pure VK_BLEND_OP_ADD),
-                  ("VK_BLEND_OP_SUBTRACT", pure VK_BLEND_OP_SUBTRACT),
-                  ("VK_BLEND_OP_REVERSE_SUBTRACT",
-                   pure VK_BLEND_OP_REVERSE_SUBTRACT),
-                  ("VK_BLEND_OP_MIN", pure VK_BLEND_OP_MIN),
-                  ("VK_BLEND_OP_MAX", pure VK_BLEND_OP_MAX)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkBlendOp") >> (VkBlendOp <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_BLEND_OP_ADD", pure VK_BLEND_OP_ADD),
+              ("VK_BLEND_OP_SUBTRACT", pure VK_BLEND_OP_SUBTRACT),
+              ("VK_BLEND_OP_REVERSE_SUBTRACT",
+               pure VK_BLEND_OP_REVERSE_SUBTRACT),
+              ("VK_BLEND_OP_MIN", pure VK_BLEND_OP_MIN),
+              ("VK_BLEND_OP_MAX", pure VK_BLEND_OP_MAX)]
+             +++
+             prec 10
+               (expectP (Ident "VkBlendOp") >> (VkBlendOp <$> step readPrec)))
 
 pattern VK_BLEND_OP_ADD :: VkBlendOp
 
@@ -252,33 +248,33 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBlendOverlapEXT VkBlendOverlapEXT registry at www.khronos.org>
 newtype VkBlendOverlapEXT = VkBlendOverlapEXT Int32
-                              deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                            deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkBlendOverlapEXT where
-        showsPrec _ VK_BLEND_OVERLAP_UNCORRELATED_EXT
-          = showString "VK_BLEND_OVERLAP_UNCORRELATED_EXT"
-        showsPrec _ VK_BLEND_OVERLAP_DISJOINT_EXT
-          = showString "VK_BLEND_OVERLAP_DISJOINT_EXT"
-        showsPrec _ VK_BLEND_OVERLAP_CONJOINT_EXT
-          = showString "VK_BLEND_OVERLAP_CONJOINT_EXT"
-        showsPrec p (VkBlendOverlapEXT x)
-          = showParen (p >= 11)
-              (showString "VkBlendOverlapEXT " . showsPrec 11 x)
+    showsPrec _ VK_BLEND_OVERLAP_UNCORRELATED_EXT
+      = showString "VK_BLEND_OVERLAP_UNCORRELATED_EXT"
+    showsPrec _ VK_BLEND_OVERLAP_DISJOINT_EXT
+      = showString "VK_BLEND_OVERLAP_DISJOINT_EXT"
+    showsPrec _ VK_BLEND_OVERLAP_CONJOINT_EXT
+      = showString "VK_BLEND_OVERLAP_CONJOINT_EXT"
+    showsPrec p (VkBlendOverlapEXT x)
+      = showParen (p >= 11)
+          (showString "VkBlendOverlapEXT " . showsPrec 11 x)
 
 instance Read VkBlendOverlapEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_BLEND_OVERLAP_UNCORRELATED_EXT",
-                   pure VK_BLEND_OVERLAP_UNCORRELATED_EXT),
-                  ("VK_BLEND_OVERLAP_DISJOINT_EXT",
-                   pure VK_BLEND_OVERLAP_DISJOINT_EXT),
-                  ("VK_BLEND_OVERLAP_CONJOINT_EXT",
-                   pure VK_BLEND_OVERLAP_CONJOINT_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkBlendOverlapEXT") >>
-                      (VkBlendOverlapEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_BLEND_OVERLAP_UNCORRELATED_EXT",
+               pure VK_BLEND_OVERLAP_UNCORRELATED_EXT),
+              ("VK_BLEND_OVERLAP_DISJOINT_EXT",
+               pure VK_BLEND_OVERLAP_DISJOINT_EXT),
+              ("VK_BLEND_OVERLAP_CONJOINT_EXT",
+               pure VK_BLEND_OVERLAP_CONJOINT_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkBlendOverlapEXT") >>
+                  (VkBlendOverlapEXT <$> step readPrec)))
 
 pattern VK_BLEND_OVERLAP_UNCORRELATED_EXT :: VkBlendOverlapEXT
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/BorderColor.hs b/src-gen/Graphics/Vulkan/Types/Enum/BorderColor.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/BorderColor.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/BorderColor.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -14,9 +12,7 @@
                       VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
                       VK_BORDER_COLOR_INT_OPAQUE_WHITE))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -27,45 +23,45 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBorderColor VkBorderColor registry at www.khronos.org>
 newtype VkBorderColor = VkBorderColor Int32
-                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                        deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkBorderColor where
-        showsPrec _ VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK
-          = showString "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"
-        showsPrec _ VK_BORDER_COLOR_INT_TRANSPARENT_BLACK
-          = showString "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"
-        showsPrec _ VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK
-          = showString "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"
-        showsPrec _ VK_BORDER_COLOR_INT_OPAQUE_BLACK
-          = showString "VK_BORDER_COLOR_INT_OPAQUE_BLACK"
-        showsPrec _ VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE
-          = showString "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"
-        showsPrec _ VK_BORDER_COLOR_INT_OPAQUE_WHITE
-          = showString "VK_BORDER_COLOR_INT_OPAQUE_WHITE"
-        showsPrec p (VkBorderColor x)
-          = showParen (p >= 11)
-              (showString "VkBorderColor " . showsPrec 11 x)
+    showsPrec _ VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK
+      = showString "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"
+    showsPrec _ VK_BORDER_COLOR_INT_TRANSPARENT_BLACK
+      = showString "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"
+    showsPrec _ VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK
+      = showString "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"
+    showsPrec _ VK_BORDER_COLOR_INT_OPAQUE_BLACK
+      = showString "VK_BORDER_COLOR_INT_OPAQUE_BLACK"
+    showsPrec _ VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE
+      = showString "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"
+    showsPrec _ VK_BORDER_COLOR_INT_OPAQUE_WHITE
+      = showString "VK_BORDER_COLOR_INT_OPAQUE_WHITE"
+    showsPrec p (VkBorderColor x)
+      = showParen (p >= 11)
+          (showString "VkBorderColor " . showsPrec 11 x)
 
 instance Read VkBorderColor where
-        readPrec
-          = parens
-              (choose
-                 [("VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK",
-                   pure VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK),
-                  ("VK_BORDER_COLOR_INT_TRANSPARENT_BLACK",
-                   pure VK_BORDER_COLOR_INT_TRANSPARENT_BLACK),
-                  ("VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK",
-                   pure VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK),
-                  ("VK_BORDER_COLOR_INT_OPAQUE_BLACK",
-                   pure VK_BORDER_COLOR_INT_OPAQUE_BLACK),
-                  ("VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE",
-                   pure VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE),
-                  ("VK_BORDER_COLOR_INT_OPAQUE_WHITE",
-                   pure VK_BORDER_COLOR_INT_OPAQUE_WHITE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkBorderColor") >>
-                      (VkBorderColor <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK",
+               pure VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK),
+              ("VK_BORDER_COLOR_INT_TRANSPARENT_BLACK",
+               pure VK_BORDER_COLOR_INT_TRANSPARENT_BLACK),
+              ("VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK",
+               pure VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK),
+              ("VK_BORDER_COLOR_INT_OPAQUE_BLACK",
+               pure VK_BORDER_COLOR_INT_OPAQUE_BLACK),
+              ("VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE",
+               pure VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE),
+              ("VK_BORDER_COLOR_INT_OPAQUE_WHITE",
+               pure VK_BORDER_COLOR_INT_OPAQUE_WHITE)]
+             +++
+             prec 10
+               (expectP (Ident "VkBorderColor") >>
+                  (VkBorderColor <$> step readPrec)))
 
 pattern VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK :: VkBorderColor
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Buffer.hs b/src-gen/Graphics/Vulkan/Types/Enum/Buffer.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Buffer.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Buffer.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -30,9 +28,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -42,7 +38,7 @@
 
 newtype VkBufferCreateBitmask (a ::
                                  FlagType) = VkBufferCreateBitmask VkFlags
-                                               deriving (Eq, Ord, Storable, Data, Generic)
+                                             deriving (Eq, Ord, Storable)
 
 type VkBufferCreateFlags = VkBufferCreateBitmask FlagMask
 
@@ -62,41 +58,31 @@
 
 deriving instance FiniteBits (VkBufferCreateBitmask FlagMask)
 
-deriving instance Integral (VkBufferCreateBitmask FlagMask)
-
-deriving instance Num (VkBufferCreateBitmask FlagMask)
-
-deriving instance Bounded (VkBufferCreateBitmask FlagMask)
-
-deriving instance Enum (VkBufferCreateBitmask FlagMask)
-
-deriving instance Real (VkBufferCreateBitmask FlagMask)
-
 instance Show (VkBufferCreateBitmask a) where
-        showsPrec _ VK_BUFFER_CREATE_SPARSE_BINDING_BIT
-          = showString "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"
-        showsPrec _ VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
-          = showString "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"
-        showsPrec _ VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
-          = showString "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"
-        showsPrec p (VkBufferCreateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkBufferCreateBitmask " . showsPrec 11 x)
+    showsPrec _ VK_BUFFER_CREATE_SPARSE_BINDING_BIT
+      = showString "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"
+    showsPrec _ VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
+      = showString "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"
+    showsPrec _ VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
+      = showString "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"
+    showsPrec p (VkBufferCreateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkBufferCreateBitmask " . showsPrec 11 x)
 
 instance Read (VkBufferCreateBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_BUFFER_CREATE_SPARSE_BINDING_BIT",
-                   pure VK_BUFFER_CREATE_SPARSE_BINDING_BIT),
-                  ("VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT",
-                   pure VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT),
-                  ("VK_BUFFER_CREATE_SPARSE_ALIASED_BIT",
-                   pure VK_BUFFER_CREATE_SPARSE_ALIASED_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkBufferCreateBitmask") >>
-                      (VkBufferCreateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_BUFFER_CREATE_SPARSE_BINDING_BIT",
+               pure VK_BUFFER_CREATE_SPARSE_BINDING_BIT),
+              ("VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT",
+               pure VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT),
+              ("VK_BUFFER_CREATE_SPARSE_ALIASED_BIT",
+               pure VK_BUFFER_CREATE_SPARSE_ALIASED_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkBufferCreateBitmask") >>
+                  (VkBufferCreateBitmask <$> step readPrec)))
 
 -- | Buffer should support sparse backing
 --
@@ -127,7 +113,7 @@
 
 newtype VkBufferUsageBitmask (a ::
                                 FlagType) = VkBufferUsageBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkBufferUsageFlags = VkBufferUsageBitmask FlagMask
 
@@ -147,65 +133,55 @@
 
 deriving instance FiniteBits (VkBufferUsageBitmask FlagMask)
 
-deriving instance Integral (VkBufferUsageBitmask FlagMask)
-
-deriving instance Num (VkBufferUsageBitmask FlagMask)
-
-deriving instance Bounded (VkBufferUsageBitmask FlagMask)
-
-deriving instance Enum (VkBufferUsageBitmask FlagMask)
-
-deriving instance Real (VkBufferUsageBitmask FlagMask)
-
 instance Show (VkBufferUsageBitmask a) where
-        showsPrec _ VK_BUFFER_USAGE_TRANSFER_SRC_BIT
-          = showString "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"
-        showsPrec _ VK_BUFFER_USAGE_TRANSFER_DST_BIT
-          = showString "VK_BUFFER_USAGE_TRANSFER_DST_BIT"
-        showsPrec _ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
-          = showString "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"
-        showsPrec _ VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
-          = showString "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"
-        showsPrec _ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
-          = showString "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"
-        showsPrec _ VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
-          = showString "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"
-        showsPrec _ VK_BUFFER_USAGE_INDEX_BUFFER_BIT
-          = showString "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"
-        showsPrec _ VK_BUFFER_USAGE_VERTEX_BUFFER_BIT
-          = showString "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"
-        showsPrec _ VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
-          = showString "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"
-        showsPrec p (VkBufferUsageBitmask x)
-          = showParen (p >= 11)
-              (showString "VkBufferUsageBitmask " . showsPrec 11 x)
+    showsPrec _ VK_BUFFER_USAGE_TRANSFER_SRC_BIT
+      = showString "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"
+    showsPrec _ VK_BUFFER_USAGE_TRANSFER_DST_BIT
+      = showString "VK_BUFFER_USAGE_TRANSFER_DST_BIT"
+    showsPrec _ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
+      = showString "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"
+    showsPrec _ VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
+      = showString "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"
+    showsPrec _ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
+      = showString "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"
+    showsPrec _ VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
+      = showString "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"
+    showsPrec _ VK_BUFFER_USAGE_INDEX_BUFFER_BIT
+      = showString "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"
+    showsPrec _ VK_BUFFER_USAGE_VERTEX_BUFFER_BIT
+      = showString "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"
+    showsPrec _ VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
+      = showString "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"
+    showsPrec p (VkBufferUsageBitmask x)
+      = showParen (p >= 11)
+          (showString "VkBufferUsageBitmask " . showsPrec 11 x)
 
 instance Read (VkBufferUsageBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_BUFFER_USAGE_TRANSFER_SRC_BIT",
-                   pure VK_BUFFER_USAGE_TRANSFER_SRC_BIT),
-                  ("VK_BUFFER_USAGE_TRANSFER_DST_BIT",
-                   pure VK_BUFFER_USAGE_TRANSFER_DST_BIT),
-                  ("VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT",
-                   pure VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT),
-                  ("VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT",
-                   pure VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT),
-                  ("VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT",
-                   pure VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT),
-                  ("VK_BUFFER_USAGE_STORAGE_BUFFER_BIT",
-                   pure VK_BUFFER_USAGE_STORAGE_BUFFER_BIT),
-                  ("VK_BUFFER_USAGE_INDEX_BUFFER_BIT",
-                   pure VK_BUFFER_USAGE_INDEX_BUFFER_BIT),
-                  ("VK_BUFFER_USAGE_VERTEX_BUFFER_BIT",
-                   pure VK_BUFFER_USAGE_VERTEX_BUFFER_BIT),
-                  ("VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT",
-                   pure VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkBufferUsageBitmask") >>
-                      (VkBufferUsageBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_BUFFER_USAGE_TRANSFER_SRC_BIT",
+               pure VK_BUFFER_USAGE_TRANSFER_SRC_BIT),
+              ("VK_BUFFER_USAGE_TRANSFER_DST_BIT",
+               pure VK_BUFFER_USAGE_TRANSFER_DST_BIT),
+              ("VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT",
+               pure VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT),
+              ("VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT",
+               pure VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT),
+              ("VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT",
+               pure VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT),
+              ("VK_BUFFER_USAGE_STORAGE_BUFFER_BIT",
+               pure VK_BUFFER_USAGE_STORAGE_BUFFER_BIT),
+              ("VK_BUFFER_USAGE_INDEX_BUFFER_BIT",
+               pure VK_BUFFER_USAGE_INDEX_BUFFER_BIT),
+              ("VK_BUFFER_USAGE_VERTEX_BUFFER_BIT",
+               pure VK_BUFFER_USAGE_VERTEX_BUFFER_BIT),
+              ("VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT",
+               pure VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkBufferUsageBitmask") >>
+                  (VkBufferUsageBitmask <$> step readPrec)))
 
 -- | Can be used as a source of transfer operations
 --
@@ -282,13 +258,12 @@
         VkBufferUsageBitmask 256
 
 newtype VkBufferViewCreateFlagBits = VkBufferViewCreateFlagBits VkFlags
-                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                 FiniteBits, Storable, Real, Data, Generic)
+                                     deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkBufferViewCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkBufferViewCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkBufferViewCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/ChromaLocation.hs b/src-gen/Graphics/Vulkan/Types/Enum/ChromaLocation.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/ChromaLocation.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/ChromaLocation.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -12,9 +10,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags)
@@ -26,28 +22,28 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkChromaLocation VkChromaLocation registry at www.khronos.org>
 newtype VkChromaLocation = VkChromaLocation Int32
-                             deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                           deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkChromaLocation where
-        showsPrec _ VK_CHROMA_LOCATION_COSITED_EVEN
-          = showString "VK_CHROMA_LOCATION_COSITED_EVEN"
-        showsPrec _ VK_CHROMA_LOCATION_MIDPOINT
-          = showString "VK_CHROMA_LOCATION_MIDPOINT"
-        showsPrec p (VkChromaLocation x)
-          = showParen (p >= 11)
-              (showString "VkChromaLocation " . showsPrec 11 x)
+    showsPrec _ VK_CHROMA_LOCATION_COSITED_EVEN
+      = showString "VK_CHROMA_LOCATION_COSITED_EVEN"
+    showsPrec _ VK_CHROMA_LOCATION_MIDPOINT
+      = showString "VK_CHROMA_LOCATION_MIDPOINT"
+    showsPrec p (VkChromaLocation x)
+      = showParen (p >= 11)
+          (showString "VkChromaLocation " . showsPrec 11 x)
 
 instance Read VkChromaLocation where
-        readPrec
-          = parens
-              (choose
-                 [("VK_CHROMA_LOCATION_COSITED_EVEN",
-                   pure VK_CHROMA_LOCATION_COSITED_EVEN),
-                  ("VK_CHROMA_LOCATION_MIDPOINT", pure VK_CHROMA_LOCATION_MIDPOINT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkChromaLocation") >>
-                      (VkChromaLocation <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_CHROMA_LOCATION_COSITED_EVEN",
+               pure VK_CHROMA_LOCATION_COSITED_EVEN),
+              ("VK_CHROMA_LOCATION_MIDPOINT", pure VK_CHROMA_LOCATION_MIDPOINT)]
+             +++
+             prec 10
+               (expectP (Ident "VkChromaLocation") >>
+                  (VkChromaLocation <$> step readPrec)))
 
 pattern VK_CHROMA_LOCATION_COSITED_EVEN :: VkChromaLocation
 
@@ -58,13 +54,12 @@
 pattern VK_CHROMA_LOCATION_MIDPOINT = VkChromaLocation 1
 
 newtype VkChromaLocationKHR = VkChromaLocationKHR VkFlags
-                                deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits, FiniteBits,
-                                          Storable, Real, Data, Generic)
+                              deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkChromaLocationKHR where
-        {-# INLINE show #-}
-        show (VkChromaLocationKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkChromaLocationKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Color.hs b/src-gen/Graphics/Vulkan/Types/Enum/Color.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Color.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Color.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -19,9 +17,7 @@
                         VK_COLOR_SPACE_SRGB_NONLINEAR_KHR))
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -31,7 +27,7 @@
 
 newtype VkColorComponentBitmask (a ::
                                    FlagType) = VkColorComponentBitmask VkFlags
-                                                 deriving (Eq, Ord, Storable, Data, Generic)
+                                               deriving (Eq, Ord, Storable)
 
 type VkColorComponentFlags = VkColorComponentBitmask FlagMask
 
@@ -51,41 +47,31 @@
 
 deriving instance FiniteBits (VkColorComponentBitmask FlagMask)
 
-deriving instance Integral (VkColorComponentBitmask FlagMask)
-
-deriving instance Num (VkColorComponentBitmask FlagMask)
-
-deriving instance Bounded (VkColorComponentBitmask FlagMask)
-
-deriving instance Enum (VkColorComponentBitmask FlagMask)
-
-deriving instance Real (VkColorComponentBitmask FlagMask)
-
 instance Show (VkColorComponentBitmask a) where
-        showsPrec _ VK_COLOR_COMPONENT_R_BIT
-          = showString "VK_COLOR_COMPONENT_R_BIT"
-        showsPrec _ VK_COLOR_COMPONENT_G_BIT
-          = showString "VK_COLOR_COMPONENT_G_BIT"
-        showsPrec _ VK_COLOR_COMPONENT_B_BIT
-          = showString "VK_COLOR_COMPONENT_B_BIT"
-        showsPrec _ VK_COLOR_COMPONENT_A_BIT
-          = showString "VK_COLOR_COMPONENT_A_BIT"
-        showsPrec p (VkColorComponentBitmask x)
-          = showParen (p >= 11)
-              (showString "VkColorComponentBitmask " . showsPrec 11 x)
+    showsPrec _ VK_COLOR_COMPONENT_R_BIT
+      = showString "VK_COLOR_COMPONENT_R_BIT"
+    showsPrec _ VK_COLOR_COMPONENT_G_BIT
+      = showString "VK_COLOR_COMPONENT_G_BIT"
+    showsPrec _ VK_COLOR_COMPONENT_B_BIT
+      = showString "VK_COLOR_COMPONENT_B_BIT"
+    showsPrec _ VK_COLOR_COMPONENT_A_BIT
+      = showString "VK_COLOR_COMPONENT_A_BIT"
+    showsPrec p (VkColorComponentBitmask x)
+      = showParen (p >= 11)
+          (showString "VkColorComponentBitmask " . showsPrec 11 x)
 
 instance Read (VkColorComponentBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COLOR_COMPONENT_R_BIT", pure VK_COLOR_COMPONENT_R_BIT),
-                  ("VK_COLOR_COMPONENT_G_BIT", pure VK_COLOR_COMPONENT_G_BIT),
-                  ("VK_COLOR_COMPONENT_B_BIT", pure VK_COLOR_COMPONENT_B_BIT),
-                  ("VK_COLOR_COMPONENT_A_BIT", pure VK_COLOR_COMPONENT_A_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkColorComponentBitmask") >>
-                      (VkColorComponentBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COLOR_COMPONENT_R_BIT", pure VK_COLOR_COMPONENT_R_BIT),
+              ("VK_COLOR_COMPONENT_G_BIT", pure VK_COLOR_COMPONENT_G_BIT),
+              ("VK_COLOR_COMPONENT_B_BIT", pure VK_COLOR_COMPONENT_B_BIT),
+              ("VK_COLOR_COMPONENT_A_BIT", pure VK_COLOR_COMPONENT_A_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkColorComponentBitmask") >>
+                  (VkColorComponentBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_COLOR_COMPONENT_R_BIT :: VkColorComponentBitmask a
@@ -111,25 +97,25 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkColorSpaceKHR VkColorSpaceKHR registry at www.khronos.org>
 newtype VkColorSpaceKHR = VkColorSpaceKHR Int32
-                            deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                          deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkColorSpaceKHR where
-        showsPrec _ VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
-          = showString "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"
-        showsPrec p (VkColorSpaceKHR x)
-          = showParen (p >= 11)
-              (showString "VkColorSpaceKHR " . showsPrec 11 x)
+    showsPrec _ VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
+      = showString "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"
+    showsPrec p (VkColorSpaceKHR x)
+      = showParen (p >= 11)
+          (showString "VkColorSpaceKHR " . showsPrec 11 x)
 
 instance Read VkColorSpaceKHR where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COLOR_SPACE_SRGB_NONLINEAR_KHR",
-                   pure VK_COLOR_SPACE_SRGB_NONLINEAR_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkColorSpaceKHR") >>
-                      (VkColorSpaceKHR <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COLOR_SPACE_SRGB_NONLINEAR_KHR",
+               pure VK_COLOR_SPACE_SRGB_NONLINEAR_KHR)]
+             +++
+             prec 10
+               (expectP (Ident "VkColorSpaceKHR") >>
+                  (VkColorSpaceKHR <$> step readPrec)))
 
 pattern VK_COLOR_SPACE_SRGB_NONLINEAR_KHR :: VkColorSpaceKHR
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Command.hs b/src-gen/Graphics/Vulkan/Types/Enum/Command.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Command.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Command.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -34,9 +32,7 @@
         VkCommandPoolResetFlags, VkCommandPoolResetFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -48,29 +44,29 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandBufferLevel VkCommandBufferLevel registry at www.khronos.org>
 newtype VkCommandBufferLevel = VkCommandBufferLevel Int32
-                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                               deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkCommandBufferLevel where
-        showsPrec _ VK_COMMAND_BUFFER_LEVEL_PRIMARY
-          = showString "VK_COMMAND_BUFFER_LEVEL_PRIMARY"
-        showsPrec _ VK_COMMAND_BUFFER_LEVEL_SECONDARY
-          = showString "VK_COMMAND_BUFFER_LEVEL_SECONDARY"
-        showsPrec p (VkCommandBufferLevel x)
-          = showParen (p >= 11)
-              (showString "VkCommandBufferLevel " . showsPrec 11 x)
+    showsPrec _ VK_COMMAND_BUFFER_LEVEL_PRIMARY
+      = showString "VK_COMMAND_BUFFER_LEVEL_PRIMARY"
+    showsPrec _ VK_COMMAND_BUFFER_LEVEL_SECONDARY
+      = showString "VK_COMMAND_BUFFER_LEVEL_SECONDARY"
+    showsPrec p (VkCommandBufferLevel x)
+      = showParen (p >= 11)
+          (showString "VkCommandBufferLevel " . showsPrec 11 x)
 
 instance Read VkCommandBufferLevel where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COMMAND_BUFFER_LEVEL_PRIMARY",
-                   pure VK_COMMAND_BUFFER_LEVEL_PRIMARY),
-                  ("VK_COMMAND_BUFFER_LEVEL_SECONDARY",
-                   pure VK_COMMAND_BUFFER_LEVEL_SECONDARY)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCommandBufferLevel") >>
-                      (VkCommandBufferLevel <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COMMAND_BUFFER_LEVEL_PRIMARY",
+               pure VK_COMMAND_BUFFER_LEVEL_PRIMARY),
+              ("VK_COMMAND_BUFFER_LEVEL_SECONDARY",
+               pure VK_COMMAND_BUFFER_LEVEL_SECONDARY)]
+             +++
+             prec 10
+               (expectP (Ident "VkCommandBufferLevel") >>
+                  (VkCommandBufferLevel <$> step readPrec)))
 
 pattern VK_COMMAND_BUFFER_LEVEL_PRIMARY :: VkCommandBufferLevel
 
@@ -82,7 +78,7 @@
 
 newtype VkCommandBufferResetBitmask (a ::
                                        FlagType) = VkCommandBufferResetBitmask VkFlags
-                                                     deriving (Eq, Ord, Storable, Data, Generic)
+                                                   deriving (Eq, Ord, Storable)
 
 type VkCommandBufferResetFlags =
      VkCommandBufferResetBitmask FlagMask
@@ -105,33 +101,23 @@
 
 deriving instance FiniteBits (VkCommandBufferResetBitmask FlagMask)
 
-deriving instance Integral (VkCommandBufferResetBitmask FlagMask)
-
-deriving instance Num (VkCommandBufferResetBitmask FlagMask)
-
-deriving instance Bounded (VkCommandBufferResetBitmask FlagMask)
-
-deriving instance Enum (VkCommandBufferResetBitmask FlagMask)
-
-deriving instance Real (VkCommandBufferResetBitmask FlagMask)
-
 instance Show (VkCommandBufferResetBitmask a) where
-        showsPrec _ VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
-          = showString "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"
-        showsPrec p (VkCommandBufferResetBitmask x)
-          = showParen (p >= 11)
-              (showString "VkCommandBufferResetBitmask " . showsPrec 11 x)
+    showsPrec _ VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
+      = showString "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"
+    showsPrec p (VkCommandBufferResetBitmask x)
+      = showParen (p >= 11)
+          (showString "VkCommandBufferResetBitmask " . showsPrec 11 x)
 
 instance Read (VkCommandBufferResetBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT",
-                   pure VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCommandBufferResetBitmask") >>
-                      (VkCommandBufferResetBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT",
+               pure VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkCommandBufferResetBitmask") >>
+                  (VkCommandBufferResetBitmask <$> step readPrec)))
 
 -- | Release resources owned by the buffer
 --
@@ -144,7 +130,7 @@
 
 newtype VkCommandBufferUsageBitmask (a ::
                                        FlagType) = VkCommandBufferUsageBitmask VkFlags
-                                                     deriving (Eq, Ord, Storable, Data, Generic)
+                                                   deriving (Eq, Ord, Storable)
 
 type VkCommandBufferUsageFlags =
      VkCommandBufferUsageBitmask FlagMask
@@ -167,41 +153,31 @@
 
 deriving instance FiniteBits (VkCommandBufferUsageBitmask FlagMask)
 
-deriving instance Integral (VkCommandBufferUsageBitmask FlagMask)
-
-deriving instance Num (VkCommandBufferUsageBitmask FlagMask)
-
-deriving instance Bounded (VkCommandBufferUsageBitmask FlagMask)
-
-deriving instance Enum (VkCommandBufferUsageBitmask FlagMask)
-
-deriving instance Real (VkCommandBufferUsageBitmask FlagMask)
-
 instance Show (VkCommandBufferUsageBitmask a) where
-        showsPrec _ VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
-          = showString "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"
-        showsPrec _ VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
-          = showString "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"
-        showsPrec _ VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
-          = showString "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"
-        showsPrec p (VkCommandBufferUsageBitmask x)
-          = showParen (p >= 11)
-              (showString "VkCommandBufferUsageBitmask " . showsPrec 11 x)
+    showsPrec _ VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
+      = showString "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"
+    showsPrec _ VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
+      = showString "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"
+    showsPrec _ VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
+      = showString "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"
+    showsPrec p (VkCommandBufferUsageBitmask x)
+      = showParen (p >= 11)
+          (showString "VkCommandBufferUsageBitmask " . showsPrec 11 x)
 
 instance Read (VkCommandBufferUsageBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT",
-                   pure VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT),
-                  ("VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT",
-                   pure VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT),
-                  ("VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT",
-                   pure VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCommandBufferUsageBitmask") >>
-                      (VkCommandBufferUsageBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT",
+               pure VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT),
+              ("VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT",
+               pure VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT),
+              ("VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT",
+               pure VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkCommandBufferUsageBitmask") >>
+                  (VkCommandBufferUsageBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT ::
@@ -228,7 +204,7 @@
 
 newtype VkCommandPoolCreateBitmask (a ::
                                       FlagType) = VkCommandPoolCreateBitmask VkFlags
-                                                    deriving (Eq, Ord, Storable, Data, Generic)
+                                                  deriving (Eq, Ord, Storable)
 
 type VkCommandPoolCreateFlags = VkCommandPoolCreateBitmask FlagMask
 
@@ -250,37 +226,27 @@
 
 deriving instance FiniteBits (VkCommandPoolCreateBitmask FlagMask)
 
-deriving instance Integral (VkCommandPoolCreateBitmask FlagMask)
-
-deriving instance Num (VkCommandPoolCreateBitmask FlagMask)
-
-deriving instance Bounded (VkCommandPoolCreateBitmask FlagMask)
-
-deriving instance Enum (VkCommandPoolCreateBitmask FlagMask)
-
-deriving instance Real (VkCommandPoolCreateBitmask FlagMask)
-
 instance Show (VkCommandPoolCreateBitmask a) where
-        showsPrec _ VK_COMMAND_POOL_CREATE_TRANSIENT_BIT
-          = showString "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"
-        showsPrec _ VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
-          = showString "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"
-        showsPrec p (VkCommandPoolCreateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkCommandPoolCreateBitmask " . showsPrec 11 x)
+    showsPrec _ VK_COMMAND_POOL_CREATE_TRANSIENT_BIT
+      = showString "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"
+    showsPrec _ VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
+      = showString "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"
+    showsPrec p (VkCommandPoolCreateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkCommandPoolCreateBitmask " . showsPrec 11 x)
 
 instance Read (VkCommandPoolCreateBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COMMAND_POOL_CREATE_TRANSIENT_BIT",
-                   pure VK_COMMAND_POOL_CREATE_TRANSIENT_BIT),
-                  ("VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT",
-                   pure VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCommandPoolCreateBitmask") >>
-                      (VkCommandPoolCreateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COMMAND_POOL_CREATE_TRANSIENT_BIT",
+               pure VK_COMMAND_POOL_CREATE_TRANSIENT_BIT),
+              ("VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT",
+               pure VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkCommandPoolCreateBitmask") >>
+                  (VkCommandPoolCreateBitmask <$> step readPrec)))
 
 -- | Command buffers have a short lifetime
 --
@@ -302,7 +268,7 @@
 
 newtype VkCommandPoolResetBitmask (a ::
                                      FlagType) = VkCommandPoolResetBitmask VkFlags
-                                                   deriving (Eq, Ord, Storable, Data, Generic)
+                                                 deriving (Eq, Ord, Storable)
 
 type VkCommandPoolResetFlags = VkCommandPoolResetBitmask FlagMask
 
@@ -322,33 +288,23 @@
 
 deriving instance FiniteBits (VkCommandPoolResetBitmask FlagMask)
 
-deriving instance Integral (VkCommandPoolResetBitmask FlagMask)
-
-deriving instance Num (VkCommandPoolResetBitmask FlagMask)
-
-deriving instance Bounded (VkCommandPoolResetBitmask FlagMask)
-
-deriving instance Enum (VkCommandPoolResetBitmask FlagMask)
-
-deriving instance Real (VkCommandPoolResetBitmask FlagMask)
-
 instance Show (VkCommandPoolResetBitmask a) where
-        showsPrec _ VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
-          = showString "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"
-        showsPrec p (VkCommandPoolResetBitmask x)
-          = showParen (p >= 11)
-              (showString "VkCommandPoolResetBitmask " . showsPrec 11 x)
+    showsPrec _ VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
+      = showString "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"
+    showsPrec p (VkCommandPoolResetBitmask x)
+      = showParen (p >= 11)
+          (showString "VkCommandPoolResetBitmask " . showsPrec 11 x)
 
 instance Read (VkCommandPoolResetBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT",
-                   pure VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCommandPoolResetBitmask") >>
-                      (VkCommandPoolResetBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT",
+               pure VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkCommandPoolResetBitmask") >>
+                  (VkCommandPoolResetBitmask <$> step readPrec)))
 
 -- | Release resources owned by the pool
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/CompareOp.hs b/src-gen/Graphics/Vulkan/Types/Enum/CompareOp.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/CompareOp.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/CompareOp.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -11,9 +9,7 @@
                     VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL,
                     VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -24,41 +20,41 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCompareOp VkCompareOp registry at www.khronos.org>
 newtype VkCompareOp = VkCompareOp Int32
-                        deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                      deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkCompareOp where
-        showsPrec _ VK_COMPARE_OP_NEVER = showString "VK_COMPARE_OP_NEVER"
-        showsPrec _ VK_COMPARE_OP_LESS = showString "VK_COMPARE_OP_LESS"
-        showsPrec _ VK_COMPARE_OP_EQUAL = showString "VK_COMPARE_OP_EQUAL"
-        showsPrec _ VK_COMPARE_OP_LESS_OR_EQUAL
-          = showString "VK_COMPARE_OP_LESS_OR_EQUAL"
-        showsPrec _ VK_COMPARE_OP_GREATER
-          = showString "VK_COMPARE_OP_GREATER"
-        showsPrec _ VK_COMPARE_OP_NOT_EQUAL
-          = showString "VK_COMPARE_OP_NOT_EQUAL"
-        showsPrec _ VK_COMPARE_OP_GREATER_OR_EQUAL
-          = showString "VK_COMPARE_OP_GREATER_OR_EQUAL"
-        showsPrec _ VK_COMPARE_OP_ALWAYS
-          = showString "VK_COMPARE_OP_ALWAYS"
-        showsPrec p (VkCompareOp x)
-          = showParen (p >= 11) (showString "VkCompareOp " . showsPrec 11 x)
+    showsPrec _ VK_COMPARE_OP_NEVER = showString "VK_COMPARE_OP_NEVER"
+    showsPrec _ VK_COMPARE_OP_LESS = showString "VK_COMPARE_OP_LESS"
+    showsPrec _ VK_COMPARE_OP_EQUAL = showString "VK_COMPARE_OP_EQUAL"
+    showsPrec _ VK_COMPARE_OP_LESS_OR_EQUAL
+      = showString "VK_COMPARE_OP_LESS_OR_EQUAL"
+    showsPrec _ VK_COMPARE_OP_GREATER
+      = showString "VK_COMPARE_OP_GREATER"
+    showsPrec _ VK_COMPARE_OP_NOT_EQUAL
+      = showString "VK_COMPARE_OP_NOT_EQUAL"
+    showsPrec _ VK_COMPARE_OP_GREATER_OR_EQUAL
+      = showString "VK_COMPARE_OP_GREATER_OR_EQUAL"
+    showsPrec _ VK_COMPARE_OP_ALWAYS
+      = showString "VK_COMPARE_OP_ALWAYS"
+    showsPrec p (VkCompareOp x)
+      = showParen (p >= 11) (showString "VkCompareOp " . showsPrec 11 x)
 
 instance Read VkCompareOp where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COMPARE_OP_NEVER", pure VK_COMPARE_OP_NEVER),
-                  ("VK_COMPARE_OP_LESS", pure VK_COMPARE_OP_LESS),
-                  ("VK_COMPARE_OP_EQUAL", pure VK_COMPARE_OP_EQUAL),
-                  ("VK_COMPARE_OP_LESS_OR_EQUAL", pure VK_COMPARE_OP_LESS_OR_EQUAL),
-                  ("VK_COMPARE_OP_GREATER", pure VK_COMPARE_OP_GREATER),
-                  ("VK_COMPARE_OP_NOT_EQUAL", pure VK_COMPARE_OP_NOT_EQUAL),
-                  ("VK_COMPARE_OP_GREATER_OR_EQUAL",
-                   pure VK_COMPARE_OP_GREATER_OR_EQUAL),
-                  ("VK_COMPARE_OP_ALWAYS", pure VK_COMPARE_OP_ALWAYS)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCompareOp") >> (VkCompareOp <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COMPARE_OP_NEVER", pure VK_COMPARE_OP_NEVER),
+              ("VK_COMPARE_OP_LESS", pure VK_COMPARE_OP_LESS),
+              ("VK_COMPARE_OP_EQUAL", pure VK_COMPARE_OP_EQUAL),
+              ("VK_COMPARE_OP_LESS_OR_EQUAL", pure VK_COMPARE_OP_LESS_OR_EQUAL),
+              ("VK_COMPARE_OP_GREATER", pure VK_COMPARE_OP_GREATER),
+              ("VK_COMPARE_OP_NOT_EQUAL", pure VK_COMPARE_OP_NOT_EQUAL),
+              ("VK_COMPARE_OP_GREATER_OR_EQUAL",
+               pure VK_COMPARE_OP_GREATER_OR_EQUAL),
+              ("VK_COMPARE_OP_ALWAYS", pure VK_COMPARE_OP_ALWAYS)]
+             +++
+             prec 10
+               (expectP (Ident "VkCompareOp") >> (VkCompareOp <$> step readPrec)))
 
 pattern VK_COMPARE_OP_NEVER :: VkCompareOp
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/ComponentSwizzle.hs b/src-gen/Graphics/Vulkan/Types/Enum/ComponentSwizzle.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/ComponentSwizzle.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/ComponentSwizzle.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -12,9 +10,7 @@
                            VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B,
                            VK_COMPONENT_SWIZZLE_A))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -25,43 +21,43 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkComponentSwizzle VkComponentSwizzle registry at www.khronos.org>
 newtype VkComponentSwizzle = VkComponentSwizzle Int32
-                               deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                             deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkComponentSwizzle where
-        showsPrec _ VK_COMPONENT_SWIZZLE_IDENTITY
-          = showString "VK_COMPONENT_SWIZZLE_IDENTITY"
-        showsPrec _ VK_COMPONENT_SWIZZLE_ZERO
-          = showString "VK_COMPONENT_SWIZZLE_ZERO"
-        showsPrec _ VK_COMPONENT_SWIZZLE_ONE
-          = showString "VK_COMPONENT_SWIZZLE_ONE"
-        showsPrec _ VK_COMPONENT_SWIZZLE_R
-          = showString "VK_COMPONENT_SWIZZLE_R"
-        showsPrec _ VK_COMPONENT_SWIZZLE_G
-          = showString "VK_COMPONENT_SWIZZLE_G"
-        showsPrec _ VK_COMPONENT_SWIZZLE_B
-          = showString "VK_COMPONENT_SWIZZLE_B"
-        showsPrec _ VK_COMPONENT_SWIZZLE_A
-          = showString "VK_COMPONENT_SWIZZLE_A"
-        showsPrec p (VkComponentSwizzle x)
-          = showParen (p >= 11)
-              (showString "VkComponentSwizzle " . showsPrec 11 x)
+    showsPrec _ VK_COMPONENT_SWIZZLE_IDENTITY
+      = showString "VK_COMPONENT_SWIZZLE_IDENTITY"
+    showsPrec _ VK_COMPONENT_SWIZZLE_ZERO
+      = showString "VK_COMPONENT_SWIZZLE_ZERO"
+    showsPrec _ VK_COMPONENT_SWIZZLE_ONE
+      = showString "VK_COMPONENT_SWIZZLE_ONE"
+    showsPrec _ VK_COMPONENT_SWIZZLE_R
+      = showString "VK_COMPONENT_SWIZZLE_R"
+    showsPrec _ VK_COMPONENT_SWIZZLE_G
+      = showString "VK_COMPONENT_SWIZZLE_G"
+    showsPrec _ VK_COMPONENT_SWIZZLE_B
+      = showString "VK_COMPONENT_SWIZZLE_B"
+    showsPrec _ VK_COMPONENT_SWIZZLE_A
+      = showString "VK_COMPONENT_SWIZZLE_A"
+    showsPrec p (VkComponentSwizzle x)
+      = showParen (p >= 11)
+          (showString "VkComponentSwizzle " . showsPrec 11 x)
 
 instance Read VkComponentSwizzle where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COMPONENT_SWIZZLE_IDENTITY",
-                   pure VK_COMPONENT_SWIZZLE_IDENTITY),
-                  ("VK_COMPONENT_SWIZZLE_ZERO", pure VK_COMPONENT_SWIZZLE_ZERO),
-                  ("VK_COMPONENT_SWIZZLE_ONE", pure VK_COMPONENT_SWIZZLE_ONE),
-                  ("VK_COMPONENT_SWIZZLE_R", pure VK_COMPONENT_SWIZZLE_R),
-                  ("VK_COMPONENT_SWIZZLE_G", pure VK_COMPONENT_SWIZZLE_G),
-                  ("VK_COMPONENT_SWIZZLE_B", pure VK_COMPONENT_SWIZZLE_B),
-                  ("VK_COMPONENT_SWIZZLE_A", pure VK_COMPONENT_SWIZZLE_A)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkComponentSwizzle") >>
-                      (VkComponentSwizzle <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COMPONENT_SWIZZLE_IDENTITY",
+               pure VK_COMPONENT_SWIZZLE_IDENTITY),
+              ("VK_COMPONENT_SWIZZLE_ZERO", pure VK_COMPONENT_SWIZZLE_ZERO),
+              ("VK_COMPONENT_SWIZZLE_ONE", pure VK_COMPONENT_SWIZZLE_ONE),
+              ("VK_COMPONENT_SWIZZLE_R", pure VK_COMPONENT_SWIZZLE_R),
+              ("VK_COMPONENT_SWIZZLE_G", pure VK_COMPONENT_SWIZZLE_G),
+              ("VK_COMPONENT_SWIZZLE_B", pure VK_COMPONENT_SWIZZLE_B),
+              ("VK_COMPONENT_SWIZZLE_A", pure VK_COMPONENT_SWIZZLE_A)]
+             +++
+             prec 10
+               (expectP (Ident "VkComponentSwizzle") >>
+                  (VkComponentSwizzle <$> step readPrec)))
 
 pattern VK_COMPONENT_SWIZZLE_IDENTITY :: VkComponentSwizzle
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/CompositeAlphaFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/CompositeAlphaFlagsKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/CompositeAlphaFlagsKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/CompositeAlphaFlagsKHR.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -19,9 +17,7 @@
         VkCompositeAlphaFlagsKHR, VkCompositeAlphaFlagBitsKHR)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -31,7 +27,7 @@
 
 newtype VkCompositeAlphaBitmaskKHR (a ::
                                       FlagType) = VkCompositeAlphaBitmaskKHR VkFlags
-                                                    deriving (Eq, Ord, Storable, Data, Generic)
+                                                  deriving (Eq, Ord, Storable)
 
 type VkCompositeAlphaFlagsKHR = VkCompositeAlphaBitmaskKHR FlagMask
 
@@ -53,45 +49,35 @@
 
 deriving instance FiniteBits (VkCompositeAlphaBitmaskKHR FlagMask)
 
-deriving instance Integral (VkCompositeAlphaBitmaskKHR FlagMask)
-
-deriving instance Num (VkCompositeAlphaBitmaskKHR FlagMask)
-
-deriving instance Bounded (VkCompositeAlphaBitmaskKHR FlagMask)
-
-deriving instance Enum (VkCompositeAlphaBitmaskKHR FlagMask)
-
-deriving instance Real (VkCompositeAlphaBitmaskKHR FlagMask)
-
 instance Show (VkCompositeAlphaBitmaskKHR a) where
-        showsPrec _ VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
-          = showString "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"
-        showsPrec _ VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR
-          = showString "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"
-        showsPrec _ VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR
-          = showString "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"
-        showsPrec _ VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
-          = showString "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"
-        showsPrec p (VkCompositeAlphaBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkCompositeAlphaBitmaskKHR " . showsPrec 11 x)
+    showsPrec _ VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
+      = showString "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"
+    showsPrec _ VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR
+      = showString "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"
+    showsPrec _ VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR
+      = showString "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"
+    showsPrec _ VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
+      = showString "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"
+    showsPrec p (VkCompositeAlphaBitmaskKHR x)
+      = showParen (p >= 11)
+          (showString "VkCompositeAlphaBitmaskKHR " . showsPrec 11 x)
 
 instance Read (VkCompositeAlphaBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR",
-                   pure VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR),
-                  ("VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR",
-                   pure VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR),
-                  ("VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR",
-                   pure VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR),
-                  ("VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR",
-                   pure VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCompositeAlphaBitmaskKHR") >>
-                      (VkCompositeAlphaBitmaskKHR <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR",
+               pure VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR),
+              ("VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR",
+               pure VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR),
+              ("VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR",
+               pure VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR),
+              ("VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR",
+               pure VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR)]
+             +++
+             prec 10
+               (expectP (Ident "VkCompositeAlphaBitmaskKHR") >>
+                  (VkCompositeAlphaBitmaskKHR <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR ::
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/ConservativeRasterizationModeEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/ConservativeRasterizationModeEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/ConservativeRasterizationModeEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/ConservativeRasterizationModeEXT.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -11,9 +9,7 @@
                                            VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,
                                            VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -24,34 +20,33 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkConservativeRasterizationModeEXT VkConservativeRasterizationModeEXT registry at www.khronos.org>
 newtype VkConservativeRasterizationModeEXT = VkConservativeRasterizationModeEXT Int32
-                                               deriving (Eq, Ord, Num, Bounded, Storable, Enum,
-                                                         Data, Generic)
+                                             deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkConservativeRasterizationModeEXT where
-        showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
-          = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"
-        showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
-          = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"
-        showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
-          = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"
-        showsPrec p (VkConservativeRasterizationModeEXT x)
-          = showParen (p >= 11)
-              (showString "VkConservativeRasterizationModeEXT " . showsPrec 11 x)
+    showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
+      = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"
+    showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT
+      = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"
+    showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
+      = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"
+    showsPrec p (VkConservativeRasterizationModeEXT x)
+      = showParen (p >= 11)
+          (showString "VkConservativeRasterizationModeEXT " . showsPrec 11 x)
 
 instance Read VkConservativeRasterizationModeEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT",
-                   pure VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT),
-                  ("VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT",
-                   pure VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT),
-                  ("VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT",
-                   pure VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkConservativeRasterizationModeEXT") >>
-                      (VkConservativeRasterizationModeEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT",
+               pure VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT),
+              ("VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT",
+               pure VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT),
+              ("VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT",
+               pure VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkConservativeRasterizationModeEXT") >>
+                  (VkConservativeRasterizationModeEXT <$> step readPrec)))
 
 pattern VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT ::
         VkConservativeRasterizationModeEXT
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/CoverageModulationModeNV.hs b/src-gen/Graphics/Vulkan/Types/Enum/CoverageModulationModeNV.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/CoverageModulationModeNV.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/CoverageModulationModeNV.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -12,9 +10,7 @@
                                    VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
                                    VK_COVERAGE_MODULATION_MODE_RGBA_NV))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -25,38 +21,37 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCoverageModulationModeNV VkCoverageModulationModeNV registry at www.khronos.org>
 newtype VkCoverageModulationModeNV = VkCoverageModulationModeNV Int32
-                                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                 Generic)
+                                     deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkCoverageModulationModeNV where
-        showsPrec _ VK_COVERAGE_MODULATION_MODE_NONE_NV
-          = showString "VK_COVERAGE_MODULATION_MODE_NONE_NV"
-        showsPrec _ VK_COVERAGE_MODULATION_MODE_RGB_NV
-          = showString "VK_COVERAGE_MODULATION_MODE_RGB_NV"
-        showsPrec _ VK_COVERAGE_MODULATION_MODE_ALPHA_NV
-          = showString "VK_COVERAGE_MODULATION_MODE_ALPHA_NV"
-        showsPrec _ VK_COVERAGE_MODULATION_MODE_RGBA_NV
-          = showString "VK_COVERAGE_MODULATION_MODE_RGBA_NV"
-        showsPrec p (VkCoverageModulationModeNV x)
-          = showParen (p >= 11)
-              (showString "VkCoverageModulationModeNV " . showsPrec 11 x)
+    showsPrec _ VK_COVERAGE_MODULATION_MODE_NONE_NV
+      = showString "VK_COVERAGE_MODULATION_MODE_NONE_NV"
+    showsPrec _ VK_COVERAGE_MODULATION_MODE_RGB_NV
+      = showString "VK_COVERAGE_MODULATION_MODE_RGB_NV"
+    showsPrec _ VK_COVERAGE_MODULATION_MODE_ALPHA_NV
+      = showString "VK_COVERAGE_MODULATION_MODE_ALPHA_NV"
+    showsPrec _ VK_COVERAGE_MODULATION_MODE_RGBA_NV
+      = showString "VK_COVERAGE_MODULATION_MODE_RGBA_NV"
+    showsPrec p (VkCoverageModulationModeNV x)
+      = showParen (p >= 11)
+          (showString "VkCoverageModulationModeNV " . showsPrec 11 x)
 
 instance Read VkCoverageModulationModeNV where
-        readPrec
-          = parens
-              (choose
-                 [("VK_COVERAGE_MODULATION_MODE_NONE_NV",
-                   pure VK_COVERAGE_MODULATION_MODE_NONE_NV),
-                  ("VK_COVERAGE_MODULATION_MODE_RGB_NV",
-                   pure VK_COVERAGE_MODULATION_MODE_RGB_NV),
-                  ("VK_COVERAGE_MODULATION_MODE_ALPHA_NV",
-                   pure VK_COVERAGE_MODULATION_MODE_ALPHA_NV),
-                  ("VK_COVERAGE_MODULATION_MODE_RGBA_NV",
-                   pure VK_COVERAGE_MODULATION_MODE_RGBA_NV)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCoverageModulationModeNV") >>
-                      (VkCoverageModulationModeNV <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_COVERAGE_MODULATION_MODE_NONE_NV",
+               pure VK_COVERAGE_MODULATION_MODE_NONE_NV),
+              ("VK_COVERAGE_MODULATION_MODE_RGB_NV",
+               pure VK_COVERAGE_MODULATION_MODE_RGB_NV),
+              ("VK_COVERAGE_MODULATION_MODE_ALPHA_NV",
+               pure VK_COVERAGE_MODULATION_MODE_ALPHA_NV),
+              ("VK_COVERAGE_MODULATION_MODE_RGBA_NV",
+               pure VK_COVERAGE_MODULATION_MODE_RGBA_NV)]
+             +++
+             prec 10
+               (expectP (Ident "VkCoverageModulationModeNV") >>
+                  (VkCoverageModulationModeNV <$> step readPrec)))
 
 pattern VK_COVERAGE_MODULATION_MODE_NONE_NV ::
         VkCoverageModulationModeNV
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/CullModeFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/CullModeFlags.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/CullModeFlags.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/CullModeFlags.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -16,9 +14,7 @@
         VkCullModeFlags, VkCullModeFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -28,7 +24,7 @@
 
 newtype VkCullModeBitmask (a ::
                              FlagType) = VkCullModeBitmask VkFlags
-                                           deriving (Eq, Ord, Storable, Data, Generic)
+                                         deriving (Eq, Ord, Storable)
 
 type VkCullModeFlags = VkCullModeBitmask FlagMask
 
@@ -46,40 +42,30 @@
 
 deriving instance FiniteBits (VkCullModeBitmask FlagMask)
 
-deriving instance Integral (VkCullModeBitmask FlagMask)
-
-deriving instance Num (VkCullModeBitmask FlagMask)
-
-deriving instance Bounded (VkCullModeBitmask FlagMask)
-
-deriving instance Enum (VkCullModeBitmask FlagMask)
-
-deriving instance Real (VkCullModeBitmask FlagMask)
-
 instance Show (VkCullModeBitmask a) where
-        showsPrec _ VK_CULL_MODE_NONE = showString "VK_CULL_MODE_NONE"
-        showsPrec _ VK_CULL_MODE_FRONT_BIT
-          = showString "VK_CULL_MODE_FRONT_BIT"
-        showsPrec _ VK_CULL_MODE_BACK_BIT
-          = showString "VK_CULL_MODE_BACK_BIT"
-        showsPrec _ VK_CULL_MODE_FRONT_AND_BACK
-          = showString "VK_CULL_MODE_FRONT_AND_BACK"
-        showsPrec p (VkCullModeBitmask x)
-          = showParen (p >= 11)
-              (showString "VkCullModeBitmask " . showsPrec 11 x)
+    showsPrec _ VK_CULL_MODE_NONE = showString "VK_CULL_MODE_NONE"
+    showsPrec _ VK_CULL_MODE_FRONT_BIT
+      = showString "VK_CULL_MODE_FRONT_BIT"
+    showsPrec _ VK_CULL_MODE_BACK_BIT
+      = showString "VK_CULL_MODE_BACK_BIT"
+    showsPrec _ VK_CULL_MODE_FRONT_AND_BACK
+      = showString "VK_CULL_MODE_FRONT_AND_BACK"
+    showsPrec p (VkCullModeBitmask x)
+      = showParen (p >= 11)
+          (showString "VkCullModeBitmask " . showsPrec 11 x)
 
 instance Read (VkCullModeBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_CULL_MODE_NONE", pure VK_CULL_MODE_NONE),
-                  ("VK_CULL_MODE_FRONT_BIT", pure VK_CULL_MODE_FRONT_BIT),
-                  ("VK_CULL_MODE_BACK_BIT", pure VK_CULL_MODE_BACK_BIT),
-                  ("VK_CULL_MODE_FRONT_AND_BACK", pure VK_CULL_MODE_FRONT_AND_BACK)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkCullModeBitmask") >>
-                      (VkCullModeBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_CULL_MODE_NONE", pure VK_CULL_MODE_NONE),
+              ("VK_CULL_MODE_FRONT_BIT", pure VK_CULL_MODE_FRONT_BIT),
+              ("VK_CULL_MODE_BACK_BIT", pure VK_CULL_MODE_BACK_BIT),
+              ("VK_CULL_MODE_FRONT_AND_BACK", pure VK_CULL_MODE_FRONT_AND_BACK)]
+             +++
+             prec 10
+               (expectP (Ident "VkCullModeBitmask") >>
+                  (VkCullModeBitmask <$> step readPrec)))
 
 pattern VK_CULL_MODE_NONE :: VkCullModeBitmask a
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Debug.hs b/src-gen/Graphics/Vulkan/Types/Enum/Debug.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Debug.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Debug.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -71,9 +69,7 @@
         VkDebugUtilsMessageTypeFlagBitsEXT)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -83,7 +79,7 @@
 
 newtype VkDebugReportBitmaskEXT (a ::
                                    FlagType) = VkDebugReportBitmaskEXT VkFlags
-                                                 deriving (Eq, Ord, Storable, Data, Generic)
+                                               deriving (Eq, Ord, Storable)
 
 type VkDebugReportFlagsEXT = VkDebugReportBitmaskEXT FlagMask
 
@@ -103,49 +99,39 @@
 
 deriving instance FiniteBits (VkDebugReportBitmaskEXT FlagMask)
 
-deriving instance Integral (VkDebugReportBitmaskEXT FlagMask)
-
-deriving instance Num (VkDebugReportBitmaskEXT FlagMask)
-
-deriving instance Bounded (VkDebugReportBitmaskEXT FlagMask)
-
-deriving instance Enum (VkDebugReportBitmaskEXT FlagMask)
-
-deriving instance Real (VkDebugReportBitmaskEXT FlagMask)
-
 instance Show (VkDebugReportBitmaskEXT a) where
-        showsPrec _ VK_DEBUG_REPORT_INFORMATION_BIT_EXT
-          = showString "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"
-        showsPrec _ VK_DEBUG_REPORT_WARNING_BIT_EXT
-          = showString "VK_DEBUG_REPORT_WARNING_BIT_EXT"
-        showsPrec _ VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT
-          = showString "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"
-        showsPrec _ VK_DEBUG_REPORT_ERROR_BIT_EXT
-          = showString "VK_DEBUG_REPORT_ERROR_BIT_EXT"
-        showsPrec _ VK_DEBUG_REPORT_DEBUG_BIT_EXT
-          = showString "VK_DEBUG_REPORT_DEBUG_BIT_EXT"
-        showsPrec p (VkDebugReportBitmaskEXT x)
-          = showParen (p >= 11)
-              (showString "VkDebugReportBitmaskEXT " . showsPrec 11 x)
+    showsPrec _ VK_DEBUG_REPORT_INFORMATION_BIT_EXT
+      = showString "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"
+    showsPrec _ VK_DEBUG_REPORT_WARNING_BIT_EXT
+      = showString "VK_DEBUG_REPORT_WARNING_BIT_EXT"
+    showsPrec _ VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT
+      = showString "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"
+    showsPrec _ VK_DEBUG_REPORT_ERROR_BIT_EXT
+      = showString "VK_DEBUG_REPORT_ERROR_BIT_EXT"
+    showsPrec _ VK_DEBUG_REPORT_DEBUG_BIT_EXT
+      = showString "VK_DEBUG_REPORT_DEBUG_BIT_EXT"
+    showsPrec p (VkDebugReportBitmaskEXT x)
+      = showParen (p >= 11)
+          (showString "VkDebugReportBitmaskEXT " . showsPrec 11 x)
 
 instance Read (VkDebugReportBitmaskEXT a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DEBUG_REPORT_INFORMATION_BIT_EXT",
-                   pure VK_DEBUG_REPORT_INFORMATION_BIT_EXT),
-                  ("VK_DEBUG_REPORT_WARNING_BIT_EXT",
-                   pure VK_DEBUG_REPORT_WARNING_BIT_EXT),
-                  ("VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT",
-                   pure VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT),
-                  ("VK_DEBUG_REPORT_ERROR_BIT_EXT",
-                   pure VK_DEBUG_REPORT_ERROR_BIT_EXT),
-                  ("VK_DEBUG_REPORT_DEBUG_BIT_EXT",
-                   pure VK_DEBUG_REPORT_DEBUG_BIT_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDebugReportBitmaskEXT") >>
-                      (VkDebugReportBitmaskEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DEBUG_REPORT_INFORMATION_BIT_EXT",
+               pure VK_DEBUG_REPORT_INFORMATION_BIT_EXT),
+              ("VK_DEBUG_REPORT_WARNING_BIT_EXT",
+               pure VK_DEBUG_REPORT_WARNING_BIT_EXT),
+              ("VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT",
+               pure VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT),
+              ("VK_DEBUG_REPORT_ERROR_BIT_EXT",
+               pure VK_DEBUG_REPORT_ERROR_BIT_EXT),
+              ("VK_DEBUG_REPORT_DEBUG_BIT_EXT",
+               pure VK_DEBUG_REPORT_DEBUG_BIT_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDebugReportBitmaskEXT") >>
+                  (VkDebugReportBitmaskEXT <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_DEBUG_REPORT_INFORMATION_BIT_EXT ::
@@ -181,163 +167,162 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugReportObjectTypeEXT VkDebugReportObjectTypeEXT registry at www.khronos.org>
 newtype VkDebugReportObjectTypeEXT = VkDebugReportObjectTypeEXT Int32
-                                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                 Generic)
+                                     deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkDebugReportObjectTypeEXT where
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT
-          = showString
-              "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"
-        showsPrec _
-          VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
-          = showString
-              "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"
-        showsPrec _
-          VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT
-          = showString
-              "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"
-        showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT
-          = showString "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"
-        showsPrec p (VkDebugReportObjectTypeEXT x)
-          = showParen (p >= 11)
-              (showString "VkDebugReportObjectTypeEXT " . showsPrec 11 x)
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT
+      = showString
+          "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"
+    showsPrec _
+      VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
+      = showString
+          "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"
+    showsPrec _
+      VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT
+      = showString
+          "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"
+    showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT
+      = showString "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"
+    showsPrec p (VkDebugReportObjectTypeEXT x)
+      = showParen (p >= 11)
+          (showString "VkDebugReportObjectTypeEXT " . showsPrec 11 x)
 
 instance Read VkDebugReportObjectTypeEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT),
-                  ("VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT",
-                   pure VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDebugReportObjectTypeEXT") >>
-                      (VkDebugReportObjectTypeEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT),
+              ("VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT",
+               pure VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDebugReportObjectTypeEXT") >>
+                  (VkDebugReportObjectTypeEXT <$> step readPrec)))
 
 pattern VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT ::
         VkDebugReportObjectTypeEXT
@@ -545,8 +530,7 @@
 
 newtype VkDebugUtilsMessageSeverityBitmaskEXT (a ::
                                                  FlagType) = VkDebugUtilsMessageSeverityBitmaskEXT VkFlags
-                                                               deriving (Eq, Ord, Storable, Data,
-                                                                         Generic)
+                                                             deriving (Eq, Ord, Storable)
 
 type VkDebugUtilsMessageSeverityFlagsEXT =
      VkDebugUtilsMessageSeverityBitmaskEXT FlagMask
@@ -572,51 +556,36 @@
 deriving instance
          FiniteBits (VkDebugUtilsMessageSeverityBitmaskEXT FlagMask)
 
-deriving instance
-         Integral (VkDebugUtilsMessageSeverityBitmaskEXT FlagMask)
-
-deriving instance
-         Num (VkDebugUtilsMessageSeverityBitmaskEXT FlagMask)
-
-deriving instance
-         Bounded (VkDebugUtilsMessageSeverityBitmaskEXT FlagMask)
-
-deriving instance
-         Enum (VkDebugUtilsMessageSeverityBitmaskEXT FlagMask)
-
-deriving instance
-         Real (VkDebugUtilsMessageSeverityBitmaskEXT FlagMask)
-
 instance Show (VkDebugUtilsMessageSeverityBitmaskEXT a) where
-        showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT
-          = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"
-        showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT
-          = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"
-        showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT
-          = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"
-        showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT
-          = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"
-        showsPrec p (VkDebugUtilsMessageSeverityBitmaskEXT x)
-          = showParen (p >= 11)
-              (showString "VkDebugUtilsMessageSeverityBitmaskEXT " .
-                 showsPrec 11 x)
+    showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT
+      = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"
+    showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT
+      = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"
+    showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT
+      = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"
+    showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT
+      = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"
+    showsPrec p (VkDebugUtilsMessageSeverityBitmaskEXT x)
+      = showParen (p >= 11)
+          (showString "VkDebugUtilsMessageSeverityBitmaskEXT " .
+             showsPrec 11 x)
 
 instance Read (VkDebugUtilsMessageSeverityBitmaskEXT a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT",
-                   pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT),
-                  ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT",
-                   pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT),
-                  ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT",
-                   pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT),
-                  ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT",
-                   pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDebugUtilsMessageSeverityBitmaskEXT") >>
-                      (VkDebugUtilsMessageSeverityBitmaskEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT",
+               pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT),
+              ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT",
+               pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT),
+              ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT",
+               pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT),
+              ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT",
+               pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDebugUtilsMessageSeverityBitmaskEXT") >>
+                  (VkDebugUtilsMessageSeverityBitmaskEXT <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT ::
@@ -648,8 +617,7 @@
 
 newtype VkDebugUtilsMessageTypeBitmaskEXT (a ::
                                              FlagType) = VkDebugUtilsMessageTypeBitmaskEXT VkFlags
-                                                           deriving (Eq, Ord, Storable, Data,
-                                                                     Generic)
+                                                         deriving (Eq, Ord, Storable)
 
 type VkDebugUtilsMessageTypeFlagsEXT =
      VkDebugUtilsMessageTypeBitmaskEXT FlagMask
@@ -674,43 +642,31 @@
 deriving instance
          FiniteBits (VkDebugUtilsMessageTypeBitmaskEXT FlagMask)
 
-deriving instance
-         Integral (VkDebugUtilsMessageTypeBitmaskEXT FlagMask)
-
-deriving instance Num (VkDebugUtilsMessageTypeBitmaskEXT FlagMask)
-
-deriving instance
-         Bounded (VkDebugUtilsMessageTypeBitmaskEXT FlagMask)
-
-deriving instance Enum (VkDebugUtilsMessageTypeBitmaskEXT FlagMask)
-
-deriving instance Real (VkDebugUtilsMessageTypeBitmaskEXT FlagMask)
-
 instance Show (VkDebugUtilsMessageTypeBitmaskEXT a) where
-        showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT
-          = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"
-        showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT
-          = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"
-        showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT
-          = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"
-        showsPrec p (VkDebugUtilsMessageTypeBitmaskEXT x)
-          = showParen (p >= 11)
-              (showString "VkDebugUtilsMessageTypeBitmaskEXT " . showsPrec 11 x)
+    showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT
+      = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"
+    showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT
+      = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"
+    showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT
+      = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"
+    showsPrec p (VkDebugUtilsMessageTypeBitmaskEXT x)
+      = showParen (p >= 11)
+          (showString "VkDebugUtilsMessageTypeBitmaskEXT " . showsPrec 11 x)
 
 instance Read (VkDebugUtilsMessageTypeBitmaskEXT a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT",
-                   pure VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT),
-                  ("VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT",
-                   pure VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT),
-                  ("VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT",
-                   pure VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDebugUtilsMessageTypeBitmaskEXT") >>
-                      (VkDebugUtilsMessageTypeBitmaskEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT",
+               pure VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT),
+              ("VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT",
+               pure VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT),
+              ("VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT",
+               pure VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDebugUtilsMessageTypeBitmaskEXT") >>
+                  (VkDebugUtilsMessageTypeBitmaskEXT <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT ::
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/DependencyFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/DependencyFlags.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/DependencyFlags.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/DependencyFlags.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -15,9 +13,7 @@
         VkDependencyFlags, VkDependencyFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -27,7 +23,7 @@
 
 newtype VkDependencyBitmask (a ::
                                FlagType) = VkDependencyBitmask VkFlags
-                                             deriving (Eq, Ord, Storable, Data, Generic)
+                                           deriving (Eq, Ord, Storable)
 
 type VkDependencyFlags = VkDependencyBitmask FlagMask
 
@@ -47,32 +43,22 @@
 
 deriving instance FiniteBits (VkDependencyBitmask FlagMask)
 
-deriving instance Integral (VkDependencyBitmask FlagMask)
-
-deriving instance Num (VkDependencyBitmask FlagMask)
-
-deriving instance Bounded (VkDependencyBitmask FlagMask)
-
-deriving instance Enum (VkDependencyBitmask FlagMask)
-
-deriving instance Real (VkDependencyBitmask FlagMask)
-
 instance Show (VkDependencyBitmask a) where
-        showsPrec _ VK_DEPENDENCY_BY_REGION_BIT
-          = showString "VK_DEPENDENCY_BY_REGION_BIT"
-        showsPrec p (VkDependencyBitmask x)
-          = showParen (p >= 11)
-              (showString "VkDependencyBitmask " . showsPrec 11 x)
+    showsPrec _ VK_DEPENDENCY_BY_REGION_BIT
+      = showString "VK_DEPENDENCY_BY_REGION_BIT"
+    showsPrec p (VkDependencyBitmask x)
+      = showParen (p >= 11)
+          (showString "VkDependencyBitmask " . showsPrec 11 x)
 
 instance Read (VkDependencyBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DEPENDENCY_BY_REGION_BIT", pure VK_DEPENDENCY_BY_REGION_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDependencyBitmask") >>
-                      (VkDependencyBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DEPENDENCY_BY_REGION_BIT", pure VK_DEPENDENCY_BY_REGION_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDependencyBitmask") >>
+                  (VkDependencyBitmask <$> step readPrec)))
 
 -- | Dependency is per pixel region
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Descriptor.hs b/src-gen/Graphics/Vulkan/Types/Enum/Descriptor.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Descriptor.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Descriptor.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -42,9 +40,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -54,7 +50,7 @@
 
 newtype VkDescriptorBindingBitmaskEXT (a ::
                                          FlagType) = VkDescriptorBindingBitmaskEXT VkFlags
-                                                       deriving (Eq, Ord, Storable, Data, Generic)
+                                                     deriving (Eq, Ord, Storable)
 
 type VkDescriptorBindingFlagsEXT =
      VkDescriptorBindingBitmaskEXT FlagMask
@@ -79,48 +75,38 @@
 deriving instance
          FiniteBits (VkDescriptorBindingBitmaskEXT FlagMask)
 
-deriving instance Integral (VkDescriptorBindingBitmaskEXT FlagMask)
-
-deriving instance Num (VkDescriptorBindingBitmaskEXT FlagMask)
-
-deriving instance Bounded (VkDescriptorBindingBitmaskEXT FlagMask)
-
-deriving instance Enum (VkDescriptorBindingBitmaskEXT FlagMask)
-
-deriving instance Real (VkDescriptorBindingBitmaskEXT FlagMask)
-
 instance Show (VkDescriptorBindingBitmaskEXT a) where
-        showsPrec _ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
-          = showString "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"
-        showsPrec _
-          VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
-          = showString
-              "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"
-        showsPrec _ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT
-          = showString "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"
-        showsPrec _ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
-          = showString
-              "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"
-        showsPrec p (VkDescriptorBindingBitmaskEXT x)
-          = showParen (p >= 11)
-              (showString "VkDescriptorBindingBitmaskEXT " . showsPrec 11 x)
+    showsPrec _ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
+      = showString "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"
+    showsPrec _
+      VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
+      = showString
+          "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"
+    showsPrec _ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT
+      = showString "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"
+    showsPrec _ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
+      = showString
+          "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"
+    showsPrec p (VkDescriptorBindingBitmaskEXT x)
+      = showParen (p >= 11)
+          (showString "VkDescriptorBindingBitmaskEXT " . showsPrec 11 x)
 
 instance Read (VkDescriptorBindingBitmaskEXT a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT",
-                   pure VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT),
-                  ("VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT",
-                   pure VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT),
-                  ("VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT",
-                   pure VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT),
-                  ("VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT",
-                   pure VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDescriptorBindingBitmaskEXT") >>
-                      (VkDescriptorBindingBitmaskEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT",
+               pure VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT),
+              ("VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT",
+               pure VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT),
+              ("VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT",
+               pure VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT),
+              ("VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT",
+               pure VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDescriptorBindingBitmaskEXT") >>
+                  (VkDescriptorBindingBitmaskEXT <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT ::
@@ -152,7 +138,7 @@
 
 newtype VkDescriptorPoolCreateBitmask (a ::
                                          FlagType) = VkDescriptorPoolCreateBitmask VkFlags
-                                                       deriving (Eq, Ord, Storable, Data, Generic)
+                                                     deriving (Eq, Ord, Storable)
 
 type VkDescriptorPoolCreateFlags =
      VkDescriptorPoolCreateBitmask FlagMask
@@ -177,33 +163,23 @@
 deriving instance
          FiniteBits (VkDescriptorPoolCreateBitmask FlagMask)
 
-deriving instance Integral (VkDescriptorPoolCreateBitmask FlagMask)
-
-deriving instance Num (VkDescriptorPoolCreateBitmask FlagMask)
-
-deriving instance Bounded (VkDescriptorPoolCreateBitmask FlagMask)
-
-deriving instance Enum (VkDescriptorPoolCreateBitmask FlagMask)
-
-deriving instance Real (VkDescriptorPoolCreateBitmask FlagMask)
-
 instance Show (VkDescriptorPoolCreateBitmask a) where
-        showsPrec _ VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
-          = showString "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"
-        showsPrec p (VkDescriptorPoolCreateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkDescriptorPoolCreateBitmask " . showsPrec 11 x)
+    showsPrec _ VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
+      = showString "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"
+    showsPrec p (VkDescriptorPoolCreateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkDescriptorPoolCreateBitmask " . showsPrec 11 x)
 
 instance Read (VkDescriptorPoolCreateBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT",
-                   pure VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDescriptorPoolCreateBitmask") >>
-                      (VkDescriptorPoolCreateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT",
+               pure VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDescriptorPoolCreateBitmask") >>
+                  (VkDescriptorPoolCreateBitmask <$> step readPrec)))
 
 -- | Descriptor sets may be freed individually
 --
@@ -216,8 +192,7 @@
 
 newtype VkDescriptorSetLayoutCreateBitmask (a ::
                                               FlagType) = VkDescriptorSetLayoutCreateBitmask VkFlags
-                                                            deriving (Eq, Ord, Storable, Data,
-                                                                      Generic)
+                                                          deriving (Eq, Ord, Storable)
 
 type VkDescriptorSetLayoutCreateFlags =
      VkDescriptorSetLayoutCreateBitmask FlagMask
@@ -243,95 +218,81 @@
 deriving instance
          FiniteBits (VkDescriptorSetLayoutCreateBitmask FlagMask)
 
-deriving instance
-         Integral (VkDescriptorSetLayoutCreateBitmask FlagMask)
-
-deriving instance Num (VkDescriptorSetLayoutCreateBitmask FlagMask)
-
-deriving instance
-         Bounded (VkDescriptorSetLayoutCreateBitmask FlagMask)
-
-deriving instance
-         Enum (VkDescriptorSetLayoutCreateBitmask FlagMask)
-
-deriving instance
-         Real (VkDescriptorSetLayoutCreateBitmask FlagMask)
-
 instance Show (VkDescriptorSetLayoutCreateBitmask a) where
-        showsPrec p (VkDescriptorSetLayoutCreateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkDescriptorSetLayoutCreateBitmask " . showsPrec 11 x)
+    showsPrec p (VkDescriptorSetLayoutCreateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkDescriptorSetLayoutCreateBitmask " . showsPrec 11 x)
 
 instance Read (VkDescriptorSetLayoutCreateBitmask a) where
-        readPrec
-          = parens
-              (choose [] +++
-                 prec 10
-                   (expectP (Ident "VkDescriptorSetLayoutCreateBitmask") >>
-                      (VkDescriptorSetLayoutCreateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose [] +++
+             prec 10
+               (expectP (Ident "VkDescriptorSetLayoutCreateBitmask") >>
+                  (VkDescriptorSetLayoutCreateBitmask <$> step readPrec)))
 
 -- | type = @enum@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorType VkDescriptorType registry at www.khronos.org>
 newtype VkDescriptorType = VkDescriptorType Int32
-                             deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                           deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkDescriptorType where
-        showsPrec _ VK_DESCRIPTOR_TYPE_SAMPLER
-          = showString "VK_DESCRIPTOR_TYPE_SAMPLER"
-        showsPrec _ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
-          = showString "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"
-        showsPrec _ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
-          = showString "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"
-        showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
-          = showString "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"
-        showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
-          = showString "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"
-        showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
-          = showString "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"
-        showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
-          = showString "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"
-        showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
-          = showString "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"
-        showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
-          = showString "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"
-        showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
-          = showString "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"
-        showsPrec _ VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
-          = showString "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"
-        showsPrec p (VkDescriptorType x)
-          = showParen (p >= 11)
-              (showString "VkDescriptorType " . showsPrec 11 x)
+    showsPrec _ VK_DESCRIPTOR_TYPE_SAMPLER
+      = showString "VK_DESCRIPTOR_TYPE_SAMPLER"
+    showsPrec _ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
+      = showString "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"
+    showsPrec _ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
+      = showString "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"
+    showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
+      = showString "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"
+    showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
+      = showString "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"
+    showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
+      = showString "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"
+    showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
+      = showString "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"
+    showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
+      = showString "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"
+    showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
+      = showString "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"
+    showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
+      = showString "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"
+    showsPrec _ VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
+      = showString "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"
+    showsPrec p (VkDescriptorType x)
+      = showParen (p >= 11)
+          (showString "VkDescriptorType " . showsPrec 11 x)
 
 instance Read VkDescriptorType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DESCRIPTOR_TYPE_SAMPLER", pure VK_DESCRIPTOR_TYPE_SAMPLER),
-                  ("VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER",
-                   pure VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER),
-                  ("VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE",
-                   pure VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE),
-                  ("VK_DESCRIPTOR_TYPE_STORAGE_IMAGE",
-                   pure VK_DESCRIPTOR_TYPE_STORAGE_IMAGE),
-                  ("VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER",
-                   pure VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER),
-                  ("VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER",
-                   pure VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER),
-                  ("VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER",
-                   pure VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER),
-                  ("VK_DESCRIPTOR_TYPE_STORAGE_BUFFER",
-                   pure VK_DESCRIPTOR_TYPE_STORAGE_BUFFER),
-                  ("VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC",
-                   pure VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC),
-                  ("VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC",
-                   pure VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC),
-                  ("VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT",
-                   pure VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDescriptorType") >>
-                      (VkDescriptorType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DESCRIPTOR_TYPE_SAMPLER", pure VK_DESCRIPTOR_TYPE_SAMPLER),
+              ("VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER",
+               pure VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER),
+              ("VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE",
+               pure VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE),
+              ("VK_DESCRIPTOR_TYPE_STORAGE_IMAGE",
+               pure VK_DESCRIPTOR_TYPE_STORAGE_IMAGE),
+              ("VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER",
+               pure VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER),
+              ("VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER",
+               pure VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER),
+              ("VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER",
+               pure VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER),
+              ("VK_DESCRIPTOR_TYPE_STORAGE_BUFFER",
+               pure VK_DESCRIPTOR_TYPE_STORAGE_BUFFER),
+              ("VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC",
+               pure VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC),
+              ("VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC",
+               pure VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC),
+              ("VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT",
+               pure VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDescriptorType") >>
+                  (VkDescriptorType <$> step readPrec)))
 
 pattern VK_DESCRIPTOR_TYPE_SAMPLER :: VkDescriptorType
 
@@ -389,26 +350,25 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateType registry at www.khronos.org>
 newtype VkDescriptorUpdateTemplateType = VkDescriptorUpdateTemplateType Int32
-                                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                     Generic)
+                                         deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkDescriptorUpdateTemplateType where
-        showsPrec _ VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
-          = showString "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"
-        showsPrec p (VkDescriptorUpdateTemplateType x)
-          = showParen (p >= 11)
-              (showString "VkDescriptorUpdateTemplateType " . showsPrec 11 x)
+    showsPrec _ VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
+      = showString "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"
+    showsPrec p (VkDescriptorUpdateTemplateType x)
+      = showParen (p >= 11)
+          (showString "VkDescriptorUpdateTemplateType " . showsPrec 11 x)
 
 instance Read VkDescriptorUpdateTemplateType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET",
-                   pure VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDescriptorUpdateTemplateType") >>
-                      (VkDescriptorUpdateTemplateType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET",
+               pure VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET)]
+             +++
+             prec 10
+               (expectP (Ident "VkDescriptorUpdateTemplateType") >>
+                  (VkDescriptorUpdateTemplateType <$> step readPrec)))
 
 -- | Create descriptor update template for descriptor set updates
 pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET ::
@@ -418,13 +378,12 @@
         VkDescriptorUpdateTemplateType 0
 
 newtype VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateTypeKHR VkFlags
-                                              deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                        FiniteBits, Storable, Real, Data, Generic)
+                                            deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkDescriptorUpdateTemplateTypeKHR where
-        {-# INLINE show #-}
-        show (VkDescriptorUpdateTemplateTypeKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDescriptorUpdateTemplateTypeKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Device.hs b/src-gen/Graphics/Vulkan/Types/Enum/Device.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Device.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Device.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -28,9 +26,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -39,40 +35,39 @@
 import Text.Read.Lex                   (Lexeme (..))
 
 newtype VkDeviceCreateFlagBits = VkDeviceCreateFlagBits VkFlags
-                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                             FiniteBits, Storable, Real, Data, Generic)
+                                 deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkDeviceCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkDeviceCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkDeviceCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 -- | type = @enum@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceEventTypeEXT VkDeviceEventTypeEXT registry at www.khronos.org>
 newtype VkDeviceEventTypeEXT = VkDeviceEventTypeEXT Int32
-                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                               deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkDeviceEventTypeEXT where
-        showsPrec _ VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
-          = showString "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"
-        showsPrec p (VkDeviceEventTypeEXT x)
-          = showParen (p >= 11)
-              (showString "VkDeviceEventTypeEXT " . showsPrec 11 x)
+    showsPrec _ VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
+      = showString "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"
+    showsPrec p (VkDeviceEventTypeEXT x)
+      = showParen (p >= 11)
+          (showString "VkDeviceEventTypeEXT " . showsPrec 11 x)
 
 instance Read VkDeviceEventTypeEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT",
-                   pure VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDeviceEventTypeEXT") >>
-                      (VkDeviceEventTypeEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT",
+               pure VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDeviceEventTypeEXT") >>
+                  (VkDeviceEventTypeEXT <$> step readPrec)))
 
 pattern VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT ::
         VkDeviceEventTypeEXT
@@ -82,8 +77,7 @@
 
 newtype VkDeviceGroupPresentModeBitmaskKHR (a ::
                                               FlagType) = VkDeviceGroupPresentModeBitmaskKHR VkFlags
-                                                            deriving (Eq, Ord, Storable, Data,
-                                                                      Generic)
+                                                          deriving (Eq, Ord, Storable)
 
 type VkDeviceGroupPresentModeFlagsKHR =
      VkDeviceGroupPresentModeBitmaskKHR FlagMask
@@ -109,50 +103,36 @@
 deriving instance
          FiniteBits (VkDeviceGroupPresentModeBitmaskKHR FlagMask)
 
-deriving instance
-         Integral (VkDeviceGroupPresentModeBitmaskKHR FlagMask)
-
-deriving instance Num (VkDeviceGroupPresentModeBitmaskKHR FlagMask)
-
-deriving instance
-         Bounded (VkDeviceGroupPresentModeBitmaskKHR FlagMask)
-
-deriving instance
-         Enum (VkDeviceGroupPresentModeBitmaskKHR FlagMask)
-
-deriving instance
-         Real (VkDeviceGroupPresentModeBitmaskKHR FlagMask)
-
 instance Show (VkDeviceGroupPresentModeBitmaskKHR a) where
-        showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR
-          = showString "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"
-        showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR
-          = showString "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"
-        showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR
-          = showString "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"
-        showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR
-          = showString
-              "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"
-        showsPrec p (VkDeviceGroupPresentModeBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkDeviceGroupPresentModeBitmaskKHR " . showsPrec 11 x)
+    showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR
+      = showString "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"
+    showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR
+      = showString "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"
+    showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR
+      = showString "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"
+    showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR
+      = showString
+          "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"
+    showsPrec p (VkDeviceGroupPresentModeBitmaskKHR x)
+      = showParen (p >= 11)
+          (showString "VkDeviceGroupPresentModeBitmaskKHR " . showsPrec 11 x)
 
 instance Read (VkDeviceGroupPresentModeBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR",
-                   pure VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR),
-                  ("VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR",
-                   pure VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR),
-                  ("VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR",
-                   pure VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR),
-                  ("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR",
-                   pure VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDeviceGroupPresentModeBitmaskKHR") >>
-                      (VkDeviceGroupPresentModeBitmaskKHR <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR",
+               pure VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR),
+              ("VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR",
+               pure VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR),
+              ("VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR",
+               pure VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR),
+              ("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR",
+               pure VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR)]
+             +++
+             prec 10
+               (expectP (Ident "VkDeviceGroupPresentModeBitmaskKHR") >>
+                  (VkDeviceGroupPresentModeBitmaskKHR <$> step readPrec)))
 
 -- | Present from local memory
 --
@@ -192,7 +172,7 @@
 
 newtype VkDeviceQueueCreateBitmask (a ::
                                       FlagType) = VkDeviceQueueCreateBitmask VkFlags
-                                                    deriving (Eq, Ord, Storable, Data, Generic)
+                                                  deriving (Eq, Ord, Storable)
 
 type VkDeviceQueueCreateFlags = VkDeviceQueueCreateBitmask FlagMask
 
@@ -214,25 +194,15 @@
 
 deriving instance FiniteBits (VkDeviceQueueCreateBitmask FlagMask)
 
-deriving instance Integral (VkDeviceQueueCreateBitmask FlagMask)
-
-deriving instance Num (VkDeviceQueueCreateBitmask FlagMask)
-
-deriving instance Bounded (VkDeviceQueueCreateBitmask FlagMask)
-
-deriving instance Enum (VkDeviceQueueCreateBitmask FlagMask)
-
-deriving instance Real (VkDeviceQueueCreateBitmask FlagMask)
-
 instance Show (VkDeviceQueueCreateBitmask a) where
-        showsPrec p (VkDeviceQueueCreateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkDeviceQueueCreateBitmask " . showsPrec 11 x)
+    showsPrec p (VkDeviceQueueCreateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkDeviceQueueCreateBitmask " . showsPrec 11 x)
 
 instance Read (VkDeviceQueueCreateBitmask a) where
-        readPrec
-          = parens
-              (choose [] +++
-                 prec 10
-                   (expectP (Ident "VkDeviceQueueCreateBitmask") >>
-                      (VkDeviceQueueCreateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose [] +++
+             prec 10
+               (expectP (Ident "VkDeviceQueueCreateBitmask") >>
+                  (VkDeviceQueueCreateBitmask <$> step readPrec)))
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/DiscardRectangleModeEXT.hs b/src-gen/Graphics/Vulkan/Types/Enum/DiscardRectangleModeEXT.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/DiscardRectangleModeEXT.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/DiscardRectangleModeEXT.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -10,9 +8,7 @@
                                   VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
                                   VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -23,30 +19,29 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDiscardRectangleModeEXT VkDiscardRectangleModeEXT registry at www.khronos.org>
 newtype VkDiscardRectangleModeEXT = VkDiscardRectangleModeEXT Int32
-                                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                Generic)
+                                    deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkDiscardRectangleModeEXT where
-        showsPrec _ VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT
-          = showString "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"
-        showsPrec _ VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
-          = showString "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"
-        showsPrec p (VkDiscardRectangleModeEXT x)
-          = showParen (p >= 11)
-              (showString "VkDiscardRectangleModeEXT " . showsPrec 11 x)
+    showsPrec _ VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT
+      = showString "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"
+    showsPrec _ VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
+      = showString "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"
+    showsPrec p (VkDiscardRectangleModeEXT x)
+      = showParen (p >= 11)
+          (showString "VkDiscardRectangleModeEXT " . showsPrec 11 x)
 
 instance Read VkDiscardRectangleModeEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT",
-                   pure VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT),
-                  ("VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT",
-                   pure VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDiscardRectangleModeEXT") >>
-                      (VkDiscardRectangleModeEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT",
+               pure VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT),
+              ("VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT",
+               pure VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDiscardRectangleModeEXT") >>
+                  (VkDiscardRectangleModeEXT <$> step readPrec)))
 
 pattern VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT ::
         VkDiscardRectangleModeEXT
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Display.hs b/src-gen/Graphics/Vulkan/Types/Enum/Display.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Display.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Display.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -24,9 +22,7 @@
                                VK_DISPLAY_POWER_STATE_ON_EXT))
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -38,25 +34,25 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayEventTypeEXT VkDisplayEventTypeEXT registry at www.khronos.org>
 newtype VkDisplayEventTypeEXT = VkDisplayEventTypeEXT Int32
-                                  deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                                deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkDisplayEventTypeEXT where
-        showsPrec _ VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
-          = showString "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"
-        showsPrec p (VkDisplayEventTypeEXT x)
-          = showParen (p >= 11)
-              (showString "VkDisplayEventTypeEXT " . showsPrec 11 x)
+    showsPrec _ VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
+      = showString "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"
+    showsPrec p (VkDisplayEventTypeEXT x)
+      = showParen (p >= 11)
+          (showString "VkDisplayEventTypeEXT " . showsPrec 11 x)
 
 instance Read VkDisplayEventTypeEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT",
-                   pure VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDisplayEventTypeEXT") >>
-                      (VkDisplayEventTypeEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT",
+               pure VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDisplayEventTypeEXT") >>
+                  (VkDisplayEventTypeEXT <$> step readPrec)))
 
 pattern VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT ::
         VkDisplayEventTypeEXT
@@ -66,7 +62,7 @@
 
 newtype VkDisplayPlaneAlphaBitmaskKHR (a ::
                                          FlagType) = VkDisplayPlaneAlphaBitmaskKHR VkFlags
-                                                       deriving (Eq, Ord, Storable, Data, Generic)
+                                                     deriving (Eq, Ord, Storable)
 
 type VkDisplayPlaneAlphaFlagsKHR =
      VkDisplayPlaneAlphaBitmaskKHR FlagMask
@@ -91,46 +87,36 @@
 deriving instance
          FiniteBits (VkDisplayPlaneAlphaBitmaskKHR FlagMask)
 
-deriving instance Integral (VkDisplayPlaneAlphaBitmaskKHR FlagMask)
-
-deriving instance Num (VkDisplayPlaneAlphaBitmaskKHR FlagMask)
-
-deriving instance Bounded (VkDisplayPlaneAlphaBitmaskKHR FlagMask)
-
-deriving instance Enum (VkDisplayPlaneAlphaBitmaskKHR FlagMask)
-
-deriving instance Real (VkDisplayPlaneAlphaBitmaskKHR FlagMask)
-
 instance Show (VkDisplayPlaneAlphaBitmaskKHR a) where
-        showsPrec _ VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR
-          = showString "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"
-        showsPrec _ VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR
-          = showString "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"
-        showsPrec _ VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR
-          = showString "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"
-        showsPrec _ VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
-          = showString
-              "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"
-        showsPrec p (VkDisplayPlaneAlphaBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkDisplayPlaneAlphaBitmaskKHR " . showsPrec 11 x)
+    showsPrec _ VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR
+      = showString "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"
+    showsPrec _ VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR
+      = showString "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"
+    showsPrec _ VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR
+      = showString "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"
+    showsPrec _ VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
+      = showString
+          "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"
+    showsPrec p (VkDisplayPlaneAlphaBitmaskKHR x)
+      = showParen (p >= 11)
+          (showString "VkDisplayPlaneAlphaBitmaskKHR " . showsPrec 11 x)
 
 instance Read (VkDisplayPlaneAlphaBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR",
-                   pure VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR),
-                  ("VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR",
-                   pure VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR),
-                  ("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR",
-                   pure VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR),
-                  ("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR",
-                   pure VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDisplayPlaneAlphaBitmaskKHR") >>
-                      (VkDisplayPlaneAlphaBitmaskKHR <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR",
+               pure VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR),
+              ("VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR",
+               pure VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR),
+              ("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR",
+               pure VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR),
+              ("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR",
+               pure VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR)]
+             +++
+             prec 10
+               (expectP (Ident "VkDisplayPlaneAlphaBitmaskKHR") >>
+                  (VkDisplayPlaneAlphaBitmaskKHR <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR ::
@@ -164,33 +150,33 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPowerStateEXT VkDisplayPowerStateEXT registry at www.khronos.org>
 newtype VkDisplayPowerStateEXT = VkDisplayPowerStateEXT Int32
-                                   deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                                 deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkDisplayPowerStateEXT where
-        showsPrec _ VK_DISPLAY_POWER_STATE_OFF_EXT
-          = showString "VK_DISPLAY_POWER_STATE_OFF_EXT"
-        showsPrec _ VK_DISPLAY_POWER_STATE_SUSPEND_EXT
-          = showString "VK_DISPLAY_POWER_STATE_SUSPEND_EXT"
-        showsPrec _ VK_DISPLAY_POWER_STATE_ON_EXT
-          = showString "VK_DISPLAY_POWER_STATE_ON_EXT"
-        showsPrec p (VkDisplayPowerStateEXT x)
-          = showParen (p >= 11)
-              (showString "VkDisplayPowerStateEXT " . showsPrec 11 x)
+    showsPrec _ VK_DISPLAY_POWER_STATE_OFF_EXT
+      = showString "VK_DISPLAY_POWER_STATE_OFF_EXT"
+    showsPrec _ VK_DISPLAY_POWER_STATE_SUSPEND_EXT
+      = showString "VK_DISPLAY_POWER_STATE_SUSPEND_EXT"
+    showsPrec _ VK_DISPLAY_POWER_STATE_ON_EXT
+      = showString "VK_DISPLAY_POWER_STATE_ON_EXT"
+    showsPrec p (VkDisplayPowerStateEXT x)
+      = showParen (p >= 11)
+          (showString "VkDisplayPowerStateEXT " . showsPrec 11 x)
 
 instance Read VkDisplayPowerStateEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DISPLAY_POWER_STATE_OFF_EXT",
-                   pure VK_DISPLAY_POWER_STATE_OFF_EXT),
-                  ("VK_DISPLAY_POWER_STATE_SUSPEND_EXT",
-                   pure VK_DISPLAY_POWER_STATE_SUSPEND_EXT),
-                  ("VK_DISPLAY_POWER_STATE_ON_EXT",
-                   pure VK_DISPLAY_POWER_STATE_ON_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDisplayPowerStateEXT") >>
-                      (VkDisplayPowerStateEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DISPLAY_POWER_STATE_OFF_EXT",
+               pure VK_DISPLAY_POWER_STATE_OFF_EXT),
+              ("VK_DISPLAY_POWER_STATE_SUSPEND_EXT",
+               pure VK_DISPLAY_POWER_STATE_SUSPEND_EXT),
+              ("VK_DISPLAY_POWER_STATE_ON_EXT",
+               pure VK_DISPLAY_POWER_STATE_ON_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkDisplayPowerStateEXT") >>
+                  (VkDisplayPowerStateEXT <$> step readPrec)))
 
 pattern VK_DISPLAY_POWER_STATE_OFF_EXT :: VkDisplayPowerStateEXT
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/DynamicState.hs b/src-gen/Graphics/Vulkan/Types/Enum/DynamicState.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/DynamicState.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/DynamicState.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -14,9 +12,7 @@
                        VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
                        VK_DYNAMIC_STATE_STENCIL_REFERENCE))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -27,53 +23,53 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDynamicState VkDynamicState registry at www.khronos.org>
 newtype VkDynamicState = VkDynamicState Int32
-                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                         deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkDynamicState where
-        showsPrec _ VK_DYNAMIC_STATE_VIEWPORT
-          = showString "VK_DYNAMIC_STATE_VIEWPORT"
-        showsPrec _ VK_DYNAMIC_STATE_SCISSOR
-          = showString "VK_DYNAMIC_STATE_SCISSOR"
-        showsPrec _ VK_DYNAMIC_STATE_LINE_WIDTH
-          = showString "VK_DYNAMIC_STATE_LINE_WIDTH"
-        showsPrec _ VK_DYNAMIC_STATE_DEPTH_BIAS
-          = showString "VK_DYNAMIC_STATE_DEPTH_BIAS"
-        showsPrec _ VK_DYNAMIC_STATE_BLEND_CONSTANTS
-          = showString "VK_DYNAMIC_STATE_BLEND_CONSTANTS"
-        showsPrec _ VK_DYNAMIC_STATE_DEPTH_BOUNDS
-          = showString "VK_DYNAMIC_STATE_DEPTH_BOUNDS"
-        showsPrec _ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK
-          = showString "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"
-        showsPrec _ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
-          = showString "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"
-        showsPrec _ VK_DYNAMIC_STATE_STENCIL_REFERENCE
-          = showString "VK_DYNAMIC_STATE_STENCIL_REFERENCE"
-        showsPrec p (VkDynamicState x)
-          = showParen (p >= 11)
-              (showString "VkDynamicState " . showsPrec 11 x)
+    showsPrec _ VK_DYNAMIC_STATE_VIEWPORT
+      = showString "VK_DYNAMIC_STATE_VIEWPORT"
+    showsPrec _ VK_DYNAMIC_STATE_SCISSOR
+      = showString "VK_DYNAMIC_STATE_SCISSOR"
+    showsPrec _ VK_DYNAMIC_STATE_LINE_WIDTH
+      = showString "VK_DYNAMIC_STATE_LINE_WIDTH"
+    showsPrec _ VK_DYNAMIC_STATE_DEPTH_BIAS
+      = showString "VK_DYNAMIC_STATE_DEPTH_BIAS"
+    showsPrec _ VK_DYNAMIC_STATE_BLEND_CONSTANTS
+      = showString "VK_DYNAMIC_STATE_BLEND_CONSTANTS"
+    showsPrec _ VK_DYNAMIC_STATE_DEPTH_BOUNDS
+      = showString "VK_DYNAMIC_STATE_DEPTH_BOUNDS"
+    showsPrec _ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK
+      = showString "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"
+    showsPrec _ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
+      = showString "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"
+    showsPrec _ VK_DYNAMIC_STATE_STENCIL_REFERENCE
+      = showString "VK_DYNAMIC_STATE_STENCIL_REFERENCE"
+    showsPrec p (VkDynamicState x)
+      = showParen (p >= 11)
+          (showString "VkDynamicState " . showsPrec 11 x)
 
 instance Read VkDynamicState where
-        readPrec
-          = parens
-              (choose
-                 [("VK_DYNAMIC_STATE_VIEWPORT", pure VK_DYNAMIC_STATE_VIEWPORT),
-                  ("VK_DYNAMIC_STATE_SCISSOR", pure VK_DYNAMIC_STATE_SCISSOR),
-                  ("VK_DYNAMIC_STATE_LINE_WIDTH", pure VK_DYNAMIC_STATE_LINE_WIDTH),
-                  ("VK_DYNAMIC_STATE_DEPTH_BIAS", pure VK_DYNAMIC_STATE_DEPTH_BIAS),
-                  ("VK_DYNAMIC_STATE_BLEND_CONSTANTS",
-                   pure VK_DYNAMIC_STATE_BLEND_CONSTANTS),
-                  ("VK_DYNAMIC_STATE_DEPTH_BOUNDS",
-                   pure VK_DYNAMIC_STATE_DEPTH_BOUNDS),
-                  ("VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK",
-                   pure VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK),
-                  ("VK_DYNAMIC_STATE_STENCIL_WRITE_MASK",
-                   pure VK_DYNAMIC_STATE_STENCIL_WRITE_MASK),
-                  ("VK_DYNAMIC_STATE_STENCIL_REFERENCE",
-                   pure VK_DYNAMIC_STATE_STENCIL_REFERENCE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkDynamicState") >>
-                      (VkDynamicState <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_DYNAMIC_STATE_VIEWPORT", pure VK_DYNAMIC_STATE_VIEWPORT),
+              ("VK_DYNAMIC_STATE_SCISSOR", pure VK_DYNAMIC_STATE_SCISSOR),
+              ("VK_DYNAMIC_STATE_LINE_WIDTH", pure VK_DYNAMIC_STATE_LINE_WIDTH),
+              ("VK_DYNAMIC_STATE_DEPTH_BIAS", pure VK_DYNAMIC_STATE_DEPTH_BIAS),
+              ("VK_DYNAMIC_STATE_BLEND_CONSTANTS",
+               pure VK_DYNAMIC_STATE_BLEND_CONSTANTS),
+              ("VK_DYNAMIC_STATE_DEPTH_BOUNDS",
+               pure VK_DYNAMIC_STATE_DEPTH_BOUNDS),
+              ("VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK",
+               pure VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK),
+              ("VK_DYNAMIC_STATE_STENCIL_WRITE_MASK",
+               pure VK_DYNAMIC_STATE_STENCIL_WRITE_MASK),
+              ("VK_DYNAMIC_STATE_STENCIL_REFERENCE",
+               pure VK_DYNAMIC_STATE_STENCIL_REFERENCE)]
+             +++
+             prec 10
+               (expectP (Ident "VkDynamicState") >>
+                  (VkDynamicState <$> step readPrec)))
 
 pattern VK_DYNAMIC_STATE_VIEWPORT :: VkDynamicState
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/External.hs b/src-gen/Graphics/Vulkan/Types/Enum/External.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/External.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/External.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -84,9 +82,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -95,20 +91,19 @@
 import Text.Read.Lex                   (Lexeme (..))
 
 newtype VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBitsKHR VkFlags
-                                              deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                        FiniteBits, Storable, Real, Data, Generic)
+                                            deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalFenceFeatureFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkExternalFenceFeatureFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalFenceFeatureFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalFenceFeatureBitmask (a ::
                                          FlagType) = VkExternalFenceFeatureBitmask VkFlags
-                                                       deriving (Eq, Ord, Storable, Data, Generic)
+                                                     deriving (Eq, Ord, Storable)
 
 type VkExternalFenceFeatureFlags =
      VkExternalFenceFeatureBitmask FlagMask
@@ -133,37 +128,27 @@
 deriving instance
          FiniteBits (VkExternalFenceFeatureBitmask FlagMask)
 
-deriving instance Integral (VkExternalFenceFeatureBitmask FlagMask)
-
-deriving instance Num (VkExternalFenceFeatureBitmask FlagMask)
-
-deriving instance Bounded (VkExternalFenceFeatureBitmask FlagMask)
-
-deriving instance Enum (VkExternalFenceFeatureBitmask FlagMask)
-
-deriving instance Real (VkExternalFenceFeatureBitmask FlagMask)
-
 instance Show (VkExternalFenceFeatureBitmask a) where
-        showsPrec _ VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT
-          = showString "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"
-        showsPrec _ VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
-          = showString "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"
-        showsPrec p (VkExternalFenceFeatureBitmask x)
-          = showParen (p >= 11)
-              (showString "VkExternalFenceFeatureBitmask " . showsPrec 11 x)
+    showsPrec _ VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT
+      = showString "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"
+    showsPrec _ VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
+      = showString "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"
+    showsPrec p (VkExternalFenceFeatureBitmask x)
+      = showParen (p >= 11)
+          (showString "VkExternalFenceFeatureBitmask " . showsPrec 11 x)
 
 instance Read (VkExternalFenceFeatureBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT",
-                   pure VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT),
-                  ("VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT",
-                   pure VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalFenceFeatureBitmask") >>
-                      (VkExternalFenceFeatureBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT",
+               pure VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT),
+              ("VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT",
+               pure VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkExternalFenceFeatureBitmask") >>
+                  (VkExternalFenceFeatureBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT ::
@@ -180,22 +165,19 @@
         VkExternalFenceFeatureBitmask 2
 
 newtype VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBitsKHR VkFlags
-                                                 deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                           Bits, FiniteBits, Storable, Real, Data,
-                                                           Generic)
+                                               deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalFenceHandleTypeFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkExternalFenceHandleTypeFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalFenceHandleTypeFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalFenceHandleTypeBitmask (a ::
                                             FlagType) = VkExternalFenceHandleTypeBitmask VkFlags
-                                                          deriving (Eq, Ord, Storable, Data,
-                                                                    Generic)
+                                                        deriving (Eq, Ord, Storable)
 
 type VkExternalFenceHandleTypeFlags =
      VkExternalFenceHandleTypeBitmask FlagMask
@@ -220,47 +202,35 @@
 deriving instance
          FiniteBits (VkExternalFenceHandleTypeBitmask FlagMask)
 
-deriving instance
-         Integral (VkExternalFenceHandleTypeBitmask FlagMask)
-
-deriving instance Num (VkExternalFenceHandleTypeBitmask FlagMask)
-
-deriving instance
-         Bounded (VkExternalFenceHandleTypeBitmask FlagMask)
-
-deriving instance Enum (VkExternalFenceHandleTypeBitmask FlagMask)
-
-deriving instance Real (VkExternalFenceHandleTypeBitmask FlagMask)
-
 instance Show (VkExternalFenceHandleTypeBitmask a) where
-        showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT
-          = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"
-        showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
-          = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"
-        showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
-          = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
-        showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
-          = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"
-        showsPrec p (VkExternalFenceHandleTypeBitmask x)
-          = showParen (p >= 11)
-              (showString "VkExternalFenceHandleTypeBitmask " . showsPrec 11 x)
+    showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT
+      = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"
+    showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
+      = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"
+    showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+      = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
+    showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT
+      = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"
+    showsPrec p (VkExternalFenceHandleTypeBitmask x)
+      = showParen (p >= 11)
+          (showString "VkExternalFenceHandleTypeBitmask " . showsPrec 11 x)
 
 instance Read (VkExternalFenceHandleTypeBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT",
-                   pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT),
-                  ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT",
-                   pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT),
-                  ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT",
-                   pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT),
-                  ("VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT",
-                   pure VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalFenceHandleTypeBitmask") >>
-                      (VkExternalFenceHandleTypeBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT",
+               pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT),
+              ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT",
+               pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT),
+              ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT",
+               pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT),
+              ("VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT",
+               pure VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkExternalFenceHandleTypeBitmask") >>
+                  (VkExternalFenceHandleTypeBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT ::
@@ -291,21 +261,19 @@
         VkExternalFenceHandleTypeBitmask 8
 
 newtype VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBitsKHR VkFlags
-                                               deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                         Bits, FiniteBits, Storable, Real, Data,
-                                                         Generic)
+                                             deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalMemoryFeatureFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkExternalMemoryFeatureFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalMemoryFeatureFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalMemoryFeatureBitmask (a ::
                                           FlagType) = VkExternalMemoryFeatureBitmask VkFlags
-                                                        deriving (Eq, Ord, Storable, Data, Generic)
+                                                      deriving (Eq, Ord, Storable)
 
 type VkExternalMemoryFeatureFlags =
      VkExternalMemoryFeatureBitmask FlagMask
@@ -330,42 +298,31 @@
 deriving instance
          FiniteBits (VkExternalMemoryFeatureBitmask FlagMask)
 
-deriving instance
-         Integral (VkExternalMemoryFeatureBitmask FlagMask)
-
-deriving instance Num (VkExternalMemoryFeatureBitmask FlagMask)
-
-deriving instance Bounded (VkExternalMemoryFeatureBitmask FlagMask)
-
-deriving instance Enum (VkExternalMemoryFeatureBitmask FlagMask)
-
-deriving instance Real (VkExternalMemoryFeatureBitmask FlagMask)
-
 instance Show (VkExternalMemoryFeatureBitmask a) where
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"
-        showsPrec p (VkExternalMemoryFeatureBitmask x)
-          = showParen (p >= 11)
-              (showString "VkExternalMemoryFeatureBitmask " . showsPrec 11 x)
+    showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT
+      = showString "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"
+    showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT
+      = showString "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"
+    showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT
+      = showString "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"
+    showsPrec p (VkExternalMemoryFeatureBitmask x)
+      = showParen (p >= 11)
+          (showString "VkExternalMemoryFeatureBitmask " . showsPrec 11 x)
 
 instance Read (VkExternalMemoryFeatureBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT),
-                  ("VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT),
-                  ("VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalMemoryFeatureBitmask") >>
-                      (VkExternalMemoryFeatureBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT",
+               pure VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT),
+              ("VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT",
+               pure VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT),
+              ("VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT",
+               pure VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkExternalMemoryFeatureBitmask") >>
+                  (VkExternalMemoryFeatureBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT ::
@@ -390,8 +347,7 @@
 
 newtype VkExternalMemoryFeatureBitmaskNV (a ::
                                             FlagType) = VkExternalMemoryFeatureBitmaskNV VkFlags
-                                                          deriving (Eq, Ord, Storable, Data,
-                                                                    Generic)
+                                                        deriving (Eq, Ord, Storable)
 
 type VkExternalMemoryFeatureFlagsNV =
      VkExternalMemoryFeatureBitmaskNV FlagMask
@@ -416,43 +372,31 @@
 deriving instance
          FiniteBits (VkExternalMemoryFeatureBitmaskNV FlagMask)
 
-deriving instance
-         Integral (VkExternalMemoryFeatureBitmaskNV FlagMask)
-
-deriving instance Num (VkExternalMemoryFeatureBitmaskNV FlagMask)
-
-deriving instance
-         Bounded (VkExternalMemoryFeatureBitmaskNV FlagMask)
-
-deriving instance Enum (VkExternalMemoryFeatureBitmaskNV FlagMask)
-
-deriving instance Real (VkExternalMemoryFeatureBitmaskNV FlagMask)
-
 instance Show (VkExternalMemoryFeatureBitmaskNV a) where
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"
-        showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
-          = showString "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"
-        showsPrec p (VkExternalMemoryFeatureBitmaskNV x)
-          = showParen (p >= 11)
-              (showString "VkExternalMemoryFeatureBitmaskNV " . showsPrec 11 x)
+    showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV
+      = showString "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"
+    showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV
+      = showString "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"
+    showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
+      = showString "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"
+    showsPrec p (VkExternalMemoryFeatureBitmaskNV x)
+      = showParen (p >= 11)
+          (showString "VkExternalMemoryFeatureBitmaskNV " . showsPrec 11 x)
 
 instance Read (VkExternalMemoryFeatureBitmaskNV a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV),
-                  ("VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV),
-                  ("VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV",
-                   pure VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalMemoryFeatureBitmaskNV") >>
-                      (VkExternalMemoryFeatureBitmaskNV <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV",
+               pure VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV),
+              ("VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV",
+               pure VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV),
+              ("VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV",
+               pure VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)]
+             +++
+             prec 10
+               (expectP (Ident "VkExternalMemoryFeatureBitmaskNV") >>
+                  (VkExternalMemoryFeatureBitmaskNV <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV ::
@@ -476,22 +420,19 @@
         VkExternalMemoryFeatureBitmaskNV 4
 
 newtype VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBitsKHR VkFlags
-                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                            Bits, FiniteBits, Storable, Real, Data,
-                                                            Generic)
+                                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalMemoryHandleTypeFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkExternalMemoryHandleTypeFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalMemoryHandleTypeFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalMemoryHandleTypeBitmask (a ::
                                              FlagType) = VkExternalMemoryHandleTypeBitmask VkFlags
-                                                           deriving (Eq, Ord, Storable, Data,
-                                                                     Generic)
+                                                         deriving (Eq, Ord, Storable)
 
 type VkExternalMemoryHandleTypeFlags =
      VkExternalMemoryHandleTypeBitmask FlagMask
@@ -516,59 +457,47 @@
 deriving instance
          FiniteBits (VkExternalMemoryHandleTypeBitmask FlagMask)
 
-deriving instance
-         Integral (VkExternalMemoryHandleTypeBitmask FlagMask)
-
-deriving instance Num (VkExternalMemoryHandleTypeBitmask FlagMask)
-
-deriving instance
-         Bounded (VkExternalMemoryHandleTypeBitmask FlagMask)
-
-deriving instance Enum (VkExternalMemoryHandleTypeBitmask FlagMask)
-
-deriving instance Real (VkExternalMemoryHandleTypeBitmask FlagMask)
-
 instance Show (VkExternalMemoryHandleTypeBitmask a) where
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"
-        showsPrec p (VkExternalMemoryHandleTypeBitmask x)
-          = showParen (p >= 11)
-              (showString "VkExternalMemoryHandleTypeBitmask " . showsPrec 11 x)
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"
+    showsPrec p (VkExternalMemoryHandleTypeBitmask x)
+      = showParen (p >= 11)
+          (showString "VkExternalMemoryHandleTypeBitmask " . showsPrec 11 x)
 
 instance Read (VkExternalMemoryHandleTypeBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalMemoryHandleTypeBitmask") >>
-                      (VkExternalMemoryHandleTypeBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkExternalMemoryHandleTypeBitmask") >>
+                  (VkExternalMemoryHandleTypeBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT ::
@@ -621,8 +550,7 @@
 
 newtype VkExternalMemoryHandleTypeBitmaskNV (a ::
                                                FlagType) = VkExternalMemoryHandleTypeBitmaskNV VkFlags
-                                                             deriving (Eq, Ord, Storable, Data,
-                                                                       Generic)
+                                                           deriving (Eq, Ord, Storable)
 
 type VkExternalMemoryHandleTypeFlagsNV =
      VkExternalMemoryHandleTypeBitmaskNV FlagMask
@@ -648,53 +576,38 @@
 deriving instance
          FiniteBits (VkExternalMemoryHandleTypeBitmaskNV FlagMask)
 
-deriving instance
-         Integral (VkExternalMemoryHandleTypeBitmaskNV FlagMask)
-
-deriving instance
-         Num (VkExternalMemoryHandleTypeBitmaskNV FlagMask)
-
-deriving instance
-         Bounded (VkExternalMemoryHandleTypeBitmaskNV FlagMask)
-
-deriving instance
-         Enum (VkExternalMemoryHandleTypeBitmaskNV FlagMask)
-
-deriving instance
-         Real (VkExternalMemoryHandleTypeBitmaskNV FlagMask)
-
 instance Show (VkExternalMemoryHandleTypeBitmaskNV a) where
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV
-          = showString
-              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV
-          = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"
-        showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
-          = showString
-              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"
-        showsPrec p (VkExternalMemoryHandleTypeBitmaskNV x)
-          = showParen (p >= 11)
-              (showString "VkExternalMemoryHandleTypeBitmaskNV " .
-                 showsPrec 11 x)
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV
+      = showString
+          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV
+      = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"
+    showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
+      = showString
+          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"
+    showsPrec p (VkExternalMemoryHandleTypeBitmaskNV x)
+      = showParen (p >= 11)
+          (showString "VkExternalMemoryHandleTypeBitmaskNV " .
+             showsPrec 11 x)
 
 instance Read (VkExternalMemoryHandleTypeBitmaskNV a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV),
-                  ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV",
-                   pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalMemoryHandleTypeBitmaskNV") >>
-                      (VkExternalMemoryHandleTypeBitmaskNV <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV),
+              ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV",
+               pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV)]
+             +++
+             prec 10
+               (expectP (Ident "VkExternalMemoryHandleTypeBitmaskNV") >>
+                  (VkExternalMemoryHandleTypeBitmaskNV <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV ::
@@ -725,22 +638,19 @@
         VkExternalMemoryHandleTypeBitmaskNV 8
 
 newtype VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBitsKHR VkFlags
-                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                            Bits, FiniteBits, Storable, Real, Data,
-                                                            Generic)
+                                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkExternalSemaphoreFeatureFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkExternalSemaphoreFeatureFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalSemaphoreFeatureFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalSemaphoreFeatureBitmask (a ::
                                              FlagType) = VkExternalSemaphoreFeatureBitmask VkFlags
-                                                           deriving (Eq, Ord, Storable, Data,
-                                                                     Generic)
+                                                         deriving (Eq, Ord, Storable)
 
 type VkExternalSemaphoreFeatureFlags =
      VkExternalSemaphoreFeatureBitmask FlagMask
@@ -765,39 +675,27 @@
 deriving instance
          FiniteBits (VkExternalSemaphoreFeatureBitmask FlagMask)
 
-deriving instance
-         Integral (VkExternalSemaphoreFeatureBitmask FlagMask)
-
-deriving instance Num (VkExternalSemaphoreFeatureBitmask FlagMask)
-
-deriving instance
-         Bounded (VkExternalSemaphoreFeatureBitmask FlagMask)
-
-deriving instance Enum (VkExternalSemaphoreFeatureBitmask FlagMask)
-
-deriving instance Real (VkExternalSemaphoreFeatureBitmask FlagMask)
-
 instance Show (VkExternalSemaphoreFeatureBitmask a) where
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT
-          = showString "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT
-          = showString "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"
-        showsPrec p (VkExternalSemaphoreFeatureBitmask x)
-          = showParen (p >= 11)
-              (showString "VkExternalSemaphoreFeatureBitmask " . showsPrec 11 x)
+    showsPrec _ VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT
+      = showString "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"
+    showsPrec _ VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT
+      = showString "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"
+    showsPrec p (VkExternalSemaphoreFeatureBitmask x)
+      = showParen (p >= 11)
+          (showString "VkExternalSemaphoreFeatureBitmask " . showsPrec 11 x)
 
 instance Read (VkExternalSemaphoreFeatureBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT",
-                   pure VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT),
-                  ("VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT",
-                   pure VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalSemaphoreFeatureBitmask") >>
-                      (VkExternalSemaphoreFeatureBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT",
+               pure VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT),
+              ("VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT",
+               pure VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkExternalSemaphoreFeatureBitmask") >>
+                  (VkExternalSemaphoreFeatureBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT ::
@@ -814,22 +712,20 @@
         VkExternalSemaphoreFeatureBitmask 2
 
 newtype VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBitsKHR VkFlags
-                                                     deriving (Eq, Ord, Num, Bounded, Enum,
-                                                               Integral, Bits, FiniteBits, Storable,
-                                                               Real, Data, Generic)
+                                                   deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                             Storable)
 
 instance Show VkExternalSemaphoreHandleTypeFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkExternalSemaphoreHandleTypeFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkExternalSemaphoreHandleTypeFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkExternalSemaphoreHandleTypeBitmask (a ::
                                                 FlagType) = VkExternalSemaphoreHandleTypeBitmask VkFlags
-                                                              deriving (Eq, Ord, Storable, Data,
-                                                                        Generic)
+                                                            deriving (Eq, Ord, Storable)
 
 type VkExternalSemaphoreHandleTypeFlags =
      VkExternalSemaphoreHandleTypeBitmask FlagMask
@@ -855,56 +751,41 @@
 deriving instance
          FiniteBits (VkExternalSemaphoreHandleTypeBitmask FlagMask)
 
-deriving instance
-         Integral (VkExternalSemaphoreHandleTypeBitmask FlagMask)
-
-deriving instance
-         Num (VkExternalSemaphoreHandleTypeBitmask FlagMask)
-
-deriving instance
-         Bounded (VkExternalSemaphoreHandleTypeBitmask FlagMask)
-
-deriving instance
-         Enum (VkExternalSemaphoreHandleTypeBitmask FlagMask)
-
-deriving instance
-         Real (VkExternalSemaphoreHandleTypeBitmask FlagMask)
-
 instance Show (VkExternalSemaphoreHandleTypeBitmask a) where
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT
-          = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
-          = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
-          = showString
-              "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
-          = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"
-        showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
-          = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"
-        showsPrec p (VkExternalSemaphoreHandleTypeBitmask x)
-          = showParen (p >= 11)
-              (showString "VkExternalSemaphoreHandleTypeBitmask " .
-                 showsPrec 11 x)
+    showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT
+      = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"
+    showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
+      = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"
+    showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
+      = showString
+          "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
+    showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
+      = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"
+    showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT
+      = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"
+    showsPrec p (VkExternalSemaphoreHandleTypeBitmask x)
+      = showParen (p >= 11)
+          (showString "VkExternalSemaphoreHandleTypeBitmask " .
+             showsPrec 11 x)
 
 instance Read (VkExternalSemaphoreHandleTypeBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT),
-                  ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT),
-                  ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT),
-                  ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT),
-                  ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT",
-                   pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkExternalSemaphoreHandleTypeBitmask") >>
-                      (VkExternalSemaphoreHandleTypeBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT",
+               pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT),
+              ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT",
+               pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT),
+              ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT",
+               pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT),
+              ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT",
+               pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT),
+              ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT",
+               pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkExternalSemaphoreHandleTypeBitmask") >>
+                  (VkExternalSemaphoreHandleTypeBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT ::
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Fence.hs b/src-gen/Graphics/Vulkan/Types/Enum/Fence.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Fence.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Fence.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -20,9 +18,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -32,7 +28,7 @@
 
 newtype VkFenceCreateBitmask (a ::
                                 FlagType) = VkFenceCreateBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkFenceCreateFlags = VkFenceCreateBitmask FlagMask
 
@@ -52,33 +48,23 @@
 
 deriving instance FiniteBits (VkFenceCreateBitmask FlagMask)
 
-deriving instance Integral (VkFenceCreateBitmask FlagMask)
-
-deriving instance Num (VkFenceCreateBitmask FlagMask)
-
-deriving instance Bounded (VkFenceCreateBitmask FlagMask)
-
-deriving instance Enum (VkFenceCreateBitmask FlagMask)
-
-deriving instance Real (VkFenceCreateBitmask FlagMask)
-
 instance Show (VkFenceCreateBitmask a) where
-        showsPrec _ VK_FENCE_CREATE_SIGNALED_BIT
-          = showString "VK_FENCE_CREATE_SIGNALED_BIT"
-        showsPrec p (VkFenceCreateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkFenceCreateBitmask " . showsPrec 11 x)
+    showsPrec _ VK_FENCE_CREATE_SIGNALED_BIT
+      = showString "VK_FENCE_CREATE_SIGNALED_BIT"
+    showsPrec p (VkFenceCreateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkFenceCreateBitmask " . showsPrec 11 x)
 
 instance Read (VkFenceCreateBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_FENCE_CREATE_SIGNALED_BIT",
-                   pure VK_FENCE_CREATE_SIGNALED_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkFenceCreateBitmask") >>
-                      (VkFenceCreateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_FENCE_CREATE_SIGNALED_BIT",
+               pure VK_FENCE_CREATE_SIGNALED_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkFenceCreateBitmask") >>
+                  (VkFenceCreateBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_FENCE_CREATE_SIGNALED_BIT :: VkFenceCreateBitmask a
@@ -86,20 +72,19 @@
 pattern VK_FENCE_CREATE_SIGNALED_BIT = VkFenceCreateBitmask 1
 
 newtype VkFenceImportFlagBitsKHR = VkFenceImportFlagBitsKHR VkFlags
-                                     deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                               FiniteBits, Storable, Real, Data, Generic)
+                                   deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkFenceImportFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkFenceImportFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkFenceImportFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkFenceImportBitmask (a ::
                                 FlagType) = VkFenceImportBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkFenceImportFlags = VkFenceImportBitmask FlagMask
 
@@ -119,33 +104,23 @@
 
 deriving instance FiniteBits (VkFenceImportBitmask FlagMask)
 
-deriving instance Integral (VkFenceImportBitmask FlagMask)
-
-deriving instance Num (VkFenceImportBitmask FlagMask)
-
-deriving instance Bounded (VkFenceImportBitmask FlagMask)
-
-deriving instance Enum (VkFenceImportBitmask FlagMask)
-
-deriving instance Real (VkFenceImportBitmask FlagMask)
-
 instance Show (VkFenceImportBitmask a) where
-        showsPrec _ VK_FENCE_IMPORT_TEMPORARY_BIT
-          = showString "VK_FENCE_IMPORT_TEMPORARY_BIT"
-        showsPrec p (VkFenceImportBitmask x)
-          = showParen (p >= 11)
-              (showString "VkFenceImportBitmask " . showsPrec 11 x)
+    showsPrec _ VK_FENCE_IMPORT_TEMPORARY_BIT
+      = showString "VK_FENCE_IMPORT_TEMPORARY_BIT"
+    showsPrec p (VkFenceImportBitmask x)
+      = showParen (p >= 11)
+          (showString "VkFenceImportBitmask " . showsPrec 11 x)
 
 instance Read (VkFenceImportBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_FENCE_IMPORT_TEMPORARY_BIT",
-                   pure VK_FENCE_IMPORT_TEMPORARY_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkFenceImportBitmask") >>
-                      (VkFenceImportBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_FENCE_IMPORT_TEMPORARY_BIT",
+               pure VK_FENCE_IMPORT_TEMPORARY_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkFenceImportBitmask") >>
+                  (VkFenceImportBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_FENCE_IMPORT_TEMPORARY_BIT :: VkFenceImportBitmask a
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Filter.hs b/src-gen/Graphics/Vulkan/Types/Enum/Filter.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Filter.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Filter.hs
@@ -1,15 +1,11 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.Filter
        (VkFilter(VkFilter, VK_FILTER_NEAREST, VK_FILTER_LINEAR)) where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -20,23 +16,23 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFilter VkFilter registry at www.khronos.org>
 newtype VkFilter = VkFilter Int32
-                     deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                   deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkFilter where
-        showsPrec _ VK_FILTER_NEAREST = showString "VK_FILTER_NEAREST"
-        showsPrec _ VK_FILTER_LINEAR = showString "VK_FILTER_LINEAR"
-        showsPrec p (VkFilter x)
-          = showParen (p >= 11) (showString "VkFilter " . showsPrec 11 x)
+    showsPrec _ VK_FILTER_NEAREST = showString "VK_FILTER_NEAREST"
+    showsPrec _ VK_FILTER_LINEAR = showString "VK_FILTER_LINEAR"
+    showsPrec p (VkFilter x)
+      = showParen (p >= 11) (showString "VkFilter " . showsPrec 11 x)
 
 instance Read VkFilter where
-        readPrec
-          = parens
-              (choose
-                 [("VK_FILTER_NEAREST", pure VK_FILTER_NEAREST),
-                  ("VK_FILTER_LINEAR", pure VK_FILTER_LINEAR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkFilter") >> (VkFilter <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_FILTER_NEAREST", pure VK_FILTER_NEAREST),
+              ("VK_FILTER_LINEAR", pure VK_FILTER_LINEAR)]
+             +++
+             prec 10
+               (expectP (Ident "VkFilter") >> (VkFilter <$> step readPrec)))
 
 pattern VK_FILTER_NEAREST :: VkFilter
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Format.hs b/src-gen/Graphics/Vulkan/Types/Enum/Format.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Format.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Format.hs
@@ -1,1613 +1,1599 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE KindSignatures             #-}
-{-# LANGUAGE PatternSynonyms            #-}
-{-# LANGUAGE StandaloneDeriving         #-}
-{-# LANGUAGE Strict                     #-}
-{-# LANGUAGE TypeSynonymInstances       #-}
-module Graphics.Vulkan.Types.Enum.Format
-       (VkFormat(VkFormat, VK_FORMAT_UNDEFINED,
-                 VK_FORMAT_R4G4_UNORM_PACK8, VK_FORMAT_R4G4B4A4_UNORM_PACK16,
-                 VK_FORMAT_B4G4R4A4_UNORM_PACK16, VK_FORMAT_R5G6B5_UNORM_PACK16,
-                 VK_FORMAT_B5G6R5_UNORM_PACK16, VK_FORMAT_R5G5B5A1_UNORM_PACK16,
-                 VK_FORMAT_B5G5R5A1_UNORM_PACK16, VK_FORMAT_A1R5G5B5_UNORM_PACK16,
-                 VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_USCALED,
-                 VK_FORMAT_R8_SSCALED, VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT,
-                 VK_FORMAT_R8_SRGB, VK_FORMAT_R8G8_UNORM, VK_FORMAT_R8G8_SNORM,
-                 VK_FORMAT_R8G8_USCALED, VK_FORMAT_R8G8_SSCALED,
-                 VK_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SRGB,
-                 VK_FORMAT_R8G8B8_UNORM, VK_FORMAT_R8G8B8_SNORM,
-                 VK_FORMAT_R8G8B8_USCALED, VK_FORMAT_R8G8B8_SSCALED,
-                 VK_FORMAT_R8G8B8_UINT, VK_FORMAT_R8G8B8_SINT,
-                 VK_FORMAT_R8G8B8_SRGB, VK_FORMAT_B8G8R8_UNORM,
-                 VK_FORMAT_B8G8R8_SNORM, VK_FORMAT_B8G8R8_USCALED,
-                 VK_FORMAT_B8G8R8_SSCALED, VK_FORMAT_B8G8R8_UINT,
-                 VK_FORMAT_B8G8R8_SINT, VK_FORMAT_B8G8R8_SRGB,
-                 VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_SNORM,
-                 VK_FORMAT_R8G8B8A8_USCALED, VK_FORMAT_R8G8B8A8_SSCALED,
-                 VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_SINT,
-                 VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM,
-                 VK_FORMAT_B8G8R8A8_SNORM, VK_FORMAT_B8G8R8A8_USCALED,
-                 VK_FORMAT_B8G8R8A8_SSCALED, VK_FORMAT_B8G8R8A8_UINT,
-                 VK_FORMAT_B8G8R8A8_SINT, VK_FORMAT_B8G8R8A8_SRGB,
-                 VK_FORMAT_A8B8G8R8_UNORM_PACK32, VK_FORMAT_A8B8G8R8_SNORM_PACK32,
-                 VK_FORMAT_A8B8G8R8_USCALED_PACK32,
-                 VK_FORMAT_A8B8G8R8_SSCALED_PACK32, VK_FORMAT_A8B8G8R8_UINT_PACK32,
-                 VK_FORMAT_A8B8G8R8_SINT_PACK32, VK_FORMAT_A8B8G8R8_SRGB_PACK32,
-                 VK_FORMAT_A2R10G10B10_UNORM_PACK32,
-                 VK_FORMAT_A2R10G10B10_SNORM_PACK32,
-                 VK_FORMAT_A2R10G10B10_USCALED_PACK32,
-                 VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
-                 VK_FORMAT_A2R10G10B10_UINT_PACK32,
-                 VK_FORMAT_A2R10G10B10_SINT_PACK32,
-                 VK_FORMAT_A2B10G10R10_UNORM_PACK32,
-                 VK_FORMAT_A2B10G10R10_SNORM_PACK32,
-                 VK_FORMAT_A2B10G10R10_USCALED_PACK32,
-                 VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
-                 VK_FORMAT_A2B10G10R10_UINT_PACK32,
-                 VK_FORMAT_A2B10G10R10_SINT_PACK32, VK_FORMAT_R16_UNORM,
-                 VK_FORMAT_R16_SNORM, VK_FORMAT_R16_USCALED, VK_FORMAT_R16_SSCALED,
-                 VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R16_SFLOAT,
-                 VK_FORMAT_R16G16_UNORM, VK_FORMAT_R16G16_SNORM,
-                 VK_FORMAT_R16G16_USCALED, VK_FORMAT_R16G16_SSCALED,
-                 VK_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_SINT,
-                 VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16B16_UNORM,
-                 VK_FORMAT_R16G16B16_SNORM, VK_FORMAT_R16G16B16_USCALED,
-                 VK_FORMAT_R16G16B16_SSCALED, VK_FORMAT_R16G16B16_UINT,
-                 VK_FORMAT_R16G16B16_SINT, VK_FORMAT_R16G16B16_SFLOAT,
-                 VK_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16A16_SNORM,
-                 VK_FORMAT_R16G16B16A16_USCALED, VK_FORMAT_R16G16B16A16_SSCALED,
-                 VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_SINT,
-                 VK_FORMAT_R16G16B16A16_SFLOAT, VK_FORMAT_R32_UINT,
-                 VK_FORMAT_R32_SINT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32G32_UINT,
-                 VK_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_SFLOAT,
-                 VK_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32B32_SINT,
-                 VK_FORMAT_R32G32B32_SFLOAT, VK_FORMAT_R32G32B32A32_UINT,
-                 VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SFLOAT,
-                 VK_FORMAT_R64_UINT, VK_FORMAT_R64_SINT, VK_FORMAT_R64_SFLOAT,
-                 VK_FORMAT_R64G64_UINT, VK_FORMAT_R64G64_SINT,
-                 VK_FORMAT_R64G64_SFLOAT, VK_FORMAT_R64G64B64_UINT,
-                 VK_FORMAT_R64G64B64_SINT, VK_FORMAT_R64G64B64_SFLOAT,
-                 VK_FORMAT_R64G64B64A64_UINT, VK_FORMAT_R64G64B64A64_SINT,
-                 VK_FORMAT_R64G64B64A64_SFLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32,
-                 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, VK_FORMAT_D16_UNORM,
-                 VK_FORMAT_X8_D24_UNORM_PACK32, VK_FORMAT_D32_SFLOAT,
-                 VK_FORMAT_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT,
-                 VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT,
-                 VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK,
-                 VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
-                 VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK,
-                 VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK,
-                 VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK,
-                 VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK,
-                 VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK,
-                 VK_FORMAT_BC7_UNORM_BLOCK, VK_FORMAT_BC7_SRGB_BLOCK,
-                 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
-                 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
-                 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
-                 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
-                 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
-                 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK,
-                 VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
-                 VK_FORMAT_EAC_R11G11_SNORM_BLOCK, VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
-                 VK_FORMAT_ASTC_12x12_SRGB_BLOCK),
-        VkFormatFeatureBitmask(VkFormatFeatureBitmask,
-                               VkFormatFeatureFlags, VkFormatFeatureFlagBits,
-                               VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
-                               VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
-                               VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
-                               VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
-                               VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
-                               VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
-                               VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
-                               VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
-                               VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
-                               VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
-                               VK_FORMAT_FEATURE_BLIT_SRC_BIT, VK_FORMAT_FEATURE_BLIT_DST_BIT,
-                               VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT),
-        VkFormatFeatureFlags, VkFormatFeatureFlagBits)
-       where
-import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
-import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
-import GHC.Read                        (choose, expectP)
-import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
-import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
-import Text.ParserCombinators.ReadPrec (prec, step, (+++))
-import Text.Read                       (Read (..), parens)
-import Text.Read.Lex                   (Lexeme (..))
-
--- | Vulkan format definitions
---
---   type = @enum@
---
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFormat VkFormat registry at www.khronos.org>
-newtype VkFormat = VkFormat Int32
-                     deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
-
-instance Show VkFormat where
-        showsPrec _ VK_FORMAT_UNDEFINED = showString "VK_FORMAT_UNDEFINED"
-        showsPrec _ VK_FORMAT_R4G4_UNORM_PACK8
-          = showString "VK_FORMAT_R4G4_UNORM_PACK8"
-        showsPrec _ VK_FORMAT_R4G4B4A4_UNORM_PACK16
-          = showString "VK_FORMAT_R4G4B4A4_UNORM_PACK16"
-        showsPrec _ VK_FORMAT_B4G4R4A4_UNORM_PACK16
-          = showString "VK_FORMAT_B4G4R4A4_UNORM_PACK16"
-        showsPrec _ VK_FORMAT_R5G6B5_UNORM_PACK16
-          = showString "VK_FORMAT_R5G6B5_UNORM_PACK16"
-        showsPrec _ VK_FORMAT_B5G6R5_UNORM_PACK16
-          = showString "VK_FORMAT_B5G6R5_UNORM_PACK16"
-        showsPrec _ VK_FORMAT_R5G5B5A1_UNORM_PACK16
-          = showString "VK_FORMAT_R5G5B5A1_UNORM_PACK16"
-        showsPrec _ VK_FORMAT_B5G5R5A1_UNORM_PACK16
-          = showString "VK_FORMAT_B5G5R5A1_UNORM_PACK16"
-        showsPrec _ VK_FORMAT_A1R5G5B5_UNORM_PACK16
-          = showString "VK_FORMAT_A1R5G5B5_UNORM_PACK16"
-        showsPrec _ VK_FORMAT_R8_UNORM = showString "VK_FORMAT_R8_UNORM"
-        showsPrec _ VK_FORMAT_R8_SNORM = showString "VK_FORMAT_R8_SNORM"
-        showsPrec _ VK_FORMAT_R8_USCALED
-          = showString "VK_FORMAT_R8_USCALED"
-        showsPrec _ VK_FORMAT_R8_SSCALED
-          = showString "VK_FORMAT_R8_SSCALED"
-        showsPrec _ VK_FORMAT_R8_UINT = showString "VK_FORMAT_R8_UINT"
-        showsPrec _ VK_FORMAT_R8_SINT = showString "VK_FORMAT_R8_SINT"
-        showsPrec _ VK_FORMAT_R8_SRGB = showString "VK_FORMAT_R8_SRGB"
-        showsPrec _ VK_FORMAT_R8G8_UNORM
-          = showString "VK_FORMAT_R8G8_UNORM"
-        showsPrec _ VK_FORMAT_R8G8_SNORM
-          = showString "VK_FORMAT_R8G8_SNORM"
-        showsPrec _ VK_FORMAT_R8G8_USCALED
-          = showString "VK_FORMAT_R8G8_USCALED"
-        showsPrec _ VK_FORMAT_R8G8_SSCALED
-          = showString "VK_FORMAT_R8G8_SSCALED"
-        showsPrec _ VK_FORMAT_R8G8_UINT = showString "VK_FORMAT_R8G8_UINT"
-        showsPrec _ VK_FORMAT_R8G8_SINT = showString "VK_FORMAT_R8G8_SINT"
-        showsPrec _ VK_FORMAT_R8G8_SRGB = showString "VK_FORMAT_R8G8_SRGB"
-        showsPrec _ VK_FORMAT_R8G8B8_UNORM
-          = showString "VK_FORMAT_R8G8B8_UNORM"
-        showsPrec _ VK_FORMAT_R8G8B8_SNORM
-          = showString "VK_FORMAT_R8G8B8_SNORM"
-        showsPrec _ VK_FORMAT_R8G8B8_USCALED
-          = showString "VK_FORMAT_R8G8B8_USCALED"
-        showsPrec _ VK_FORMAT_R8G8B8_SSCALED
-          = showString "VK_FORMAT_R8G8B8_SSCALED"
-        showsPrec _ VK_FORMAT_R8G8B8_UINT
-          = showString "VK_FORMAT_R8G8B8_UINT"
-        showsPrec _ VK_FORMAT_R8G8B8_SINT
-          = showString "VK_FORMAT_R8G8B8_SINT"
-        showsPrec _ VK_FORMAT_R8G8B8_SRGB
-          = showString "VK_FORMAT_R8G8B8_SRGB"
-        showsPrec _ VK_FORMAT_B8G8R8_UNORM
-          = showString "VK_FORMAT_B8G8R8_UNORM"
-        showsPrec _ VK_FORMAT_B8G8R8_SNORM
-          = showString "VK_FORMAT_B8G8R8_SNORM"
-        showsPrec _ VK_FORMAT_B8G8R8_USCALED
-          = showString "VK_FORMAT_B8G8R8_USCALED"
-        showsPrec _ VK_FORMAT_B8G8R8_SSCALED
-          = showString "VK_FORMAT_B8G8R8_SSCALED"
-        showsPrec _ VK_FORMAT_B8G8R8_UINT
-          = showString "VK_FORMAT_B8G8R8_UINT"
-        showsPrec _ VK_FORMAT_B8G8R8_SINT
-          = showString "VK_FORMAT_B8G8R8_SINT"
-        showsPrec _ VK_FORMAT_B8G8R8_SRGB
-          = showString "VK_FORMAT_B8G8R8_SRGB"
-        showsPrec _ VK_FORMAT_R8G8B8A8_UNORM
-          = showString "VK_FORMAT_R8G8B8A8_UNORM"
-        showsPrec _ VK_FORMAT_R8G8B8A8_SNORM
-          = showString "VK_FORMAT_R8G8B8A8_SNORM"
-        showsPrec _ VK_FORMAT_R8G8B8A8_USCALED
-          = showString "VK_FORMAT_R8G8B8A8_USCALED"
-        showsPrec _ VK_FORMAT_R8G8B8A8_SSCALED
-          = showString "VK_FORMAT_R8G8B8A8_SSCALED"
-        showsPrec _ VK_FORMAT_R8G8B8A8_UINT
-          = showString "VK_FORMAT_R8G8B8A8_UINT"
-        showsPrec _ VK_FORMAT_R8G8B8A8_SINT
-          = showString "VK_FORMAT_R8G8B8A8_SINT"
-        showsPrec _ VK_FORMAT_R8G8B8A8_SRGB
-          = showString "VK_FORMAT_R8G8B8A8_SRGB"
-        showsPrec _ VK_FORMAT_B8G8R8A8_UNORM
-          = showString "VK_FORMAT_B8G8R8A8_UNORM"
-        showsPrec _ VK_FORMAT_B8G8R8A8_SNORM
-          = showString "VK_FORMAT_B8G8R8A8_SNORM"
-        showsPrec _ VK_FORMAT_B8G8R8A8_USCALED
-          = showString "VK_FORMAT_B8G8R8A8_USCALED"
-        showsPrec _ VK_FORMAT_B8G8R8A8_SSCALED
-          = showString "VK_FORMAT_B8G8R8A8_SSCALED"
-        showsPrec _ VK_FORMAT_B8G8R8A8_UINT
-          = showString "VK_FORMAT_B8G8R8A8_UINT"
-        showsPrec _ VK_FORMAT_B8G8R8A8_SINT
-          = showString "VK_FORMAT_B8G8R8A8_SINT"
-        showsPrec _ VK_FORMAT_B8G8R8A8_SRGB
-          = showString "VK_FORMAT_B8G8R8A8_SRGB"
-        showsPrec _ VK_FORMAT_A8B8G8R8_UNORM_PACK32
-          = showString "VK_FORMAT_A8B8G8R8_UNORM_PACK32"
-        showsPrec _ VK_FORMAT_A8B8G8R8_SNORM_PACK32
-          = showString "VK_FORMAT_A8B8G8R8_SNORM_PACK32"
-        showsPrec _ VK_FORMAT_A8B8G8R8_USCALED_PACK32
-          = showString "VK_FORMAT_A8B8G8R8_USCALED_PACK32"
-        showsPrec _ VK_FORMAT_A8B8G8R8_SSCALED_PACK32
-          = showString "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"
-        showsPrec _ VK_FORMAT_A8B8G8R8_UINT_PACK32
-          = showString "VK_FORMAT_A8B8G8R8_UINT_PACK32"
-        showsPrec _ VK_FORMAT_A8B8G8R8_SINT_PACK32
-          = showString "VK_FORMAT_A8B8G8R8_SINT_PACK32"
-        showsPrec _ VK_FORMAT_A8B8G8R8_SRGB_PACK32
-          = showString "VK_FORMAT_A8B8G8R8_SRGB_PACK32"
-        showsPrec _ VK_FORMAT_A2R10G10B10_UNORM_PACK32
-          = showString "VK_FORMAT_A2R10G10B10_UNORM_PACK32"
-        showsPrec _ VK_FORMAT_A2R10G10B10_SNORM_PACK32
-          = showString "VK_FORMAT_A2R10G10B10_SNORM_PACK32"
-        showsPrec _ VK_FORMAT_A2R10G10B10_USCALED_PACK32
-          = showString "VK_FORMAT_A2R10G10B10_USCALED_PACK32"
-        showsPrec _ VK_FORMAT_A2R10G10B10_SSCALED_PACK32
-          = showString "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"
-        showsPrec _ VK_FORMAT_A2R10G10B10_UINT_PACK32
-          = showString "VK_FORMAT_A2R10G10B10_UINT_PACK32"
-        showsPrec _ VK_FORMAT_A2R10G10B10_SINT_PACK32
-          = showString "VK_FORMAT_A2R10G10B10_SINT_PACK32"
-        showsPrec _ VK_FORMAT_A2B10G10R10_UNORM_PACK32
-          = showString "VK_FORMAT_A2B10G10R10_UNORM_PACK32"
-        showsPrec _ VK_FORMAT_A2B10G10R10_SNORM_PACK32
-          = showString "VK_FORMAT_A2B10G10R10_SNORM_PACK32"
-        showsPrec _ VK_FORMAT_A2B10G10R10_USCALED_PACK32
-          = showString "VK_FORMAT_A2B10G10R10_USCALED_PACK32"
-        showsPrec _ VK_FORMAT_A2B10G10R10_SSCALED_PACK32
-          = showString "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"
-        showsPrec _ VK_FORMAT_A2B10G10R10_UINT_PACK32
-          = showString "VK_FORMAT_A2B10G10R10_UINT_PACK32"
-        showsPrec _ VK_FORMAT_A2B10G10R10_SINT_PACK32
-          = showString "VK_FORMAT_A2B10G10R10_SINT_PACK32"
-        showsPrec _ VK_FORMAT_R16_UNORM = showString "VK_FORMAT_R16_UNORM"
-        showsPrec _ VK_FORMAT_R16_SNORM = showString "VK_FORMAT_R16_SNORM"
-        showsPrec _ VK_FORMAT_R16_USCALED
-          = showString "VK_FORMAT_R16_USCALED"
-        showsPrec _ VK_FORMAT_R16_SSCALED
-          = showString "VK_FORMAT_R16_SSCALED"
-        showsPrec _ VK_FORMAT_R16_UINT = showString "VK_FORMAT_R16_UINT"
-        showsPrec _ VK_FORMAT_R16_SINT = showString "VK_FORMAT_R16_SINT"
-        showsPrec _ VK_FORMAT_R16_SFLOAT
-          = showString "VK_FORMAT_R16_SFLOAT"
-        showsPrec _ VK_FORMAT_R16G16_UNORM
-          = showString "VK_FORMAT_R16G16_UNORM"
-        showsPrec _ VK_FORMAT_R16G16_SNORM
-          = showString "VK_FORMAT_R16G16_SNORM"
-        showsPrec _ VK_FORMAT_R16G16_USCALED
-          = showString "VK_FORMAT_R16G16_USCALED"
-        showsPrec _ VK_FORMAT_R16G16_SSCALED
-          = showString "VK_FORMAT_R16G16_SSCALED"
-        showsPrec _ VK_FORMAT_R16G16_UINT
-          = showString "VK_FORMAT_R16G16_UINT"
-        showsPrec _ VK_FORMAT_R16G16_SINT
-          = showString "VK_FORMAT_R16G16_SINT"
-        showsPrec _ VK_FORMAT_R16G16_SFLOAT
-          = showString "VK_FORMAT_R16G16_SFLOAT"
-        showsPrec _ VK_FORMAT_R16G16B16_UNORM
-          = showString "VK_FORMAT_R16G16B16_UNORM"
-        showsPrec _ VK_FORMAT_R16G16B16_SNORM
-          = showString "VK_FORMAT_R16G16B16_SNORM"
-        showsPrec _ VK_FORMAT_R16G16B16_USCALED
-          = showString "VK_FORMAT_R16G16B16_USCALED"
-        showsPrec _ VK_FORMAT_R16G16B16_SSCALED
-          = showString "VK_FORMAT_R16G16B16_SSCALED"
-        showsPrec _ VK_FORMAT_R16G16B16_UINT
-          = showString "VK_FORMAT_R16G16B16_UINT"
-        showsPrec _ VK_FORMAT_R16G16B16_SINT
-          = showString "VK_FORMAT_R16G16B16_SINT"
-        showsPrec _ VK_FORMAT_R16G16B16_SFLOAT
-          = showString "VK_FORMAT_R16G16B16_SFLOAT"
-        showsPrec _ VK_FORMAT_R16G16B16A16_UNORM
-          = showString "VK_FORMAT_R16G16B16A16_UNORM"
-        showsPrec _ VK_FORMAT_R16G16B16A16_SNORM
-          = showString "VK_FORMAT_R16G16B16A16_SNORM"
-        showsPrec _ VK_FORMAT_R16G16B16A16_USCALED
-          = showString "VK_FORMAT_R16G16B16A16_USCALED"
-        showsPrec _ VK_FORMAT_R16G16B16A16_SSCALED
-          = showString "VK_FORMAT_R16G16B16A16_SSCALED"
-        showsPrec _ VK_FORMAT_R16G16B16A16_UINT
-          = showString "VK_FORMAT_R16G16B16A16_UINT"
-        showsPrec _ VK_FORMAT_R16G16B16A16_SINT
-          = showString "VK_FORMAT_R16G16B16A16_SINT"
-        showsPrec _ VK_FORMAT_R16G16B16A16_SFLOAT
-          = showString "VK_FORMAT_R16G16B16A16_SFLOAT"
-        showsPrec _ VK_FORMAT_R32_UINT = showString "VK_FORMAT_R32_UINT"
-        showsPrec _ VK_FORMAT_R32_SINT = showString "VK_FORMAT_R32_SINT"
-        showsPrec _ VK_FORMAT_R32_SFLOAT
-          = showString "VK_FORMAT_R32_SFLOAT"
-        showsPrec _ VK_FORMAT_R32G32_UINT
-          = showString "VK_FORMAT_R32G32_UINT"
-        showsPrec _ VK_FORMAT_R32G32_SINT
-          = showString "VK_FORMAT_R32G32_SINT"
-        showsPrec _ VK_FORMAT_R32G32_SFLOAT
-          = showString "VK_FORMAT_R32G32_SFLOAT"
-        showsPrec _ VK_FORMAT_R32G32B32_UINT
-          = showString "VK_FORMAT_R32G32B32_UINT"
-        showsPrec _ VK_FORMAT_R32G32B32_SINT
-          = showString "VK_FORMAT_R32G32B32_SINT"
-        showsPrec _ VK_FORMAT_R32G32B32_SFLOAT
-          = showString "VK_FORMAT_R32G32B32_SFLOAT"
-        showsPrec _ VK_FORMAT_R32G32B32A32_UINT
-          = showString "VK_FORMAT_R32G32B32A32_UINT"
-        showsPrec _ VK_FORMAT_R32G32B32A32_SINT
-          = showString "VK_FORMAT_R32G32B32A32_SINT"
-        showsPrec _ VK_FORMAT_R32G32B32A32_SFLOAT
-          = showString "VK_FORMAT_R32G32B32A32_SFLOAT"
-        showsPrec _ VK_FORMAT_R64_UINT = showString "VK_FORMAT_R64_UINT"
-        showsPrec _ VK_FORMAT_R64_SINT = showString "VK_FORMAT_R64_SINT"
-        showsPrec _ VK_FORMAT_R64_SFLOAT
-          = showString "VK_FORMAT_R64_SFLOAT"
-        showsPrec _ VK_FORMAT_R64G64_UINT
-          = showString "VK_FORMAT_R64G64_UINT"
-        showsPrec _ VK_FORMAT_R64G64_SINT
-          = showString "VK_FORMAT_R64G64_SINT"
-        showsPrec _ VK_FORMAT_R64G64_SFLOAT
-          = showString "VK_FORMAT_R64G64_SFLOAT"
-        showsPrec _ VK_FORMAT_R64G64B64_UINT
-          = showString "VK_FORMAT_R64G64B64_UINT"
-        showsPrec _ VK_FORMAT_R64G64B64_SINT
-          = showString "VK_FORMAT_R64G64B64_SINT"
-        showsPrec _ VK_FORMAT_R64G64B64_SFLOAT
-          = showString "VK_FORMAT_R64G64B64_SFLOAT"
-        showsPrec _ VK_FORMAT_R64G64B64A64_UINT
-          = showString "VK_FORMAT_R64G64B64A64_UINT"
-        showsPrec _ VK_FORMAT_R64G64B64A64_SINT
-          = showString "VK_FORMAT_R64G64B64A64_SINT"
-        showsPrec _ VK_FORMAT_R64G64B64A64_SFLOAT
-          = showString "VK_FORMAT_R64G64B64A64_SFLOAT"
-        showsPrec _ VK_FORMAT_B10G11R11_UFLOAT_PACK32
-          = showString "VK_FORMAT_B10G11R11_UFLOAT_PACK32"
-        showsPrec _ VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
-          = showString "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"
-        showsPrec _ VK_FORMAT_D16_UNORM = showString "VK_FORMAT_D16_UNORM"
-        showsPrec _ VK_FORMAT_X8_D24_UNORM_PACK32
-          = showString "VK_FORMAT_X8_D24_UNORM_PACK32"
-        showsPrec _ VK_FORMAT_D32_SFLOAT
-          = showString "VK_FORMAT_D32_SFLOAT"
-        showsPrec _ VK_FORMAT_S8_UINT = showString "VK_FORMAT_S8_UINT"
-        showsPrec _ VK_FORMAT_D16_UNORM_S8_UINT
-          = showString "VK_FORMAT_D16_UNORM_S8_UINT"
-        showsPrec _ VK_FORMAT_D24_UNORM_S8_UINT
-          = showString "VK_FORMAT_D24_UNORM_S8_UINT"
-        showsPrec _ VK_FORMAT_D32_SFLOAT_S8_UINT
-          = showString "VK_FORMAT_D32_SFLOAT_S8_UINT"
-        showsPrec _ VK_FORMAT_BC1_RGB_UNORM_BLOCK
-          = showString "VK_FORMAT_BC1_RGB_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC1_RGB_SRGB_BLOCK
-          = showString "VK_FORMAT_BC1_RGB_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_BC1_RGBA_UNORM_BLOCK
-          = showString "VK_FORMAT_BC1_RGBA_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC1_RGBA_SRGB_BLOCK
-          = showString "VK_FORMAT_BC1_RGBA_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_BC2_UNORM_BLOCK
-          = showString "VK_FORMAT_BC2_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC2_SRGB_BLOCK
-          = showString "VK_FORMAT_BC2_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_BC3_UNORM_BLOCK
-          = showString "VK_FORMAT_BC3_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC3_SRGB_BLOCK
-          = showString "VK_FORMAT_BC3_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_BC4_UNORM_BLOCK
-          = showString "VK_FORMAT_BC4_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC4_SNORM_BLOCK
-          = showString "VK_FORMAT_BC4_SNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC5_UNORM_BLOCK
-          = showString "VK_FORMAT_BC5_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC5_SNORM_BLOCK
-          = showString "VK_FORMAT_BC5_SNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC6H_UFLOAT_BLOCK
-          = showString "VK_FORMAT_BC6H_UFLOAT_BLOCK"
-        showsPrec _ VK_FORMAT_BC6H_SFLOAT_BLOCK
-          = showString "VK_FORMAT_BC6H_SFLOAT_BLOCK"
-        showsPrec _ VK_FORMAT_BC7_UNORM_BLOCK
-          = showString "VK_FORMAT_BC7_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_BC7_SRGB_BLOCK
-          = showString "VK_FORMAT_BC7_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
-          = showString "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
-          = showString "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
-          = showString "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
-          = showString "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
-          = showString "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
-          = showString "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_EAC_R11_UNORM_BLOCK
-          = showString "VK_FORMAT_EAC_R11_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_EAC_R11_SNORM_BLOCK
-          = showString "VK_FORMAT_EAC_R11_SNORM_BLOCK"
-        showsPrec _ VK_FORMAT_EAC_R11G11_UNORM_BLOCK
-          = showString "VK_FORMAT_EAC_R11G11_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_EAC_R11G11_SNORM_BLOCK
-          = showString "VK_FORMAT_EAC_R11G11_SNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_4x4_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_4x4_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_5x4_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_5x4_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_5x5_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_5x5_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_6x5_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_6x5_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_6x6_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_6x6_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_8x5_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_8x5_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_8x5_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_8x5_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_8x6_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_8x6_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_8x6_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_8x6_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_8x8_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_8x8_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_8x8_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_8x8_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_10x5_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_10x5_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_10x6_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_10x6_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_10x8_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_10x8_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_10x10_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_10x10_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_12x10_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_12x10_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_12x12_UNORM_BLOCK
-          = showString "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"
-        showsPrec _ VK_FORMAT_ASTC_12x12_SRGB_BLOCK
-          = showString "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"
-        showsPrec p (VkFormat x)
-          = showParen (p >= 11) (showString "VkFormat " . showsPrec 11 x)
-
-instance Read VkFormat where
-        readPrec
-          = parens
-              (choose
-                 [("VK_FORMAT_UNDEFINED", pure VK_FORMAT_UNDEFINED),
-                  ("VK_FORMAT_R4G4_UNORM_PACK8", pure VK_FORMAT_R4G4_UNORM_PACK8),
-                  ("VK_FORMAT_R4G4B4A4_UNORM_PACK16",
-                   pure VK_FORMAT_R4G4B4A4_UNORM_PACK16),
-                  ("VK_FORMAT_B4G4R4A4_UNORM_PACK16",
-                   pure VK_FORMAT_B4G4R4A4_UNORM_PACK16),
-                  ("VK_FORMAT_R5G6B5_UNORM_PACK16",
-                   pure VK_FORMAT_R5G6B5_UNORM_PACK16),
-                  ("VK_FORMAT_B5G6R5_UNORM_PACK16",
-                   pure VK_FORMAT_B5G6R5_UNORM_PACK16),
-                  ("VK_FORMAT_R5G5B5A1_UNORM_PACK16",
-                   pure VK_FORMAT_R5G5B5A1_UNORM_PACK16),
-                  ("VK_FORMAT_B5G5R5A1_UNORM_PACK16",
-                   pure VK_FORMAT_B5G5R5A1_UNORM_PACK16),
-                  ("VK_FORMAT_A1R5G5B5_UNORM_PACK16",
-                   pure VK_FORMAT_A1R5G5B5_UNORM_PACK16),
-                  ("VK_FORMAT_R8_UNORM", pure VK_FORMAT_R8_UNORM),
-                  ("VK_FORMAT_R8_SNORM", pure VK_FORMAT_R8_SNORM),
-                  ("VK_FORMAT_R8_USCALED", pure VK_FORMAT_R8_USCALED),
-                  ("VK_FORMAT_R8_SSCALED", pure VK_FORMAT_R8_SSCALED),
-                  ("VK_FORMAT_R8_UINT", pure VK_FORMAT_R8_UINT),
-                  ("VK_FORMAT_R8_SINT", pure VK_FORMAT_R8_SINT),
-                  ("VK_FORMAT_R8_SRGB", pure VK_FORMAT_R8_SRGB),
-                  ("VK_FORMAT_R8G8_UNORM", pure VK_FORMAT_R8G8_UNORM),
-                  ("VK_FORMAT_R8G8_SNORM", pure VK_FORMAT_R8G8_SNORM),
-                  ("VK_FORMAT_R8G8_USCALED", pure VK_FORMAT_R8G8_USCALED),
-                  ("VK_FORMAT_R8G8_SSCALED", pure VK_FORMAT_R8G8_SSCALED),
-                  ("VK_FORMAT_R8G8_UINT", pure VK_FORMAT_R8G8_UINT),
-                  ("VK_FORMAT_R8G8_SINT", pure VK_FORMAT_R8G8_SINT),
-                  ("VK_FORMAT_R8G8_SRGB", pure VK_FORMAT_R8G8_SRGB),
-                  ("VK_FORMAT_R8G8B8_UNORM", pure VK_FORMAT_R8G8B8_UNORM),
-                  ("VK_FORMAT_R8G8B8_SNORM", pure VK_FORMAT_R8G8B8_SNORM),
-                  ("VK_FORMAT_R8G8B8_USCALED", pure VK_FORMAT_R8G8B8_USCALED),
-                  ("VK_FORMAT_R8G8B8_SSCALED", pure VK_FORMAT_R8G8B8_SSCALED),
-                  ("VK_FORMAT_R8G8B8_UINT", pure VK_FORMAT_R8G8B8_UINT),
-                  ("VK_FORMAT_R8G8B8_SINT", pure VK_FORMAT_R8G8B8_SINT),
-                  ("VK_FORMAT_R8G8B8_SRGB", pure VK_FORMAT_R8G8B8_SRGB),
-                  ("VK_FORMAT_B8G8R8_UNORM", pure VK_FORMAT_B8G8R8_UNORM),
-                  ("VK_FORMAT_B8G8R8_SNORM", pure VK_FORMAT_B8G8R8_SNORM),
-                  ("VK_FORMAT_B8G8R8_USCALED", pure VK_FORMAT_B8G8R8_USCALED),
-                  ("VK_FORMAT_B8G8R8_SSCALED", pure VK_FORMAT_B8G8R8_SSCALED),
-                  ("VK_FORMAT_B8G8R8_UINT", pure VK_FORMAT_B8G8R8_UINT),
-                  ("VK_FORMAT_B8G8R8_SINT", pure VK_FORMAT_B8G8R8_SINT),
-                  ("VK_FORMAT_B8G8R8_SRGB", pure VK_FORMAT_B8G8R8_SRGB),
-                  ("VK_FORMAT_R8G8B8A8_UNORM", pure VK_FORMAT_R8G8B8A8_UNORM),
-                  ("VK_FORMAT_R8G8B8A8_SNORM", pure VK_FORMAT_R8G8B8A8_SNORM),
-                  ("VK_FORMAT_R8G8B8A8_USCALED", pure VK_FORMAT_R8G8B8A8_USCALED),
-                  ("VK_FORMAT_R8G8B8A8_SSCALED", pure VK_FORMAT_R8G8B8A8_SSCALED),
-                  ("VK_FORMAT_R8G8B8A8_UINT", pure VK_FORMAT_R8G8B8A8_UINT),
-                  ("VK_FORMAT_R8G8B8A8_SINT", pure VK_FORMAT_R8G8B8A8_SINT),
-                  ("VK_FORMAT_R8G8B8A8_SRGB", pure VK_FORMAT_R8G8B8A8_SRGB),
-                  ("VK_FORMAT_B8G8R8A8_UNORM", pure VK_FORMAT_B8G8R8A8_UNORM),
-                  ("VK_FORMAT_B8G8R8A8_SNORM", pure VK_FORMAT_B8G8R8A8_SNORM),
-                  ("VK_FORMAT_B8G8R8A8_USCALED", pure VK_FORMAT_B8G8R8A8_USCALED),
-                  ("VK_FORMAT_B8G8R8A8_SSCALED", pure VK_FORMAT_B8G8R8A8_SSCALED),
-                  ("VK_FORMAT_B8G8R8A8_UINT", pure VK_FORMAT_B8G8R8A8_UINT),
-                  ("VK_FORMAT_B8G8R8A8_SINT", pure VK_FORMAT_B8G8R8A8_SINT),
-                  ("VK_FORMAT_B8G8R8A8_SRGB", pure VK_FORMAT_B8G8R8A8_SRGB),
-                  ("VK_FORMAT_A8B8G8R8_UNORM_PACK32",
-                   pure VK_FORMAT_A8B8G8R8_UNORM_PACK32),
-                  ("VK_FORMAT_A8B8G8R8_SNORM_PACK32",
-                   pure VK_FORMAT_A8B8G8R8_SNORM_PACK32),
-                  ("VK_FORMAT_A8B8G8R8_USCALED_PACK32",
-                   pure VK_FORMAT_A8B8G8R8_USCALED_PACK32),
-                  ("VK_FORMAT_A8B8G8R8_SSCALED_PACK32",
-                   pure VK_FORMAT_A8B8G8R8_SSCALED_PACK32),
-                  ("VK_FORMAT_A8B8G8R8_UINT_PACK32",
-                   pure VK_FORMAT_A8B8G8R8_UINT_PACK32),
-                  ("VK_FORMAT_A8B8G8R8_SINT_PACK32",
-                   pure VK_FORMAT_A8B8G8R8_SINT_PACK32),
-                  ("VK_FORMAT_A8B8G8R8_SRGB_PACK32",
-                   pure VK_FORMAT_A8B8G8R8_SRGB_PACK32),
-                  ("VK_FORMAT_A2R10G10B10_UNORM_PACK32",
-                   pure VK_FORMAT_A2R10G10B10_UNORM_PACK32),
-                  ("VK_FORMAT_A2R10G10B10_SNORM_PACK32",
-                   pure VK_FORMAT_A2R10G10B10_SNORM_PACK32),
-                  ("VK_FORMAT_A2R10G10B10_USCALED_PACK32",
-                   pure VK_FORMAT_A2R10G10B10_USCALED_PACK32),
-                  ("VK_FORMAT_A2R10G10B10_SSCALED_PACK32",
-                   pure VK_FORMAT_A2R10G10B10_SSCALED_PACK32),
-                  ("VK_FORMAT_A2R10G10B10_UINT_PACK32",
-                   pure VK_FORMAT_A2R10G10B10_UINT_PACK32),
-                  ("VK_FORMAT_A2R10G10B10_SINT_PACK32",
-                   pure VK_FORMAT_A2R10G10B10_SINT_PACK32),
-                  ("VK_FORMAT_A2B10G10R10_UNORM_PACK32",
-                   pure VK_FORMAT_A2B10G10R10_UNORM_PACK32),
-                  ("VK_FORMAT_A2B10G10R10_SNORM_PACK32",
-                   pure VK_FORMAT_A2B10G10R10_SNORM_PACK32),
-                  ("VK_FORMAT_A2B10G10R10_USCALED_PACK32",
-                   pure VK_FORMAT_A2B10G10R10_USCALED_PACK32),
-                  ("VK_FORMAT_A2B10G10R10_SSCALED_PACK32",
-                   pure VK_FORMAT_A2B10G10R10_SSCALED_PACK32),
-                  ("VK_FORMAT_A2B10G10R10_UINT_PACK32",
-                   pure VK_FORMAT_A2B10G10R10_UINT_PACK32),
-                  ("VK_FORMAT_A2B10G10R10_SINT_PACK32",
-                   pure VK_FORMAT_A2B10G10R10_SINT_PACK32),
-                  ("VK_FORMAT_R16_UNORM", pure VK_FORMAT_R16_UNORM),
-                  ("VK_FORMAT_R16_SNORM", pure VK_FORMAT_R16_SNORM),
-                  ("VK_FORMAT_R16_USCALED", pure VK_FORMAT_R16_USCALED),
-                  ("VK_FORMAT_R16_SSCALED", pure VK_FORMAT_R16_SSCALED),
-                  ("VK_FORMAT_R16_UINT", pure VK_FORMAT_R16_UINT),
-                  ("VK_FORMAT_R16_SINT", pure VK_FORMAT_R16_SINT),
-                  ("VK_FORMAT_R16_SFLOAT", pure VK_FORMAT_R16_SFLOAT),
-                  ("VK_FORMAT_R16G16_UNORM", pure VK_FORMAT_R16G16_UNORM),
-                  ("VK_FORMAT_R16G16_SNORM", pure VK_FORMAT_R16G16_SNORM),
-                  ("VK_FORMAT_R16G16_USCALED", pure VK_FORMAT_R16G16_USCALED),
-                  ("VK_FORMAT_R16G16_SSCALED", pure VK_FORMAT_R16G16_SSCALED),
-                  ("VK_FORMAT_R16G16_UINT", pure VK_FORMAT_R16G16_UINT),
-                  ("VK_FORMAT_R16G16_SINT", pure VK_FORMAT_R16G16_SINT),
-                  ("VK_FORMAT_R16G16_SFLOAT", pure VK_FORMAT_R16G16_SFLOAT),
-                  ("VK_FORMAT_R16G16B16_UNORM", pure VK_FORMAT_R16G16B16_UNORM),
-                  ("VK_FORMAT_R16G16B16_SNORM", pure VK_FORMAT_R16G16B16_SNORM),
-                  ("VK_FORMAT_R16G16B16_USCALED", pure VK_FORMAT_R16G16B16_USCALED),
-                  ("VK_FORMAT_R16G16B16_SSCALED", pure VK_FORMAT_R16G16B16_SSCALED),
-                  ("VK_FORMAT_R16G16B16_UINT", pure VK_FORMAT_R16G16B16_UINT),
-                  ("VK_FORMAT_R16G16B16_SINT", pure VK_FORMAT_R16G16B16_SINT),
-                  ("VK_FORMAT_R16G16B16_SFLOAT", pure VK_FORMAT_R16G16B16_SFLOAT),
-                  ("VK_FORMAT_R16G16B16A16_UNORM",
-                   pure VK_FORMAT_R16G16B16A16_UNORM),
-                  ("VK_FORMAT_R16G16B16A16_SNORM",
-                   pure VK_FORMAT_R16G16B16A16_SNORM),
-                  ("VK_FORMAT_R16G16B16A16_USCALED",
-                   pure VK_FORMAT_R16G16B16A16_USCALED),
-                  ("VK_FORMAT_R16G16B16A16_SSCALED",
-                   pure VK_FORMAT_R16G16B16A16_SSCALED),
-                  ("VK_FORMAT_R16G16B16A16_UINT", pure VK_FORMAT_R16G16B16A16_UINT),
-                  ("VK_FORMAT_R16G16B16A16_SINT", pure VK_FORMAT_R16G16B16A16_SINT),
-                  ("VK_FORMAT_R16G16B16A16_SFLOAT",
-                   pure VK_FORMAT_R16G16B16A16_SFLOAT),
-                  ("VK_FORMAT_R32_UINT", pure VK_FORMAT_R32_UINT),
-                  ("VK_FORMAT_R32_SINT", pure VK_FORMAT_R32_SINT),
-                  ("VK_FORMAT_R32_SFLOAT", pure VK_FORMAT_R32_SFLOAT),
-                  ("VK_FORMAT_R32G32_UINT", pure VK_FORMAT_R32G32_UINT),
-                  ("VK_FORMAT_R32G32_SINT", pure VK_FORMAT_R32G32_SINT),
-                  ("VK_FORMAT_R32G32_SFLOAT", pure VK_FORMAT_R32G32_SFLOAT),
-                  ("VK_FORMAT_R32G32B32_UINT", pure VK_FORMAT_R32G32B32_UINT),
-                  ("VK_FORMAT_R32G32B32_SINT", pure VK_FORMAT_R32G32B32_SINT),
-                  ("VK_FORMAT_R32G32B32_SFLOAT", pure VK_FORMAT_R32G32B32_SFLOAT),
-                  ("VK_FORMAT_R32G32B32A32_UINT", pure VK_FORMAT_R32G32B32A32_UINT),
-                  ("VK_FORMAT_R32G32B32A32_SINT", pure VK_FORMAT_R32G32B32A32_SINT),
-                  ("VK_FORMAT_R32G32B32A32_SFLOAT",
-                   pure VK_FORMAT_R32G32B32A32_SFLOAT),
-                  ("VK_FORMAT_R64_UINT", pure VK_FORMAT_R64_UINT),
-                  ("VK_FORMAT_R64_SINT", pure VK_FORMAT_R64_SINT),
-                  ("VK_FORMAT_R64_SFLOAT", pure VK_FORMAT_R64_SFLOAT),
-                  ("VK_FORMAT_R64G64_UINT", pure VK_FORMAT_R64G64_UINT),
-                  ("VK_FORMAT_R64G64_SINT", pure VK_FORMAT_R64G64_SINT),
-                  ("VK_FORMAT_R64G64_SFLOAT", pure VK_FORMAT_R64G64_SFLOAT),
-                  ("VK_FORMAT_R64G64B64_UINT", pure VK_FORMAT_R64G64B64_UINT),
-                  ("VK_FORMAT_R64G64B64_SINT", pure VK_FORMAT_R64G64B64_SINT),
-                  ("VK_FORMAT_R64G64B64_SFLOAT", pure VK_FORMAT_R64G64B64_SFLOAT),
-                  ("VK_FORMAT_R64G64B64A64_UINT", pure VK_FORMAT_R64G64B64A64_UINT),
-                  ("VK_FORMAT_R64G64B64A64_SINT", pure VK_FORMAT_R64G64B64A64_SINT),
-                  ("VK_FORMAT_R64G64B64A64_SFLOAT",
-                   pure VK_FORMAT_R64G64B64A64_SFLOAT),
-                  ("VK_FORMAT_B10G11R11_UFLOAT_PACK32",
-                   pure VK_FORMAT_B10G11R11_UFLOAT_PACK32),
-                  ("VK_FORMAT_E5B9G9R9_UFLOAT_PACK32",
-                   pure VK_FORMAT_E5B9G9R9_UFLOAT_PACK32),
-                  ("VK_FORMAT_D16_UNORM", pure VK_FORMAT_D16_UNORM),
-                  ("VK_FORMAT_X8_D24_UNORM_PACK32",
-                   pure VK_FORMAT_X8_D24_UNORM_PACK32),
-                  ("VK_FORMAT_D32_SFLOAT", pure VK_FORMAT_D32_SFLOAT),
-                  ("VK_FORMAT_S8_UINT", pure VK_FORMAT_S8_UINT),
-                  ("VK_FORMAT_D16_UNORM_S8_UINT", pure VK_FORMAT_D16_UNORM_S8_UINT),
-                  ("VK_FORMAT_D24_UNORM_S8_UINT", pure VK_FORMAT_D24_UNORM_S8_UINT),
-                  ("VK_FORMAT_D32_SFLOAT_S8_UINT",
-                   pure VK_FORMAT_D32_SFLOAT_S8_UINT),
-                  ("VK_FORMAT_BC1_RGB_UNORM_BLOCK",
-                   pure VK_FORMAT_BC1_RGB_UNORM_BLOCK),
-                  ("VK_FORMAT_BC1_RGB_SRGB_BLOCK",
-                   pure VK_FORMAT_BC1_RGB_SRGB_BLOCK),
-                  ("VK_FORMAT_BC1_RGBA_UNORM_BLOCK",
-                   pure VK_FORMAT_BC1_RGBA_UNORM_BLOCK),
-                  ("VK_FORMAT_BC1_RGBA_SRGB_BLOCK",
-                   pure VK_FORMAT_BC1_RGBA_SRGB_BLOCK),
-                  ("VK_FORMAT_BC2_UNORM_BLOCK", pure VK_FORMAT_BC2_UNORM_BLOCK),
-                  ("VK_FORMAT_BC2_SRGB_BLOCK", pure VK_FORMAT_BC2_SRGB_BLOCK),
-                  ("VK_FORMAT_BC3_UNORM_BLOCK", pure VK_FORMAT_BC3_UNORM_BLOCK),
-                  ("VK_FORMAT_BC3_SRGB_BLOCK", pure VK_FORMAT_BC3_SRGB_BLOCK),
-                  ("VK_FORMAT_BC4_UNORM_BLOCK", pure VK_FORMAT_BC4_UNORM_BLOCK),
-                  ("VK_FORMAT_BC4_SNORM_BLOCK", pure VK_FORMAT_BC4_SNORM_BLOCK),
-                  ("VK_FORMAT_BC5_UNORM_BLOCK", pure VK_FORMAT_BC5_UNORM_BLOCK),
-                  ("VK_FORMAT_BC5_SNORM_BLOCK", pure VK_FORMAT_BC5_SNORM_BLOCK),
-                  ("VK_FORMAT_BC6H_UFLOAT_BLOCK", pure VK_FORMAT_BC6H_UFLOAT_BLOCK),
-                  ("VK_FORMAT_BC6H_SFLOAT_BLOCK", pure VK_FORMAT_BC6H_SFLOAT_BLOCK),
-                  ("VK_FORMAT_BC7_UNORM_BLOCK", pure VK_FORMAT_BC7_UNORM_BLOCK),
-                  ("VK_FORMAT_BC7_SRGB_BLOCK", pure VK_FORMAT_BC7_SRGB_BLOCK),
-                  ("VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK",
-                   pure VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK),
-                  ("VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK",
-                   pure VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK),
-                  ("VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK",
-                   pure VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK),
-                  ("VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK",
-                   pure VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK),
-                  ("VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK",
-                   pure VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK),
-                  ("VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK",
-                   pure VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK),
-                  ("VK_FORMAT_EAC_R11_UNORM_BLOCK",
-                   pure VK_FORMAT_EAC_R11_UNORM_BLOCK),
-                  ("VK_FORMAT_EAC_R11_SNORM_BLOCK",
-                   pure VK_FORMAT_EAC_R11_SNORM_BLOCK),
-                  ("VK_FORMAT_EAC_R11G11_UNORM_BLOCK",
-                   pure VK_FORMAT_EAC_R11G11_UNORM_BLOCK),
-                  ("VK_FORMAT_EAC_R11G11_SNORM_BLOCK",
-                   pure VK_FORMAT_EAC_R11G11_SNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_4x4_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_4x4_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_4x4_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_4x4_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_5x4_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_5x4_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_5x4_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_5x4_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_5x5_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_5x5_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_5x5_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_5x5_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_6x5_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_6x5_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_6x5_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_6x5_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_6x6_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_6x6_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_6x6_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_6x6_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_8x5_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_8x5_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_8x5_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_8x5_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_8x6_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_8x6_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_8x6_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_8x6_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_8x8_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_8x8_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_8x8_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_8x8_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_10x5_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_10x5_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_10x5_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_10x5_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_10x6_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_10x6_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_10x6_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_10x6_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_10x8_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_10x8_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_10x8_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_10x8_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_10x10_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_10x10_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_10x10_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_10x10_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_12x10_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_12x10_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_12x10_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_12x10_SRGB_BLOCK),
-                  ("VK_FORMAT_ASTC_12x12_UNORM_BLOCK",
-                   pure VK_FORMAT_ASTC_12x12_UNORM_BLOCK),
-                  ("VK_FORMAT_ASTC_12x12_SRGB_BLOCK",
-                   pure VK_FORMAT_ASTC_12x12_SRGB_BLOCK)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkFormat") >> (VkFormat <$> step readPrec)))
-
-pattern VK_FORMAT_UNDEFINED :: VkFormat
-
-pattern VK_FORMAT_UNDEFINED = VkFormat 0
-
-pattern VK_FORMAT_R4G4_UNORM_PACK8 :: VkFormat
-
-pattern VK_FORMAT_R4G4_UNORM_PACK8 = VkFormat 1
-
-pattern VK_FORMAT_R4G4B4A4_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R4G4B4A4_UNORM_PACK16 = VkFormat 2
-
-pattern VK_FORMAT_B4G4R4A4_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_B4G4R4A4_UNORM_PACK16 = VkFormat 3
-
-pattern VK_FORMAT_R5G6B5_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R5G6B5_UNORM_PACK16 = VkFormat 4
-
-pattern VK_FORMAT_B5G6R5_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_B5G6R5_UNORM_PACK16 = VkFormat 5
-
-pattern VK_FORMAT_R5G5B5A1_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_R5G5B5A1_UNORM_PACK16 = VkFormat 6
-
-pattern VK_FORMAT_B5G5R5A1_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_B5G5R5A1_UNORM_PACK16 = VkFormat 7
-
-pattern VK_FORMAT_A1R5G5B5_UNORM_PACK16 :: VkFormat
-
-pattern VK_FORMAT_A1R5G5B5_UNORM_PACK16 = VkFormat 8
-
-pattern VK_FORMAT_R8_UNORM :: VkFormat
-
-pattern VK_FORMAT_R8_UNORM = VkFormat 9
-
-pattern VK_FORMAT_R8_SNORM :: VkFormat
-
-pattern VK_FORMAT_R8_SNORM = VkFormat 10
-
-pattern VK_FORMAT_R8_USCALED :: VkFormat
-
-pattern VK_FORMAT_R8_USCALED = VkFormat 11
-
-pattern VK_FORMAT_R8_SSCALED :: VkFormat
-
-pattern VK_FORMAT_R8_SSCALED = VkFormat 12
-
-pattern VK_FORMAT_R8_UINT :: VkFormat
-
-pattern VK_FORMAT_R8_UINT = VkFormat 13
-
-pattern VK_FORMAT_R8_SINT :: VkFormat
-
-pattern VK_FORMAT_R8_SINT = VkFormat 14
-
-pattern VK_FORMAT_R8_SRGB :: VkFormat
-
-pattern VK_FORMAT_R8_SRGB = VkFormat 15
-
-pattern VK_FORMAT_R8G8_UNORM :: VkFormat
-
-pattern VK_FORMAT_R8G8_UNORM = VkFormat 16
-
-pattern VK_FORMAT_R8G8_SNORM :: VkFormat
-
-pattern VK_FORMAT_R8G8_SNORM = VkFormat 17
-
-pattern VK_FORMAT_R8G8_USCALED :: VkFormat
-
-pattern VK_FORMAT_R8G8_USCALED = VkFormat 18
-
-pattern VK_FORMAT_R8G8_SSCALED :: VkFormat
-
-pattern VK_FORMAT_R8G8_SSCALED = VkFormat 19
-
-pattern VK_FORMAT_R8G8_UINT :: VkFormat
-
-pattern VK_FORMAT_R8G8_UINT = VkFormat 20
-
-pattern VK_FORMAT_R8G8_SINT :: VkFormat
-
-pattern VK_FORMAT_R8G8_SINT = VkFormat 21
-
-pattern VK_FORMAT_R8G8_SRGB :: VkFormat
-
-pattern VK_FORMAT_R8G8_SRGB = VkFormat 22
-
-pattern VK_FORMAT_R8G8B8_UNORM :: VkFormat
-
-pattern VK_FORMAT_R8G8B8_UNORM = VkFormat 23
-
-pattern VK_FORMAT_R8G8B8_SNORM :: VkFormat
-
-pattern VK_FORMAT_R8G8B8_SNORM = VkFormat 24
-
-pattern VK_FORMAT_R8G8B8_USCALED :: VkFormat
-
-pattern VK_FORMAT_R8G8B8_USCALED = VkFormat 25
-
-pattern VK_FORMAT_R8G8B8_SSCALED :: VkFormat
-
-pattern VK_FORMAT_R8G8B8_SSCALED = VkFormat 26
-
-pattern VK_FORMAT_R8G8B8_UINT :: VkFormat
-
-pattern VK_FORMAT_R8G8B8_UINT = VkFormat 27
-
-pattern VK_FORMAT_R8G8B8_SINT :: VkFormat
-
-pattern VK_FORMAT_R8G8B8_SINT = VkFormat 28
-
-pattern VK_FORMAT_R8G8B8_SRGB :: VkFormat
-
-pattern VK_FORMAT_R8G8B8_SRGB = VkFormat 29
-
-pattern VK_FORMAT_B8G8R8_UNORM :: VkFormat
-
-pattern VK_FORMAT_B8G8R8_UNORM = VkFormat 30
-
-pattern VK_FORMAT_B8G8R8_SNORM :: VkFormat
-
-pattern VK_FORMAT_B8G8R8_SNORM = VkFormat 31
-
-pattern VK_FORMAT_B8G8R8_USCALED :: VkFormat
-
-pattern VK_FORMAT_B8G8R8_USCALED = VkFormat 32
-
-pattern VK_FORMAT_B8G8R8_SSCALED :: VkFormat
-
-pattern VK_FORMAT_B8G8R8_SSCALED = VkFormat 33
-
-pattern VK_FORMAT_B8G8R8_UINT :: VkFormat
-
-pattern VK_FORMAT_B8G8R8_UINT = VkFormat 34
-
-pattern VK_FORMAT_B8G8R8_SINT :: VkFormat
-
-pattern VK_FORMAT_B8G8R8_SINT = VkFormat 35
-
-pattern VK_FORMAT_B8G8R8_SRGB :: VkFormat
-
-pattern VK_FORMAT_B8G8R8_SRGB = VkFormat 36
-
-pattern VK_FORMAT_R8G8B8A8_UNORM :: VkFormat
-
-pattern VK_FORMAT_R8G8B8A8_UNORM = VkFormat 37
-
-pattern VK_FORMAT_R8G8B8A8_SNORM :: VkFormat
-
-pattern VK_FORMAT_R8G8B8A8_SNORM = VkFormat 38
-
-pattern VK_FORMAT_R8G8B8A8_USCALED :: VkFormat
-
-pattern VK_FORMAT_R8G8B8A8_USCALED = VkFormat 39
-
-pattern VK_FORMAT_R8G8B8A8_SSCALED :: VkFormat
-
-pattern VK_FORMAT_R8G8B8A8_SSCALED = VkFormat 40
-
-pattern VK_FORMAT_R8G8B8A8_UINT :: VkFormat
-
-pattern VK_FORMAT_R8G8B8A8_UINT = VkFormat 41
-
-pattern VK_FORMAT_R8G8B8A8_SINT :: VkFormat
-
-pattern VK_FORMAT_R8G8B8A8_SINT = VkFormat 42
-
-pattern VK_FORMAT_R8G8B8A8_SRGB :: VkFormat
-
-pattern VK_FORMAT_R8G8B8A8_SRGB = VkFormat 43
-
-pattern VK_FORMAT_B8G8R8A8_UNORM :: VkFormat
-
-pattern VK_FORMAT_B8G8R8A8_UNORM = VkFormat 44
-
-pattern VK_FORMAT_B8G8R8A8_SNORM :: VkFormat
-
-pattern VK_FORMAT_B8G8R8A8_SNORM = VkFormat 45
-
-pattern VK_FORMAT_B8G8R8A8_USCALED :: VkFormat
-
-pattern VK_FORMAT_B8G8R8A8_USCALED = VkFormat 46
-
-pattern VK_FORMAT_B8G8R8A8_SSCALED :: VkFormat
-
-pattern VK_FORMAT_B8G8R8A8_SSCALED = VkFormat 47
-
-pattern VK_FORMAT_B8G8R8A8_UINT :: VkFormat
-
-pattern VK_FORMAT_B8G8R8A8_UINT = VkFormat 48
-
-pattern VK_FORMAT_B8G8R8A8_SINT :: VkFormat
-
-pattern VK_FORMAT_B8G8R8A8_SINT = VkFormat 49
-
-pattern VK_FORMAT_B8G8R8A8_SRGB :: VkFormat
-
-pattern VK_FORMAT_B8G8R8A8_SRGB = VkFormat 50
-
-pattern VK_FORMAT_A8B8G8R8_UNORM_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A8B8G8R8_UNORM_PACK32 = VkFormat 51
-
-pattern VK_FORMAT_A8B8G8R8_SNORM_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A8B8G8R8_SNORM_PACK32 = VkFormat 52
-
-pattern VK_FORMAT_A8B8G8R8_USCALED_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A8B8G8R8_USCALED_PACK32 = VkFormat 53
-
-pattern VK_FORMAT_A8B8G8R8_SSCALED_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = VkFormat 54
-
-pattern VK_FORMAT_A8B8G8R8_UINT_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A8B8G8R8_UINT_PACK32 = VkFormat 55
-
-pattern VK_FORMAT_A8B8G8R8_SINT_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A8B8G8R8_SINT_PACK32 = VkFormat 56
-
-pattern VK_FORMAT_A8B8G8R8_SRGB_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A8B8G8R8_SRGB_PACK32 = VkFormat 57
-
-pattern VK_FORMAT_A2R10G10B10_UNORM_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2R10G10B10_UNORM_PACK32 = VkFormat 58
-
-pattern VK_FORMAT_A2R10G10B10_SNORM_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2R10G10B10_SNORM_PACK32 = VkFormat 59
-
-pattern VK_FORMAT_A2R10G10B10_USCALED_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2R10G10B10_USCALED_PACK32 = VkFormat 60
-
-pattern VK_FORMAT_A2R10G10B10_SSCALED_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = VkFormat 61
-
-pattern VK_FORMAT_A2R10G10B10_UINT_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2R10G10B10_UINT_PACK32 = VkFormat 62
-
-pattern VK_FORMAT_A2R10G10B10_SINT_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2R10G10B10_SINT_PACK32 = VkFormat 63
-
-pattern VK_FORMAT_A2B10G10R10_UNORM_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2B10G10R10_UNORM_PACK32 = VkFormat 64
-
-pattern VK_FORMAT_A2B10G10R10_SNORM_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2B10G10R10_SNORM_PACK32 = VkFormat 65
-
-pattern VK_FORMAT_A2B10G10R10_USCALED_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2B10G10R10_USCALED_PACK32 = VkFormat 66
-
-pattern VK_FORMAT_A2B10G10R10_SSCALED_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = VkFormat 67
-
-pattern VK_FORMAT_A2B10G10R10_UINT_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2B10G10R10_UINT_PACK32 = VkFormat 68
-
-pattern VK_FORMAT_A2B10G10R10_SINT_PACK32 :: VkFormat
-
-pattern VK_FORMAT_A2B10G10R10_SINT_PACK32 = VkFormat 69
-
-pattern VK_FORMAT_R16_UNORM :: VkFormat
-
-pattern VK_FORMAT_R16_UNORM = VkFormat 70
-
-pattern VK_FORMAT_R16_SNORM :: VkFormat
-
-pattern VK_FORMAT_R16_SNORM = VkFormat 71
-
-pattern VK_FORMAT_R16_USCALED :: VkFormat
-
-pattern VK_FORMAT_R16_USCALED = VkFormat 72
-
-pattern VK_FORMAT_R16_SSCALED :: VkFormat
-
-pattern VK_FORMAT_R16_SSCALED = VkFormat 73
-
-pattern VK_FORMAT_R16_UINT :: VkFormat
-
-pattern VK_FORMAT_R16_UINT = VkFormat 74
-
-pattern VK_FORMAT_R16_SINT :: VkFormat
-
-pattern VK_FORMAT_R16_SINT = VkFormat 75
-
-pattern VK_FORMAT_R16_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R16_SFLOAT = VkFormat 76
-
-pattern VK_FORMAT_R16G16_UNORM :: VkFormat
-
-pattern VK_FORMAT_R16G16_UNORM = VkFormat 77
-
-pattern VK_FORMAT_R16G16_SNORM :: VkFormat
-
-pattern VK_FORMAT_R16G16_SNORM = VkFormat 78
-
-pattern VK_FORMAT_R16G16_USCALED :: VkFormat
-
-pattern VK_FORMAT_R16G16_USCALED = VkFormat 79
-
-pattern VK_FORMAT_R16G16_SSCALED :: VkFormat
-
-pattern VK_FORMAT_R16G16_SSCALED = VkFormat 80
-
-pattern VK_FORMAT_R16G16_UINT :: VkFormat
-
-pattern VK_FORMAT_R16G16_UINT = VkFormat 81
-
-pattern VK_FORMAT_R16G16_SINT :: VkFormat
-
-pattern VK_FORMAT_R16G16_SINT = VkFormat 82
-
-pattern VK_FORMAT_R16G16_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R16G16_SFLOAT = VkFormat 83
-
-pattern VK_FORMAT_R16G16B16_UNORM :: VkFormat
-
-pattern VK_FORMAT_R16G16B16_UNORM = VkFormat 84
-
-pattern VK_FORMAT_R16G16B16_SNORM :: VkFormat
-
-pattern VK_FORMAT_R16G16B16_SNORM = VkFormat 85
-
-pattern VK_FORMAT_R16G16B16_USCALED :: VkFormat
-
-pattern VK_FORMAT_R16G16B16_USCALED = VkFormat 86
-
-pattern VK_FORMAT_R16G16B16_SSCALED :: VkFormat
-
-pattern VK_FORMAT_R16G16B16_SSCALED = VkFormat 87
-
-pattern VK_FORMAT_R16G16B16_UINT :: VkFormat
-
-pattern VK_FORMAT_R16G16B16_UINT = VkFormat 88
-
-pattern VK_FORMAT_R16G16B16_SINT :: VkFormat
-
-pattern VK_FORMAT_R16G16B16_SINT = VkFormat 89
-
-pattern VK_FORMAT_R16G16B16_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R16G16B16_SFLOAT = VkFormat 90
-
-pattern VK_FORMAT_R16G16B16A16_UNORM :: VkFormat
-
-pattern VK_FORMAT_R16G16B16A16_UNORM = VkFormat 91
-
-pattern VK_FORMAT_R16G16B16A16_SNORM :: VkFormat
-
-pattern VK_FORMAT_R16G16B16A16_SNORM = VkFormat 92
-
-pattern VK_FORMAT_R16G16B16A16_USCALED :: VkFormat
-
-pattern VK_FORMAT_R16G16B16A16_USCALED = VkFormat 93
-
-pattern VK_FORMAT_R16G16B16A16_SSCALED :: VkFormat
-
-pattern VK_FORMAT_R16G16B16A16_SSCALED = VkFormat 94
-
-pattern VK_FORMAT_R16G16B16A16_UINT :: VkFormat
-
-pattern VK_FORMAT_R16G16B16A16_UINT = VkFormat 95
-
-pattern VK_FORMAT_R16G16B16A16_SINT :: VkFormat
-
-pattern VK_FORMAT_R16G16B16A16_SINT = VkFormat 96
-
-pattern VK_FORMAT_R16G16B16A16_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R16G16B16A16_SFLOAT = VkFormat 97
-
-pattern VK_FORMAT_R32_UINT :: VkFormat
-
-pattern VK_FORMAT_R32_UINT = VkFormat 98
-
-pattern VK_FORMAT_R32_SINT :: VkFormat
-
-pattern VK_FORMAT_R32_SINT = VkFormat 99
-
-pattern VK_FORMAT_R32_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R32_SFLOAT = VkFormat 100
-
-pattern VK_FORMAT_R32G32_UINT :: VkFormat
-
-pattern VK_FORMAT_R32G32_UINT = VkFormat 101
-
-pattern VK_FORMAT_R32G32_SINT :: VkFormat
-
-pattern VK_FORMAT_R32G32_SINT = VkFormat 102
-
-pattern VK_FORMAT_R32G32_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R32G32_SFLOAT = VkFormat 103
-
-pattern VK_FORMAT_R32G32B32_UINT :: VkFormat
-
-pattern VK_FORMAT_R32G32B32_UINT = VkFormat 104
-
-pattern VK_FORMAT_R32G32B32_SINT :: VkFormat
-
-pattern VK_FORMAT_R32G32B32_SINT = VkFormat 105
-
-pattern VK_FORMAT_R32G32B32_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R32G32B32_SFLOAT = VkFormat 106
-
-pattern VK_FORMAT_R32G32B32A32_UINT :: VkFormat
-
-pattern VK_FORMAT_R32G32B32A32_UINT = VkFormat 107
-
-pattern VK_FORMAT_R32G32B32A32_SINT :: VkFormat
-
-pattern VK_FORMAT_R32G32B32A32_SINT = VkFormat 108
-
-pattern VK_FORMAT_R32G32B32A32_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R32G32B32A32_SFLOAT = VkFormat 109
-
-pattern VK_FORMAT_R64_UINT :: VkFormat
-
-pattern VK_FORMAT_R64_UINT = VkFormat 110
-
-pattern VK_FORMAT_R64_SINT :: VkFormat
-
-pattern VK_FORMAT_R64_SINT = VkFormat 111
-
-pattern VK_FORMAT_R64_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R64_SFLOAT = VkFormat 112
-
-pattern VK_FORMAT_R64G64_UINT :: VkFormat
-
-pattern VK_FORMAT_R64G64_UINT = VkFormat 113
-
-pattern VK_FORMAT_R64G64_SINT :: VkFormat
-
-pattern VK_FORMAT_R64G64_SINT = VkFormat 114
-
-pattern VK_FORMAT_R64G64_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R64G64_SFLOAT = VkFormat 115
-
-pattern VK_FORMAT_R64G64B64_UINT :: VkFormat
-
-pattern VK_FORMAT_R64G64B64_UINT = VkFormat 116
-
-pattern VK_FORMAT_R64G64B64_SINT :: VkFormat
-
-pattern VK_FORMAT_R64G64B64_SINT = VkFormat 117
-
-pattern VK_FORMAT_R64G64B64_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R64G64B64_SFLOAT = VkFormat 118
-
-pattern VK_FORMAT_R64G64B64A64_UINT :: VkFormat
-
-pattern VK_FORMAT_R64G64B64A64_UINT = VkFormat 119
-
-pattern VK_FORMAT_R64G64B64A64_SINT :: VkFormat
-
-pattern VK_FORMAT_R64G64B64A64_SINT = VkFormat 120
-
-pattern VK_FORMAT_R64G64B64A64_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_R64G64B64A64_SFLOAT = VkFormat 121
-
-pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32 :: VkFormat
-
-pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32 = VkFormat 122
-
-pattern VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 :: VkFormat
-
-pattern VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = VkFormat 123
-
-pattern VK_FORMAT_D16_UNORM :: VkFormat
-
-pattern VK_FORMAT_D16_UNORM = VkFormat 124
-
-pattern VK_FORMAT_X8_D24_UNORM_PACK32 :: VkFormat
-
-pattern VK_FORMAT_X8_D24_UNORM_PACK32 = VkFormat 125
-
-pattern VK_FORMAT_D32_SFLOAT :: VkFormat
-
-pattern VK_FORMAT_D32_SFLOAT = VkFormat 126
-
-pattern VK_FORMAT_S8_UINT :: VkFormat
-
-pattern VK_FORMAT_S8_UINT = VkFormat 127
-
-pattern VK_FORMAT_D16_UNORM_S8_UINT :: VkFormat
-
-pattern VK_FORMAT_D16_UNORM_S8_UINT = VkFormat 128
-
-pattern VK_FORMAT_D24_UNORM_S8_UINT :: VkFormat
-
-pattern VK_FORMAT_D24_UNORM_S8_UINT = VkFormat 129
-
-pattern VK_FORMAT_D32_SFLOAT_S8_UINT :: VkFormat
-
-pattern VK_FORMAT_D32_SFLOAT_S8_UINT = VkFormat 130
-
-pattern VK_FORMAT_BC1_RGB_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC1_RGB_UNORM_BLOCK = VkFormat 131
-
-pattern VK_FORMAT_BC1_RGB_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC1_RGB_SRGB_BLOCK = VkFormat 132
-
-pattern VK_FORMAT_BC1_RGBA_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC1_RGBA_UNORM_BLOCK = VkFormat 133
-
-pattern VK_FORMAT_BC1_RGBA_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC1_RGBA_SRGB_BLOCK = VkFormat 134
-
-pattern VK_FORMAT_BC2_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC2_UNORM_BLOCK = VkFormat 135
-
-pattern VK_FORMAT_BC2_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC2_SRGB_BLOCK = VkFormat 136
-
-pattern VK_FORMAT_BC3_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC3_UNORM_BLOCK = VkFormat 137
-
-pattern VK_FORMAT_BC3_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC3_SRGB_BLOCK = VkFormat 138
-
-pattern VK_FORMAT_BC4_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC4_UNORM_BLOCK = VkFormat 139
-
-pattern VK_FORMAT_BC4_SNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC4_SNORM_BLOCK = VkFormat 140
-
-pattern VK_FORMAT_BC5_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC5_UNORM_BLOCK = VkFormat 141
-
-pattern VK_FORMAT_BC5_SNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC5_SNORM_BLOCK = VkFormat 142
-
-pattern VK_FORMAT_BC6H_UFLOAT_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC6H_UFLOAT_BLOCK = VkFormat 143
-
-pattern VK_FORMAT_BC6H_SFLOAT_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC6H_SFLOAT_BLOCK = VkFormat 144
-
-pattern VK_FORMAT_BC7_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC7_UNORM_BLOCK = VkFormat 145
-
-pattern VK_FORMAT_BC7_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_BC7_SRGB_BLOCK = VkFormat 146
-
-pattern VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = VkFormat 147
-
-pattern VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = VkFormat 148
-
-pattern VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = VkFormat 149
-
-pattern VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = VkFormat 150
-
-pattern VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = VkFormat 151
-
-pattern VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = VkFormat 152
-
-pattern VK_FORMAT_EAC_R11_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_EAC_R11_UNORM_BLOCK = VkFormat 153
-
-pattern VK_FORMAT_EAC_R11_SNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_EAC_R11_SNORM_BLOCK = VkFormat 154
-
-pattern VK_FORMAT_EAC_R11G11_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_EAC_R11G11_UNORM_BLOCK = VkFormat 155
-
-pattern VK_FORMAT_EAC_R11G11_SNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_EAC_R11G11_SNORM_BLOCK = VkFormat 156
-
-pattern VK_FORMAT_ASTC_4x4_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_4x4_UNORM_BLOCK = VkFormat 157
-
-pattern VK_FORMAT_ASTC_4x4_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_4x4_SRGB_BLOCK = VkFormat 158
-
-pattern VK_FORMAT_ASTC_5x4_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_5x4_UNORM_BLOCK = VkFormat 159
-
-pattern VK_FORMAT_ASTC_5x4_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_5x4_SRGB_BLOCK = VkFormat 160
-
-pattern VK_FORMAT_ASTC_5x5_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_5x5_UNORM_BLOCK = VkFormat 161
-
-pattern VK_FORMAT_ASTC_5x5_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_5x5_SRGB_BLOCK = VkFormat 162
-
-pattern VK_FORMAT_ASTC_6x5_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_6x5_UNORM_BLOCK = VkFormat 163
-
-pattern VK_FORMAT_ASTC_6x5_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_6x5_SRGB_BLOCK = VkFormat 164
-
-pattern VK_FORMAT_ASTC_6x6_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_6x6_UNORM_BLOCK = VkFormat 165
-
-pattern VK_FORMAT_ASTC_6x6_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_6x6_SRGB_BLOCK = VkFormat 166
-
-pattern VK_FORMAT_ASTC_8x5_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_8x5_UNORM_BLOCK = VkFormat 167
-
-pattern VK_FORMAT_ASTC_8x5_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_8x5_SRGB_BLOCK = VkFormat 168
-
-pattern VK_FORMAT_ASTC_8x6_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_8x6_UNORM_BLOCK = VkFormat 169
-
-pattern VK_FORMAT_ASTC_8x6_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_8x6_SRGB_BLOCK = VkFormat 170
-
-pattern VK_FORMAT_ASTC_8x8_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_8x8_UNORM_BLOCK = VkFormat 171
-
-pattern VK_FORMAT_ASTC_8x8_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_8x8_SRGB_BLOCK = VkFormat 172
-
-pattern VK_FORMAT_ASTC_10x5_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_10x5_UNORM_BLOCK = VkFormat 173
-
-pattern VK_FORMAT_ASTC_10x5_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_10x5_SRGB_BLOCK = VkFormat 174
-
-pattern VK_FORMAT_ASTC_10x6_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_10x6_UNORM_BLOCK = VkFormat 175
-
-pattern VK_FORMAT_ASTC_10x6_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_10x6_SRGB_BLOCK = VkFormat 176
-
-pattern VK_FORMAT_ASTC_10x8_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_10x8_UNORM_BLOCK = VkFormat 177
-
-pattern VK_FORMAT_ASTC_10x8_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_10x8_SRGB_BLOCK = VkFormat 178
-
-pattern VK_FORMAT_ASTC_10x10_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_10x10_UNORM_BLOCK = VkFormat 179
-
-pattern VK_FORMAT_ASTC_10x10_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_10x10_SRGB_BLOCK = VkFormat 180
-
-pattern VK_FORMAT_ASTC_12x10_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_12x10_UNORM_BLOCK = VkFormat 181
-
-pattern VK_FORMAT_ASTC_12x10_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_12x10_SRGB_BLOCK = VkFormat 182
-
-pattern VK_FORMAT_ASTC_12x12_UNORM_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_12x12_UNORM_BLOCK = VkFormat 183
-
-pattern VK_FORMAT_ASTC_12x12_SRGB_BLOCK :: VkFormat
-
-pattern VK_FORMAT_ASTC_12x12_SRGB_BLOCK = VkFormat 184
-
-newtype VkFormatFeatureBitmask (a ::
-                                  FlagType) = VkFormatFeatureBitmask VkFlags
-                                                deriving (Eq, Ord, Storable, Data, Generic)
-
-type VkFormatFeatureFlags = VkFormatFeatureBitmask FlagMask
-
-type VkFormatFeatureFlagBits = VkFormatFeatureBitmask FlagBit
-
-pattern VkFormatFeatureFlagBits ::
-        VkFlags -> VkFormatFeatureBitmask FlagBit
-
-pattern VkFormatFeatureFlagBits n = VkFormatFeatureBitmask n
-
-pattern VkFormatFeatureFlags ::
-        VkFlags -> VkFormatFeatureBitmask FlagMask
-
-pattern VkFormatFeatureFlags n = VkFormatFeatureBitmask n
-
-deriving instance Bits (VkFormatFeatureBitmask FlagMask)
-
-deriving instance FiniteBits (VkFormatFeatureBitmask FlagMask)
-
-deriving instance Integral (VkFormatFeatureBitmask FlagMask)
-
-deriving instance Num (VkFormatFeatureBitmask FlagMask)
-
-deriving instance Bounded (VkFormatFeatureBitmask FlagMask)
-
-deriving instance Enum (VkFormatFeatureBitmask FlagMask)
-
-deriving instance Real (VkFormatFeatureBitmask FlagMask)
-
-instance Show (VkFormatFeatureBitmask a) where
-        showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
-          = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
-          = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
-          = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
-          = showString "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
-          = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
-          = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT
-          = showString "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
-          = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
-          = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
-          = showString "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_BLIT_SRC_BIT
-          = showString "VK_FORMAT_FEATURE_BLIT_SRC_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_BLIT_DST_BIT
-          = showString "VK_FORMAT_FEATURE_BLIT_DST_BIT"
-        showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
-          = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"
-        showsPrec p (VkFormatFeatureBitmask x)
-          = showParen (p >= 11)
-              (showString "VkFormatFeatureBitmask " . showsPrec 11 x)
-
-instance Read (VkFormatFeatureBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT",
-                   pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT),
-                  ("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT",
-                   pure VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT),
-                  ("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT",
-                   pure VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT),
-                  ("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT",
-                   pure VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT),
-                  ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT",
-                   pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT),
-                  ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT",
-                   pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT),
-                  ("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT",
-                   pure VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT),
-                  ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT",
-                   pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT),
-                  ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT",
-                   pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT),
-                  ("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT",
-                   pure VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT),
-                  ("VK_FORMAT_FEATURE_BLIT_SRC_BIT",
-                   pure VK_FORMAT_FEATURE_BLIT_SRC_BIT),
-                  ("VK_FORMAT_FEATURE_BLIT_DST_BIT",
-                   pure VK_FORMAT_FEATURE_BLIT_DST_BIT),
-                  ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT",
-                   pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkFormatFeatureBitmask") >>
-                      (VkFormatFeatureBitmask <$> step readPrec)))
+{-# LANGUAGE FlexibleInstances          #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE KindSignatures             #-}
+{-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE StandaloneDeriving         #-}
+{-# LANGUAGE Strict                     #-}
+{-# LANGUAGE TypeSynonymInstances       #-}
+module Graphics.Vulkan.Types.Enum.Format
+       (VkFormat(VkFormat, VK_FORMAT_UNDEFINED,
+                 VK_FORMAT_R4G4_UNORM_PACK8, VK_FORMAT_R4G4B4A4_UNORM_PACK16,
+                 VK_FORMAT_B4G4R4A4_UNORM_PACK16, VK_FORMAT_R5G6B5_UNORM_PACK16,
+                 VK_FORMAT_B5G6R5_UNORM_PACK16, VK_FORMAT_R5G5B5A1_UNORM_PACK16,
+                 VK_FORMAT_B5G5R5A1_UNORM_PACK16, VK_FORMAT_A1R5G5B5_UNORM_PACK16,
+                 VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_USCALED,
+                 VK_FORMAT_R8_SSCALED, VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT,
+                 VK_FORMAT_R8_SRGB, VK_FORMAT_R8G8_UNORM, VK_FORMAT_R8G8_SNORM,
+                 VK_FORMAT_R8G8_USCALED, VK_FORMAT_R8G8_SSCALED,
+                 VK_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SRGB,
+                 VK_FORMAT_R8G8B8_UNORM, VK_FORMAT_R8G8B8_SNORM,
+                 VK_FORMAT_R8G8B8_USCALED, VK_FORMAT_R8G8B8_SSCALED,
+                 VK_FORMAT_R8G8B8_UINT, VK_FORMAT_R8G8B8_SINT,
+                 VK_FORMAT_R8G8B8_SRGB, VK_FORMAT_B8G8R8_UNORM,
+                 VK_FORMAT_B8G8R8_SNORM, VK_FORMAT_B8G8R8_USCALED,
+                 VK_FORMAT_B8G8R8_SSCALED, VK_FORMAT_B8G8R8_UINT,
+                 VK_FORMAT_B8G8R8_SINT, VK_FORMAT_B8G8R8_SRGB,
+                 VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_SNORM,
+                 VK_FORMAT_R8G8B8A8_USCALED, VK_FORMAT_R8G8B8A8_SSCALED,
+                 VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_SINT,
+                 VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM,
+                 VK_FORMAT_B8G8R8A8_SNORM, VK_FORMAT_B8G8R8A8_USCALED,
+                 VK_FORMAT_B8G8R8A8_SSCALED, VK_FORMAT_B8G8R8A8_UINT,
+                 VK_FORMAT_B8G8R8A8_SINT, VK_FORMAT_B8G8R8A8_SRGB,
+                 VK_FORMAT_A8B8G8R8_UNORM_PACK32, VK_FORMAT_A8B8G8R8_SNORM_PACK32,
+                 VK_FORMAT_A8B8G8R8_USCALED_PACK32,
+                 VK_FORMAT_A8B8G8R8_SSCALED_PACK32, VK_FORMAT_A8B8G8R8_UINT_PACK32,
+                 VK_FORMAT_A8B8G8R8_SINT_PACK32, VK_FORMAT_A8B8G8R8_SRGB_PACK32,
+                 VK_FORMAT_A2R10G10B10_UNORM_PACK32,
+                 VK_FORMAT_A2R10G10B10_SNORM_PACK32,
+                 VK_FORMAT_A2R10G10B10_USCALED_PACK32,
+                 VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
+                 VK_FORMAT_A2R10G10B10_UINT_PACK32,
+                 VK_FORMAT_A2R10G10B10_SINT_PACK32,
+                 VK_FORMAT_A2B10G10R10_UNORM_PACK32,
+                 VK_FORMAT_A2B10G10R10_SNORM_PACK32,
+                 VK_FORMAT_A2B10G10R10_USCALED_PACK32,
+                 VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
+                 VK_FORMAT_A2B10G10R10_UINT_PACK32,
+                 VK_FORMAT_A2B10G10R10_SINT_PACK32, VK_FORMAT_R16_UNORM,
+                 VK_FORMAT_R16_SNORM, VK_FORMAT_R16_USCALED, VK_FORMAT_R16_SSCALED,
+                 VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R16_SFLOAT,
+                 VK_FORMAT_R16G16_UNORM, VK_FORMAT_R16G16_SNORM,
+                 VK_FORMAT_R16G16_USCALED, VK_FORMAT_R16G16_SSCALED,
+                 VK_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_SINT,
+                 VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16B16_UNORM,
+                 VK_FORMAT_R16G16B16_SNORM, VK_FORMAT_R16G16B16_USCALED,
+                 VK_FORMAT_R16G16B16_SSCALED, VK_FORMAT_R16G16B16_UINT,
+                 VK_FORMAT_R16G16B16_SINT, VK_FORMAT_R16G16B16_SFLOAT,
+                 VK_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16A16_SNORM,
+                 VK_FORMAT_R16G16B16A16_USCALED, VK_FORMAT_R16G16B16A16_SSCALED,
+                 VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_SINT,
+                 VK_FORMAT_R16G16B16A16_SFLOAT, VK_FORMAT_R32_UINT,
+                 VK_FORMAT_R32_SINT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32G32_UINT,
+                 VK_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_SFLOAT,
+                 VK_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32B32_SINT,
+                 VK_FORMAT_R32G32B32_SFLOAT, VK_FORMAT_R32G32B32A32_UINT,
+                 VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SFLOAT,
+                 VK_FORMAT_R64_UINT, VK_FORMAT_R64_SINT, VK_FORMAT_R64_SFLOAT,
+                 VK_FORMAT_R64G64_UINT, VK_FORMAT_R64G64_SINT,
+                 VK_FORMAT_R64G64_SFLOAT, VK_FORMAT_R64G64B64_UINT,
+                 VK_FORMAT_R64G64B64_SINT, VK_FORMAT_R64G64B64_SFLOAT,
+                 VK_FORMAT_R64G64B64A64_UINT, VK_FORMAT_R64G64B64A64_SINT,
+                 VK_FORMAT_R64G64B64A64_SFLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32,
+                 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, VK_FORMAT_D16_UNORM,
+                 VK_FORMAT_X8_D24_UNORM_PACK32, VK_FORMAT_D32_SFLOAT,
+                 VK_FORMAT_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT,
+                 VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT,
+                 VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK,
+                 VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
+                 VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK,
+                 VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK,
+                 VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK,
+                 VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK,
+                 VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK,
+                 VK_FORMAT_BC7_UNORM_BLOCK, VK_FORMAT_BC7_SRGB_BLOCK,
+                 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
+                 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
+                 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
+                 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
+                 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
+                 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK,
+                 VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
+                 VK_FORMAT_EAC_R11G11_SNORM_BLOCK, VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
+                 VK_FORMAT_ASTC_12x12_SRGB_BLOCK),
+        VkFormatFeatureBitmask(VkFormatFeatureBitmask,
+                               VkFormatFeatureFlags, VkFormatFeatureFlagBits,
+                               VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
+                               VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
+                               VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
+                               VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
+                               VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
+                               VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
+                               VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
+                               VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
+                               VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
+                               VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
+                               VK_FORMAT_FEATURE_BLIT_SRC_BIT, VK_FORMAT_FEATURE_BLIT_DST_BIT,
+                               VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT),
+        VkFormatFeatureFlags, VkFormatFeatureFlagBits)
+       where
+import Data.Bits                       (Bits, FiniteBits)
+import Foreign.Storable                (Storable)
+import GHC.Read                        (choose, expectP)
+import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
+import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
+import Text.ParserCombinators.ReadPrec (prec, step, (+++))
+import Text.Read                       (Read (..), parens)
+import Text.Read.Lex                   (Lexeme (..))
+
+-- | Vulkan format definitions
+--
+--   type = @enum@
+--
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFormat VkFormat registry at www.khronos.org>
+newtype VkFormat = VkFormat Int32
+                   deriving (Eq, Ord, Enum, Storable)
+
+instance Show VkFormat where
+    showsPrec _ VK_FORMAT_UNDEFINED = showString "VK_FORMAT_UNDEFINED"
+    showsPrec _ VK_FORMAT_R4G4_UNORM_PACK8
+      = showString "VK_FORMAT_R4G4_UNORM_PACK8"
+    showsPrec _ VK_FORMAT_R4G4B4A4_UNORM_PACK16
+      = showString "VK_FORMAT_R4G4B4A4_UNORM_PACK16"
+    showsPrec _ VK_FORMAT_B4G4R4A4_UNORM_PACK16
+      = showString "VK_FORMAT_B4G4R4A4_UNORM_PACK16"
+    showsPrec _ VK_FORMAT_R5G6B5_UNORM_PACK16
+      = showString "VK_FORMAT_R5G6B5_UNORM_PACK16"
+    showsPrec _ VK_FORMAT_B5G6R5_UNORM_PACK16
+      = showString "VK_FORMAT_B5G6R5_UNORM_PACK16"
+    showsPrec _ VK_FORMAT_R5G5B5A1_UNORM_PACK16
+      = showString "VK_FORMAT_R5G5B5A1_UNORM_PACK16"
+    showsPrec _ VK_FORMAT_B5G5R5A1_UNORM_PACK16
+      = showString "VK_FORMAT_B5G5R5A1_UNORM_PACK16"
+    showsPrec _ VK_FORMAT_A1R5G5B5_UNORM_PACK16
+      = showString "VK_FORMAT_A1R5G5B5_UNORM_PACK16"
+    showsPrec _ VK_FORMAT_R8_UNORM = showString "VK_FORMAT_R8_UNORM"
+    showsPrec _ VK_FORMAT_R8_SNORM = showString "VK_FORMAT_R8_SNORM"
+    showsPrec _ VK_FORMAT_R8_USCALED
+      = showString "VK_FORMAT_R8_USCALED"
+    showsPrec _ VK_FORMAT_R8_SSCALED
+      = showString "VK_FORMAT_R8_SSCALED"
+    showsPrec _ VK_FORMAT_R8_UINT = showString "VK_FORMAT_R8_UINT"
+    showsPrec _ VK_FORMAT_R8_SINT = showString "VK_FORMAT_R8_SINT"
+    showsPrec _ VK_FORMAT_R8_SRGB = showString "VK_FORMAT_R8_SRGB"
+    showsPrec _ VK_FORMAT_R8G8_UNORM
+      = showString "VK_FORMAT_R8G8_UNORM"
+    showsPrec _ VK_FORMAT_R8G8_SNORM
+      = showString "VK_FORMAT_R8G8_SNORM"
+    showsPrec _ VK_FORMAT_R8G8_USCALED
+      = showString "VK_FORMAT_R8G8_USCALED"
+    showsPrec _ VK_FORMAT_R8G8_SSCALED
+      = showString "VK_FORMAT_R8G8_SSCALED"
+    showsPrec _ VK_FORMAT_R8G8_UINT = showString "VK_FORMAT_R8G8_UINT"
+    showsPrec _ VK_FORMAT_R8G8_SINT = showString "VK_FORMAT_R8G8_SINT"
+    showsPrec _ VK_FORMAT_R8G8_SRGB = showString "VK_FORMAT_R8G8_SRGB"
+    showsPrec _ VK_FORMAT_R8G8B8_UNORM
+      = showString "VK_FORMAT_R8G8B8_UNORM"
+    showsPrec _ VK_FORMAT_R8G8B8_SNORM
+      = showString "VK_FORMAT_R8G8B8_SNORM"
+    showsPrec _ VK_FORMAT_R8G8B8_USCALED
+      = showString "VK_FORMAT_R8G8B8_USCALED"
+    showsPrec _ VK_FORMAT_R8G8B8_SSCALED
+      = showString "VK_FORMAT_R8G8B8_SSCALED"
+    showsPrec _ VK_FORMAT_R8G8B8_UINT
+      = showString "VK_FORMAT_R8G8B8_UINT"
+    showsPrec _ VK_FORMAT_R8G8B8_SINT
+      = showString "VK_FORMAT_R8G8B8_SINT"
+    showsPrec _ VK_FORMAT_R8G8B8_SRGB
+      = showString "VK_FORMAT_R8G8B8_SRGB"
+    showsPrec _ VK_FORMAT_B8G8R8_UNORM
+      = showString "VK_FORMAT_B8G8R8_UNORM"
+    showsPrec _ VK_FORMAT_B8G8R8_SNORM
+      = showString "VK_FORMAT_B8G8R8_SNORM"
+    showsPrec _ VK_FORMAT_B8G8R8_USCALED
+      = showString "VK_FORMAT_B8G8R8_USCALED"
+    showsPrec _ VK_FORMAT_B8G8R8_SSCALED
+      = showString "VK_FORMAT_B8G8R8_SSCALED"
+    showsPrec _ VK_FORMAT_B8G8R8_UINT
+      = showString "VK_FORMAT_B8G8R8_UINT"
+    showsPrec _ VK_FORMAT_B8G8R8_SINT
+      = showString "VK_FORMAT_B8G8R8_SINT"
+    showsPrec _ VK_FORMAT_B8G8R8_SRGB
+      = showString "VK_FORMAT_B8G8R8_SRGB"
+    showsPrec _ VK_FORMAT_R8G8B8A8_UNORM
+      = showString "VK_FORMAT_R8G8B8A8_UNORM"
+    showsPrec _ VK_FORMAT_R8G8B8A8_SNORM
+      = showString "VK_FORMAT_R8G8B8A8_SNORM"
+    showsPrec _ VK_FORMAT_R8G8B8A8_USCALED
+      = showString "VK_FORMAT_R8G8B8A8_USCALED"
+    showsPrec _ VK_FORMAT_R8G8B8A8_SSCALED
+      = showString "VK_FORMAT_R8G8B8A8_SSCALED"
+    showsPrec _ VK_FORMAT_R8G8B8A8_UINT
+      = showString "VK_FORMAT_R8G8B8A8_UINT"
+    showsPrec _ VK_FORMAT_R8G8B8A8_SINT
+      = showString "VK_FORMAT_R8G8B8A8_SINT"
+    showsPrec _ VK_FORMAT_R8G8B8A8_SRGB
+      = showString "VK_FORMAT_R8G8B8A8_SRGB"
+    showsPrec _ VK_FORMAT_B8G8R8A8_UNORM
+      = showString "VK_FORMAT_B8G8R8A8_UNORM"
+    showsPrec _ VK_FORMAT_B8G8R8A8_SNORM
+      = showString "VK_FORMAT_B8G8R8A8_SNORM"
+    showsPrec _ VK_FORMAT_B8G8R8A8_USCALED
+      = showString "VK_FORMAT_B8G8R8A8_USCALED"
+    showsPrec _ VK_FORMAT_B8G8R8A8_SSCALED
+      = showString "VK_FORMAT_B8G8R8A8_SSCALED"
+    showsPrec _ VK_FORMAT_B8G8R8A8_UINT
+      = showString "VK_FORMAT_B8G8R8A8_UINT"
+    showsPrec _ VK_FORMAT_B8G8R8A8_SINT
+      = showString "VK_FORMAT_B8G8R8A8_SINT"
+    showsPrec _ VK_FORMAT_B8G8R8A8_SRGB
+      = showString "VK_FORMAT_B8G8R8A8_SRGB"
+    showsPrec _ VK_FORMAT_A8B8G8R8_UNORM_PACK32
+      = showString "VK_FORMAT_A8B8G8R8_UNORM_PACK32"
+    showsPrec _ VK_FORMAT_A8B8G8R8_SNORM_PACK32
+      = showString "VK_FORMAT_A8B8G8R8_SNORM_PACK32"
+    showsPrec _ VK_FORMAT_A8B8G8R8_USCALED_PACK32
+      = showString "VK_FORMAT_A8B8G8R8_USCALED_PACK32"
+    showsPrec _ VK_FORMAT_A8B8G8R8_SSCALED_PACK32
+      = showString "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"
+    showsPrec _ VK_FORMAT_A8B8G8R8_UINT_PACK32
+      = showString "VK_FORMAT_A8B8G8R8_UINT_PACK32"
+    showsPrec _ VK_FORMAT_A8B8G8R8_SINT_PACK32
+      = showString "VK_FORMAT_A8B8G8R8_SINT_PACK32"
+    showsPrec _ VK_FORMAT_A8B8G8R8_SRGB_PACK32
+      = showString "VK_FORMAT_A8B8G8R8_SRGB_PACK32"
+    showsPrec _ VK_FORMAT_A2R10G10B10_UNORM_PACK32
+      = showString "VK_FORMAT_A2R10G10B10_UNORM_PACK32"
+    showsPrec _ VK_FORMAT_A2R10G10B10_SNORM_PACK32
+      = showString "VK_FORMAT_A2R10G10B10_SNORM_PACK32"
+    showsPrec _ VK_FORMAT_A2R10G10B10_USCALED_PACK32
+      = showString "VK_FORMAT_A2R10G10B10_USCALED_PACK32"
+    showsPrec _ VK_FORMAT_A2R10G10B10_SSCALED_PACK32
+      = showString "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"
+    showsPrec _ VK_FORMAT_A2R10G10B10_UINT_PACK32
+      = showString "VK_FORMAT_A2R10G10B10_UINT_PACK32"
+    showsPrec _ VK_FORMAT_A2R10G10B10_SINT_PACK32
+      = showString "VK_FORMAT_A2R10G10B10_SINT_PACK32"
+    showsPrec _ VK_FORMAT_A2B10G10R10_UNORM_PACK32
+      = showString "VK_FORMAT_A2B10G10R10_UNORM_PACK32"
+    showsPrec _ VK_FORMAT_A2B10G10R10_SNORM_PACK32
+      = showString "VK_FORMAT_A2B10G10R10_SNORM_PACK32"
+    showsPrec _ VK_FORMAT_A2B10G10R10_USCALED_PACK32
+      = showString "VK_FORMAT_A2B10G10R10_USCALED_PACK32"
+    showsPrec _ VK_FORMAT_A2B10G10R10_SSCALED_PACK32
+      = showString "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"
+    showsPrec _ VK_FORMAT_A2B10G10R10_UINT_PACK32
+      = showString "VK_FORMAT_A2B10G10R10_UINT_PACK32"
+    showsPrec _ VK_FORMAT_A2B10G10R10_SINT_PACK32
+      = showString "VK_FORMAT_A2B10G10R10_SINT_PACK32"
+    showsPrec _ VK_FORMAT_R16_UNORM = showString "VK_FORMAT_R16_UNORM"
+    showsPrec _ VK_FORMAT_R16_SNORM = showString "VK_FORMAT_R16_SNORM"
+    showsPrec _ VK_FORMAT_R16_USCALED
+      = showString "VK_FORMAT_R16_USCALED"
+    showsPrec _ VK_FORMAT_R16_SSCALED
+      = showString "VK_FORMAT_R16_SSCALED"
+    showsPrec _ VK_FORMAT_R16_UINT = showString "VK_FORMAT_R16_UINT"
+    showsPrec _ VK_FORMAT_R16_SINT = showString "VK_FORMAT_R16_SINT"
+    showsPrec _ VK_FORMAT_R16_SFLOAT
+      = showString "VK_FORMAT_R16_SFLOAT"
+    showsPrec _ VK_FORMAT_R16G16_UNORM
+      = showString "VK_FORMAT_R16G16_UNORM"
+    showsPrec _ VK_FORMAT_R16G16_SNORM
+      = showString "VK_FORMAT_R16G16_SNORM"
+    showsPrec _ VK_FORMAT_R16G16_USCALED
+      = showString "VK_FORMAT_R16G16_USCALED"
+    showsPrec _ VK_FORMAT_R16G16_SSCALED
+      = showString "VK_FORMAT_R16G16_SSCALED"
+    showsPrec _ VK_FORMAT_R16G16_UINT
+      = showString "VK_FORMAT_R16G16_UINT"
+    showsPrec _ VK_FORMAT_R16G16_SINT
+      = showString "VK_FORMAT_R16G16_SINT"
+    showsPrec _ VK_FORMAT_R16G16_SFLOAT
+      = showString "VK_FORMAT_R16G16_SFLOAT"
+    showsPrec _ VK_FORMAT_R16G16B16_UNORM
+      = showString "VK_FORMAT_R16G16B16_UNORM"
+    showsPrec _ VK_FORMAT_R16G16B16_SNORM
+      = showString "VK_FORMAT_R16G16B16_SNORM"
+    showsPrec _ VK_FORMAT_R16G16B16_USCALED
+      = showString "VK_FORMAT_R16G16B16_USCALED"
+    showsPrec _ VK_FORMAT_R16G16B16_SSCALED
+      = showString "VK_FORMAT_R16G16B16_SSCALED"
+    showsPrec _ VK_FORMAT_R16G16B16_UINT
+      = showString "VK_FORMAT_R16G16B16_UINT"
+    showsPrec _ VK_FORMAT_R16G16B16_SINT
+      = showString "VK_FORMAT_R16G16B16_SINT"
+    showsPrec _ VK_FORMAT_R16G16B16_SFLOAT
+      = showString "VK_FORMAT_R16G16B16_SFLOAT"
+    showsPrec _ VK_FORMAT_R16G16B16A16_UNORM
+      = showString "VK_FORMAT_R16G16B16A16_UNORM"
+    showsPrec _ VK_FORMAT_R16G16B16A16_SNORM
+      = showString "VK_FORMAT_R16G16B16A16_SNORM"
+    showsPrec _ VK_FORMAT_R16G16B16A16_USCALED
+      = showString "VK_FORMAT_R16G16B16A16_USCALED"
+    showsPrec _ VK_FORMAT_R16G16B16A16_SSCALED
+      = showString "VK_FORMAT_R16G16B16A16_SSCALED"
+    showsPrec _ VK_FORMAT_R16G16B16A16_UINT
+      = showString "VK_FORMAT_R16G16B16A16_UINT"
+    showsPrec _ VK_FORMAT_R16G16B16A16_SINT
+      = showString "VK_FORMAT_R16G16B16A16_SINT"
+    showsPrec _ VK_FORMAT_R16G16B16A16_SFLOAT
+      = showString "VK_FORMAT_R16G16B16A16_SFLOAT"
+    showsPrec _ VK_FORMAT_R32_UINT = showString "VK_FORMAT_R32_UINT"
+    showsPrec _ VK_FORMAT_R32_SINT = showString "VK_FORMAT_R32_SINT"
+    showsPrec _ VK_FORMAT_R32_SFLOAT
+      = showString "VK_FORMAT_R32_SFLOAT"
+    showsPrec _ VK_FORMAT_R32G32_UINT
+      = showString "VK_FORMAT_R32G32_UINT"
+    showsPrec _ VK_FORMAT_R32G32_SINT
+      = showString "VK_FORMAT_R32G32_SINT"
+    showsPrec _ VK_FORMAT_R32G32_SFLOAT
+      = showString "VK_FORMAT_R32G32_SFLOAT"
+    showsPrec _ VK_FORMAT_R32G32B32_UINT
+      = showString "VK_FORMAT_R32G32B32_UINT"
+    showsPrec _ VK_FORMAT_R32G32B32_SINT
+      = showString "VK_FORMAT_R32G32B32_SINT"
+    showsPrec _ VK_FORMAT_R32G32B32_SFLOAT
+      = showString "VK_FORMAT_R32G32B32_SFLOAT"
+    showsPrec _ VK_FORMAT_R32G32B32A32_UINT
+      = showString "VK_FORMAT_R32G32B32A32_UINT"
+    showsPrec _ VK_FORMAT_R32G32B32A32_SINT
+      = showString "VK_FORMAT_R32G32B32A32_SINT"
+    showsPrec _ VK_FORMAT_R32G32B32A32_SFLOAT
+      = showString "VK_FORMAT_R32G32B32A32_SFLOAT"
+    showsPrec _ VK_FORMAT_R64_UINT = showString "VK_FORMAT_R64_UINT"
+    showsPrec _ VK_FORMAT_R64_SINT = showString "VK_FORMAT_R64_SINT"
+    showsPrec _ VK_FORMAT_R64_SFLOAT
+      = showString "VK_FORMAT_R64_SFLOAT"
+    showsPrec _ VK_FORMAT_R64G64_UINT
+      = showString "VK_FORMAT_R64G64_UINT"
+    showsPrec _ VK_FORMAT_R64G64_SINT
+      = showString "VK_FORMAT_R64G64_SINT"
+    showsPrec _ VK_FORMAT_R64G64_SFLOAT
+      = showString "VK_FORMAT_R64G64_SFLOAT"
+    showsPrec _ VK_FORMAT_R64G64B64_UINT
+      = showString "VK_FORMAT_R64G64B64_UINT"
+    showsPrec _ VK_FORMAT_R64G64B64_SINT
+      = showString "VK_FORMAT_R64G64B64_SINT"
+    showsPrec _ VK_FORMAT_R64G64B64_SFLOAT
+      = showString "VK_FORMAT_R64G64B64_SFLOAT"
+    showsPrec _ VK_FORMAT_R64G64B64A64_UINT
+      = showString "VK_FORMAT_R64G64B64A64_UINT"
+    showsPrec _ VK_FORMAT_R64G64B64A64_SINT
+      = showString "VK_FORMAT_R64G64B64A64_SINT"
+    showsPrec _ VK_FORMAT_R64G64B64A64_SFLOAT
+      = showString "VK_FORMAT_R64G64B64A64_SFLOAT"
+    showsPrec _ VK_FORMAT_B10G11R11_UFLOAT_PACK32
+      = showString "VK_FORMAT_B10G11R11_UFLOAT_PACK32"
+    showsPrec _ VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
+      = showString "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"
+    showsPrec _ VK_FORMAT_D16_UNORM = showString "VK_FORMAT_D16_UNORM"
+    showsPrec _ VK_FORMAT_X8_D24_UNORM_PACK32
+      = showString "VK_FORMAT_X8_D24_UNORM_PACK32"
+    showsPrec _ VK_FORMAT_D32_SFLOAT
+      = showString "VK_FORMAT_D32_SFLOAT"
+    showsPrec _ VK_FORMAT_S8_UINT = showString "VK_FORMAT_S8_UINT"
+    showsPrec _ VK_FORMAT_D16_UNORM_S8_UINT
+      = showString "VK_FORMAT_D16_UNORM_S8_UINT"
+    showsPrec _ VK_FORMAT_D24_UNORM_S8_UINT
+      = showString "VK_FORMAT_D24_UNORM_S8_UINT"
+    showsPrec _ VK_FORMAT_D32_SFLOAT_S8_UINT
+      = showString "VK_FORMAT_D32_SFLOAT_S8_UINT"
+    showsPrec _ VK_FORMAT_BC1_RGB_UNORM_BLOCK
+      = showString "VK_FORMAT_BC1_RGB_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC1_RGB_SRGB_BLOCK
+      = showString "VK_FORMAT_BC1_RGB_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_BC1_RGBA_UNORM_BLOCK
+      = showString "VK_FORMAT_BC1_RGBA_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC1_RGBA_SRGB_BLOCK
+      = showString "VK_FORMAT_BC1_RGBA_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_BC2_UNORM_BLOCK
+      = showString "VK_FORMAT_BC2_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC2_SRGB_BLOCK
+      = showString "VK_FORMAT_BC2_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_BC3_UNORM_BLOCK
+      = showString "VK_FORMAT_BC3_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC3_SRGB_BLOCK
+      = showString "VK_FORMAT_BC3_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_BC4_UNORM_BLOCK
+      = showString "VK_FORMAT_BC4_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC4_SNORM_BLOCK
+      = showString "VK_FORMAT_BC4_SNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC5_UNORM_BLOCK
+      = showString "VK_FORMAT_BC5_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC5_SNORM_BLOCK
+      = showString "VK_FORMAT_BC5_SNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC6H_UFLOAT_BLOCK
+      = showString "VK_FORMAT_BC6H_UFLOAT_BLOCK"
+    showsPrec _ VK_FORMAT_BC6H_SFLOAT_BLOCK
+      = showString "VK_FORMAT_BC6H_SFLOAT_BLOCK"
+    showsPrec _ VK_FORMAT_BC7_UNORM_BLOCK
+      = showString "VK_FORMAT_BC7_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_BC7_SRGB_BLOCK
+      = showString "VK_FORMAT_BC7_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
+      = showString "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
+      = showString "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
+      = showString "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
+      = showString "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
+      = showString "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
+      = showString "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_EAC_R11_UNORM_BLOCK
+      = showString "VK_FORMAT_EAC_R11_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_EAC_R11_SNORM_BLOCK
+      = showString "VK_FORMAT_EAC_R11_SNORM_BLOCK"
+    showsPrec _ VK_FORMAT_EAC_R11G11_UNORM_BLOCK
+      = showString "VK_FORMAT_EAC_R11G11_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_EAC_R11G11_SNORM_BLOCK
+      = showString "VK_FORMAT_EAC_R11G11_SNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_4x4_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_4x4_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_5x4_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_5x4_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_5x5_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_5x5_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_6x5_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_6x5_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_6x6_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_6x6_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_8x5_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_8x5_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_8x5_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_8x5_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_8x6_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_8x6_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_8x6_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_8x6_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_8x8_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_8x8_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_8x8_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_8x8_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_10x5_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_10x5_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_10x6_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_10x6_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_10x8_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_10x8_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_10x10_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_10x10_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_12x10_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_12x10_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_12x12_UNORM_BLOCK
+      = showString "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"
+    showsPrec _ VK_FORMAT_ASTC_12x12_SRGB_BLOCK
+      = showString "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"
+    showsPrec p (VkFormat x)
+      = showParen (p >= 11) (showString "VkFormat " . showsPrec 11 x)
+
+instance Read VkFormat where
+    readPrec
+      = parens
+          (choose
+             [("VK_FORMAT_UNDEFINED", pure VK_FORMAT_UNDEFINED),
+              ("VK_FORMAT_R4G4_UNORM_PACK8", pure VK_FORMAT_R4G4_UNORM_PACK8),
+              ("VK_FORMAT_R4G4B4A4_UNORM_PACK16",
+               pure VK_FORMAT_R4G4B4A4_UNORM_PACK16),
+              ("VK_FORMAT_B4G4R4A4_UNORM_PACK16",
+               pure VK_FORMAT_B4G4R4A4_UNORM_PACK16),
+              ("VK_FORMAT_R5G6B5_UNORM_PACK16",
+               pure VK_FORMAT_R5G6B5_UNORM_PACK16),
+              ("VK_FORMAT_B5G6R5_UNORM_PACK16",
+               pure VK_FORMAT_B5G6R5_UNORM_PACK16),
+              ("VK_FORMAT_R5G5B5A1_UNORM_PACK16",
+               pure VK_FORMAT_R5G5B5A1_UNORM_PACK16),
+              ("VK_FORMAT_B5G5R5A1_UNORM_PACK16",
+               pure VK_FORMAT_B5G5R5A1_UNORM_PACK16),
+              ("VK_FORMAT_A1R5G5B5_UNORM_PACK16",
+               pure VK_FORMAT_A1R5G5B5_UNORM_PACK16),
+              ("VK_FORMAT_R8_UNORM", pure VK_FORMAT_R8_UNORM),
+              ("VK_FORMAT_R8_SNORM", pure VK_FORMAT_R8_SNORM),
+              ("VK_FORMAT_R8_USCALED", pure VK_FORMAT_R8_USCALED),
+              ("VK_FORMAT_R8_SSCALED", pure VK_FORMAT_R8_SSCALED),
+              ("VK_FORMAT_R8_UINT", pure VK_FORMAT_R8_UINT),
+              ("VK_FORMAT_R8_SINT", pure VK_FORMAT_R8_SINT),
+              ("VK_FORMAT_R8_SRGB", pure VK_FORMAT_R8_SRGB),
+              ("VK_FORMAT_R8G8_UNORM", pure VK_FORMAT_R8G8_UNORM),
+              ("VK_FORMAT_R8G8_SNORM", pure VK_FORMAT_R8G8_SNORM),
+              ("VK_FORMAT_R8G8_USCALED", pure VK_FORMAT_R8G8_USCALED),
+              ("VK_FORMAT_R8G8_SSCALED", pure VK_FORMAT_R8G8_SSCALED),
+              ("VK_FORMAT_R8G8_UINT", pure VK_FORMAT_R8G8_UINT),
+              ("VK_FORMAT_R8G8_SINT", pure VK_FORMAT_R8G8_SINT),
+              ("VK_FORMAT_R8G8_SRGB", pure VK_FORMAT_R8G8_SRGB),
+              ("VK_FORMAT_R8G8B8_UNORM", pure VK_FORMAT_R8G8B8_UNORM),
+              ("VK_FORMAT_R8G8B8_SNORM", pure VK_FORMAT_R8G8B8_SNORM),
+              ("VK_FORMAT_R8G8B8_USCALED", pure VK_FORMAT_R8G8B8_USCALED),
+              ("VK_FORMAT_R8G8B8_SSCALED", pure VK_FORMAT_R8G8B8_SSCALED),
+              ("VK_FORMAT_R8G8B8_UINT", pure VK_FORMAT_R8G8B8_UINT),
+              ("VK_FORMAT_R8G8B8_SINT", pure VK_FORMAT_R8G8B8_SINT),
+              ("VK_FORMAT_R8G8B8_SRGB", pure VK_FORMAT_R8G8B8_SRGB),
+              ("VK_FORMAT_B8G8R8_UNORM", pure VK_FORMAT_B8G8R8_UNORM),
+              ("VK_FORMAT_B8G8R8_SNORM", pure VK_FORMAT_B8G8R8_SNORM),
+              ("VK_FORMAT_B8G8R8_USCALED", pure VK_FORMAT_B8G8R8_USCALED),
+              ("VK_FORMAT_B8G8R8_SSCALED", pure VK_FORMAT_B8G8R8_SSCALED),
+              ("VK_FORMAT_B8G8R8_UINT", pure VK_FORMAT_B8G8R8_UINT),
+              ("VK_FORMAT_B8G8R8_SINT", pure VK_FORMAT_B8G8R8_SINT),
+              ("VK_FORMAT_B8G8R8_SRGB", pure VK_FORMAT_B8G8R8_SRGB),
+              ("VK_FORMAT_R8G8B8A8_UNORM", pure VK_FORMAT_R8G8B8A8_UNORM),
+              ("VK_FORMAT_R8G8B8A8_SNORM", pure VK_FORMAT_R8G8B8A8_SNORM),
+              ("VK_FORMAT_R8G8B8A8_USCALED", pure VK_FORMAT_R8G8B8A8_USCALED),
+              ("VK_FORMAT_R8G8B8A8_SSCALED", pure VK_FORMAT_R8G8B8A8_SSCALED),
+              ("VK_FORMAT_R8G8B8A8_UINT", pure VK_FORMAT_R8G8B8A8_UINT),
+              ("VK_FORMAT_R8G8B8A8_SINT", pure VK_FORMAT_R8G8B8A8_SINT),
+              ("VK_FORMAT_R8G8B8A8_SRGB", pure VK_FORMAT_R8G8B8A8_SRGB),
+              ("VK_FORMAT_B8G8R8A8_UNORM", pure VK_FORMAT_B8G8R8A8_UNORM),
+              ("VK_FORMAT_B8G8R8A8_SNORM", pure VK_FORMAT_B8G8R8A8_SNORM),
+              ("VK_FORMAT_B8G8R8A8_USCALED", pure VK_FORMAT_B8G8R8A8_USCALED),
+              ("VK_FORMAT_B8G8R8A8_SSCALED", pure VK_FORMAT_B8G8R8A8_SSCALED),
+              ("VK_FORMAT_B8G8R8A8_UINT", pure VK_FORMAT_B8G8R8A8_UINT),
+              ("VK_FORMAT_B8G8R8A8_SINT", pure VK_FORMAT_B8G8R8A8_SINT),
+              ("VK_FORMAT_B8G8R8A8_SRGB", pure VK_FORMAT_B8G8R8A8_SRGB),
+              ("VK_FORMAT_A8B8G8R8_UNORM_PACK32",
+               pure VK_FORMAT_A8B8G8R8_UNORM_PACK32),
+              ("VK_FORMAT_A8B8G8R8_SNORM_PACK32",
+               pure VK_FORMAT_A8B8G8R8_SNORM_PACK32),
+              ("VK_FORMAT_A8B8G8R8_USCALED_PACK32",
+               pure VK_FORMAT_A8B8G8R8_USCALED_PACK32),
+              ("VK_FORMAT_A8B8G8R8_SSCALED_PACK32",
+               pure VK_FORMAT_A8B8G8R8_SSCALED_PACK32),
+              ("VK_FORMAT_A8B8G8R8_UINT_PACK32",
+               pure VK_FORMAT_A8B8G8R8_UINT_PACK32),
+              ("VK_FORMAT_A8B8G8R8_SINT_PACK32",
+               pure VK_FORMAT_A8B8G8R8_SINT_PACK32),
+              ("VK_FORMAT_A8B8G8R8_SRGB_PACK32",
+               pure VK_FORMAT_A8B8G8R8_SRGB_PACK32),
+              ("VK_FORMAT_A2R10G10B10_UNORM_PACK32",
+               pure VK_FORMAT_A2R10G10B10_UNORM_PACK32),
+              ("VK_FORMAT_A2R10G10B10_SNORM_PACK32",
+               pure VK_FORMAT_A2R10G10B10_SNORM_PACK32),
+              ("VK_FORMAT_A2R10G10B10_USCALED_PACK32",
+               pure VK_FORMAT_A2R10G10B10_USCALED_PACK32),
+              ("VK_FORMAT_A2R10G10B10_SSCALED_PACK32",
+               pure VK_FORMAT_A2R10G10B10_SSCALED_PACK32),
+              ("VK_FORMAT_A2R10G10B10_UINT_PACK32",
+               pure VK_FORMAT_A2R10G10B10_UINT_PACK32),
+              ("VK_FORMAT_A2R10G10B10_SINT_PACK32",
+               pure VK_FORMAT_A2R10G10B10_SINT_PACK32),
+              ("VK_FORMAT_A2B10G10R10_UNORM_PACK32",
+               pure VK_FORMAT_A2B10G10R10_UNORM_PACK32),
+              ("VK_FORMAT_A2B10G10R10_SNORM_PACK32",
+               pure VK_FORMAT_A2B10G10R10_SNORM_PACK32),
+              ("VK_FORMAT_A2B10G10R10_USCALED_PACK32",
+               pure VK_FORMAT_A2B10G10R10_USCALED_PACK32),
+              ("VK_FORMAT_A2B10G10R10_SSCALED_PACK32",
+               pure VK_FORMAT_A2B10G10R10_SSCALED_PACK32),
+              ("VK_FORMAT_A2B10G10R10_UINT_PACK32",
+               pure VK_FORMAT_A2B10G10R10_UINT_PACK32),
+              ("VK_FORMAT_A2B10G10R10_SINT_PACK32",
+               pure VK_FORMAT_A2B10G10R10_SINT_PACK32),
+              ("VK_FORMAT_R16_UNORM", pure VK_FORMAT_R16_UNORM),
+              ("VK_FORMAT_R16_SNORM", pure VK_FORMAT_R16_SNORM),
+              ("VK_FORMAT_R16_USCALED", pure VK_FORMAT_R16_USCALED),
+              ("VK_FORMAT_R16_SSCALED", pure VK_FORMAT_R16_SSCALED),
+              ("VK_FORMAT_R16_UINT", pure VK_FORMAT_R16_UINT),
+              ("VK_FORMAT_R16_SINT", pure VK_FORMAT_R16_SINT),
+              ("VK_FORMAT_R16_SFLOAT", pure VK_FORMAT_R16_SFLOAT),
+              ("VK_FORMAT_R16G16_UNORM", pure VK_FORMAT_R16G16_UNORM),
+              ("VK_FORMAT_R16G16_SNORM", pure VK_FORMAT_R16G16_SNORM),
+              ("VK_FORMAT_R16G16_USCALED", pure VK_FORMAT_R16G16_USCALED),
+              ("VK_FORMAT_R16G16_SSCALED", pure VK_FORMAT_R16G16_SSCALED),
+              ("VK_FORMAT_R16G16_UINT", pure VK_FORMAT_R16G16_UINT),
+              ("VK_FORMAT_R16G16_SINT", pure VK_FORMAT_R16G16_SINT),
+              ("VK_FORMAT_R16G16_SFLOAT", pure VK_FORMAT_R16G16_SFLOAT),
+              ("VK_FORMAT_R16G16B16_UNORM", pure VK_FORMAT_R16G16B16_UNORM),
+              ("VK_FORMAT_R16G16B16_SNORM", pure VK_FORMAT_R16G16B16_SNORM),
+              ("VK_FORMAT_R16G16B16_USCALED", pure VK_FORMAT_R16G16B16_USCALED),
+              ("VK_FORMAT_R16G16B16_SSCALED", pure VK_FORMAT_R16G16B16_SSCALED),
+              ("VK_FORMAT_R16G16B16_UINT", pure VK_FORMAT_R16G16B16_UINT),
+              ("VK_FORMAT_R16G16B16_SINT", pure VK_FORMAT_R16G16B16_SINT),
+              ("VK_FORMAT_R16G16B16_SFLOAT", pure VK_FORMAT_R16G16B16_SFLOAT),
+              ("VK_FORMAT_R16G16B16A16_UNORM",
+               pure VK_FORMAT_R16G16B16A16_UNORM),
+              ("VK_FORMAT_R16G16B16A16_SNORM",
+               pure VK_FORMAT_R16G16B16A16_SNORM),
+              ("VK_FORMAT_R16G16B16A16_USCALED",
+               pure VK_FORMAT_R16G16B16A16_USCALED),
+              ("VK_FORMAT_R16G16B16A16_SSCALED",
+               pure VK_FORMAT_R16G16B16A16_SSCALED),
+              ("VK_FORMAT_R16G16B16A16_UINT", pure VK_FORMAT_R16G16B16A16_UINT),
+              ("VK_FORMAT_R16G16B16A16_SINT", pure VK_FORMAT_R16G16B16A16_SINT),
+              ("VK_FORMAT_R16G16B16A16_SFLOAT",
+               pure VK_FORMAT_R16G16B16A16_SFLOAT),
+              ("VK_FORMAT_R32_UINT", pure VK_FORMAT_R32_UINT),
+              ("VK_FORMAT_R32_SINT", pure VK_FORMAT_R32_SINT),
+              ("VK_FORMAT_R32_SFLOAT", pure VK_FORMAT_R32_SFLOAT),
+              ("VK_FORMAT_R32G32_UINT", pure VK_FORMAT_R32G32_UINT),
+              ("VK_FORMAT_R32G32_SINT", pure VK_FORMAT_R32G32_SINT),
+              ("VK_FORMAT_R32G32_SFLOAT", pure VK_FORMAT_R32G32_SFLOAT),
+              ("VK_FORMAT_R32G32B32_UINT", pure VK_FORMAT_R32G32B32_UINT),
+              ("VK_FORMAT_R32G32B32_SINT", pure VK_FORMAT_R32G32B32_SINT),
+              ("VK_FORMAT_R32G32B32_SFLOAT", pure VK_FORMAT_R32G32B32_SFLOAT),
+              ("VK_FORMAT_R32G32B32A32_UINT", pure VK_FORMAT_R32G32B32A32_UINT),
+              ("VK_FORMAT_R32G32B32A32_SINT", pure VK_FORMAT_R32G32B32A32_SINT),
+              ("VK_FORMAT_R32G32B32A32_SFLOAT",
+               pure VK_FORMAT_R32G32B32A32_SFLOAT),
+              ("VK_FORMAT_R64_UINT", pure VK_FORMAT_R64_UINT),
+              ("VK_FORMAT_R64_SINT", pure VK_FORMAT_R64_SINT),
+              ("VK_FORMAT_R64_SFLOAT", pure VK_FORMAT_R64_SFLOAT),
+              ("VK_FORMAT_R64G64_UINT", pure VK_FORMAT_R64G64_UINT),
+              ("VK_FORMAT_R64G64_SINT", pure VK_FORMAT_R64G64_SINT),
+              ("VK_FORMAT_R64G64_SFLOAT", pure VK_FORMAT_R64G64_SFLOAT),
+              ("VK_FORMAT_R64G64B64_UINT", pure VK_FORMAT_R64G64B64_UINT),
+              ("VK_FORMAT_R64G64B64_SINT", pure VK_FORMAT_R64G64B64_SINT),
+              ("VK_FORMAT_R64G64B64_SFLOAT", pure VK_FORMAT_R64G64B64_SFLOAT),
+              ("VK_FORMAT_R64G64B64A64_UINT", pure VK_FORMAT_R64G64B64A64_UINT),
+              ("VK_FORMAT_R64G64B64A64_SINT", pure VK_FORMAT_R64G64B64A64_SINT),
+              ("VK_FORMAT_R64G64B64A64_SFLOAT",
+               pure VK_FORMAT_R64G64B64A64_SFLOAT),
+              ("VK_FORMAT_B10G11R11_UFLOAT_PACK32",
+               pure VK_FORMAT_B10G11R11_UFLOAT_PACK32),
+              ("VK_FORMAT_E5B9G9R9_UFLOAT_PACK32",
+               pure VK_FORMAT_E5B9G9R9_UFLOAT_PACK32),
+              ("VK_FORMAT_D16_UNORM", pure VK_FORMAT_D16_UNORM),
+              ("VK_FORMAT_X8_D24_UNORM_PACK32",
+               pure VK_FORMAT_X8_D24_UNORM_PACK32),
+              ("VK_FORMAT_D32_SFLOAT", pure VK_FORMAT_D32_SFLOAT),
+              ("VK_FORMAT_S8_UINT", pure VK_FORMAT_S8_UINT),
+              ("VK_FORMAT_D16_UNORM_S8_UINT", pure VK_FORMAT_D16_UNORM_S8_UINT),
+              ("VK_FORMAT_D24_UNORM_S8_UINT", pure VK_FORMAT_D24_UNORM_S8_UINT),
+              ("VK_FORMAT_D32_SFLOAT_S8_UINT",
+               pure VK_FORMAT_D32_SFLOAT_S8_UINT),
+              ("VK_FORMAT_BC1_RGB_UNORM_BLOCK",
+               pure VK_FORMAT_BC1_RGB_UNORM_BLOCK),
+              ("VK_FORMAT_BC1_RGB_SRGB_BLOCK",
+               pure VK_FORMAT_BC1_RGB_SRGB_BLOCK),
+              ("VK_FORMAT_BC1_RGBA_UNORM_BLOCK",
+               pure VK_FORMAT_BC1_RGBA_UNORM_BLOCK),
+              ("VK_FORMAT_BC1_RGBA_SRGB_BLOCK",
+               pure VK_FORMAT_BC1_RGBA_SRGB_BLOCK),
+              ("VK_FORMAT_BC2_UNORM_BLOCK", pure VK_FORMAT_BC2_UNORM_BLOCK),
+              ("VK_FORMAT_BC2_SRGB_BLOCK", pure VK_FORMAT_BC2_SRGB_BLOCK),
+              ("VK_FORMAT_BC3_UNORM_BLOCK", pure VK_FORMAT_BC3_UNORM_BLOCK),
+              ("VK_FORMAT_BC3_SRGB_BLOCK", pure VK_FORMAT_BC3_SRGB_BLOCK),
+              ("VK_FORMAT_BC4_UNORM_BLOCK", pure VK_FORMAT_BC4_UNORM_BLOCK),
+              ("VK_FORMAT_BC4_SNORM_BLOCK", pure VK_FORMAT_BC4_SNORM_BLOCK),
+              ("VK_FORMAT_BC5_UNORM_BLOCK", pure VK_FORMAT_BC5_UNORM_BLOCK),
+              ("VK_FORMAT_BC5_SNORM_BLOCK", pure VK_FORMAT_BC5_SNORM_BLOCK),
+              ("VK_FORMAT_BC6H_UFLOAT_BLOCK", pure VK_FORMAT_BC6H_UFLOAT_BLOCK),
+              ("VK_FORMAT_BC6H_SFLOAT_BLOCK", pure VK_FORMAT_BC6H_SFLOAT_BLOCK),
+              ("VK_FORMAT_BC7_UNORM_BLOCK", pure VK_FORMAT_BC7_UNORM_BLOCK),
+              ("VK_FORMAT_BC7_SRGB_BLOCK", pure VK_FORMAT_BC7_SRGB_BLOCK),
+              ("VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK",
+               pure VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK),
+              ("VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK",
+               pure VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK),
+              ("VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK",
+               pure VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK),
+              ("VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK",
+               pure VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK),
+              ("VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK",
+               pure VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK),
+              ("VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK",
+               pure VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK),
+              ("VK_FORMAT_EAC_R11_UNORM_BLOCK",
+               pure VK_FORMAT_EAC_R11_UNORM_BLOCK),
+              ("VK_FORMAT_EAC_R11_SNORM_BLOCK",
+               pure VK_FORMAT_EAC_R11_SNORM_BLOCK),
+              ("VK_FORMAT_EAC_R11G11_UNORM_BLOCK",
+               pure VK_FORMAT_EAC_R11G11_UNORM_BLOCK),
+              ("VK_FORMAT_EAC_R11G11_SNORM_BLOCK",
+               pure VK_FORMAT_EAC_R11G11_SNORM_BLOCK),
+              ("VK_FORMAT_ASTC_4x4_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_4x4_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_4x4_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_4x4_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_5x4_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_5x4_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_5x4_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_5x4_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_5x5_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_5x5_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_5x5_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_5x5_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_6x5_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_6x5_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_6x5_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_6x5_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_6x6_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_6x6_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_6x6_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_6x6_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_8x5_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_8x5_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_8x5_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_8x5_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_8x6_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_8x6_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_8x6_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_8x6_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_8x8_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_8x8_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_8x8_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_8x8_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_10x5_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_10x5_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_10x5_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_10x5_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_10x6_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_10x6_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_10x6_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_10x6_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_10x8_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_10x8_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_10x8_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_10x8_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_10x10_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_10x10_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_10x10_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_10x10_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_12x10_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_12x10_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_12x10_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_12x10_SRGB_BLOCK),
+              ("VK_FORMAT_ASTC_12x12_UNORM_BLOCK",
+               pure VK_FORMAT_ASTC_12x12_UNORM_BLOCK),
+              ("VK_FORMAT_ASTC_12x12_SRGB_BLOCK",
+               pure VK_FORMAT_ASTC_12x12_SRGB_BLOCK)]
+             +++
+             prec 10
+               (expectP (Ident "VkFormat") >> (VkFormat <$> step readPrec)))
+
+pattern VK_FORMAT_UNDEFINED :: VkFormat
+
+pattern VK_FORMAT_UNDEFINED = VkFormat 0
+
+pattern VK_FORMAT_R4G4_UNORM_PACK8 :: VkFormat
+
+pattern VK_FORMAT_R4G4_UNORM_PACK8 = VkFormat 1
+
+pattern VK_FORMAT_R4G4B4A4_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R4G4B4A4_UNORM_PACK16 = VkFormat 2
+
+pattern VK_FORMAT_B4G4R4A4_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_B4G4R4A4_UNORM_PACK16 = VkFormat 3
+
+pattern VK_FORMAT_R5G6B5_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R5G6B5_UNORM_PACK16 = VkFormat 4
+
+pattern VK_FORMAT_B5G6R5_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_B5G6R5_UNORM_PACK16 = VkFormat 5
+
+pattern VK_FORMAT_R5G5B5A1_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_R5G5B5A1_UNORM_PACK16 = VkFormat 6
+
+pattern VK_FORMAT_B5G5R5A1_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_B5G5R5A1_UNORM_PACK16 = VkFormat 7
+
+pattern VK_FORMAT_A1R5G5B5_UNORM_PACK16 :: VkFormat
+
+pattern VK_FORMAT_A1R5G5B5_UNORM_PACK16 = VkFormat 8
+
+pattern VK_FORMAT_R8_UNORM :: VkFormat
+
+pattern VK_FORMAT_R8_UNORM = VkFormat 9
+
+pattern VK_FORMAT_R8_SNORM :: VkFormat
+
+pattern VK_FORMAT_R8_SNORM = VkFormat 10
+
+pattern VK_FORMAT_R8_USCALED :: VkFormat
+
+pattern VK_FORMAT_R8_USCALED = VkFormat 11
+
+pattern VK_FORMAT_R8_SSCALED :: VkFormat
+
+pattern VK_FORMAT_R8_SSCALED = VkFormat 12
+
+pattern VK_FORMAT_R8_UINT :: VkFormat
+
+pattern VK_FORMAT_R8_UINT = VkFormat 13
+
+pattern VK_FORMAT_R8_SINT :: VkFormat
+
+pattern VK_FORMAT_R8_SINT = VkFormat 14
+
+pattern VK_FORMAT_R8_SRGB :: VkFormat
+
+pattern VK_FORMAT_R8_SRGB = VkFormat 15
+
+pattern VK_FORMAT_R8G8_UNORM :: VkFormat
+
+pattern VK_FORMAT_R8G8_UNORM = VkFormat 16
+
+pattern VK_FORMAT_R8G8_SNORM :: VkFormat
+
+pattern VK_FORMAT_R8G8_SNORM = VkFormat 17
+
+pattern VK_FORMAT_R8G8_USCALED :: VkFormat
+
+pattern VK_FORMAT_R8G8_USCALED = VkFormat 18
+
+pattern VK_FORMAT_R8G8_SSCALED :: VkFormat
+
+pattern VK_FORMAT_R8G8_SSCALED = VkFormat 19
+
+pattern VK_FORMAT_R8G8_UINT :: VkFormat
+
+pattern VK_FORMAT_R8G8_UINT = VkFormat 20
+
+pattern VK_FORMAT_R8G8_SINT :: VkFormat
+
+pattern VK_FORMAT_R8G8_SINT = VkFormat 21
+
+pattern VK_FORMAT_R8G8_SRGB :: VkFormat
+
+pattern VK_FORMAT_R8G8_SRGB = VkFormat 22
+
+pattern VK_FORMAT_R8G8B8_UNORM :: VkFormat
+
+pattern VK_FORMAT_R8G8B8_UNORM = VkFormat 23
+
+pattern VK_FORMAT_R8G8B8_SNORM :: VkFormat
+
+pattern VK_FORMAT_R8G8B8_SNORM = VkFormat 24
+
+pattern VK_FORMAT_R8G8B8_USCALED :: VkFormat
+
+pattern VK_FORMAT_R8G8B8_USCALED = VkFormat 25
+
+pattern VK_FORMAT_R8G8B8_SSCALED :: VkFormat
+
+pattern VK_FORMAT_R8G8B8_SSCALED = VkFormat 26
+
+pattern VK_FORMAT_R8G8B8_UINT :: VkFormat
+
+pattern VK_FORMAT_R8G8B8_UINT = VkFormat 27
+
+pattern VK_FORMAT_R8G8B8_SINT :: VkFormat
+
+pattern VK_FORMAT_R8G8B8_SINT = VkFormat 28
+
+pattern VK_FORMAT_R8G8B8_SRGB :: VkFormat
+
+pattern VK_FORMAT_R8G8B8_SRGB = VkFormat 29
+
+pattern VK_FORMAT_B8G8R8_UNORM :: VkFormat
+
+pattern VK_FORMAT_B8G8R8_UNORM = VkFormat 30
+
+pattern VK_FORMAT_B8G8R8_SNORM :: VkFormat
+
+pattern VK_FORMAT_B8G8R8_SNORM = VkFormat 31
+
+pattern VK_FORMAT_B8G8R8_USCALED :: VkFormat
+
+pattern VK_FORMAT_B8G8R8_USCALED = VkFormat 32
+
+pattern VK_FORMAT_B8G8R8_SSCALED :: VkFormat
+
+pattern VK_FORMAT_B8G8R8_SSCALED = VkFormat 33
+
+pattern VK_FORMAT_B8G8R8_UINT :: VkFormat
+
+pattern VK_FORMAT_B8G8R8_UINT = VkFormat 34
+
+pattern VK_FORMAT_B8G8R8_SINT :: VkFormat
+
+pattern VK_FORMAT_B8G8R8_SINT = VkFormat 35
+
+pattern VK_FORMAT_B8G8R8_SRGB :: VkFormat
+
+pattern VK_FORMAT_B8G8R8_SRGB = VkFormat 36
+
+pattern VK_FORMAT_R8G8B8A8_UNORM :: VkFormat
+
+pattern VK_FORMAT_R8G8B8A8_UNORM = VkFormat 37
+
+pattern VK_FORMAT_R8G8B8A8_SNORM :: VkFormat
+
+pattern VK_FORMAT_R8G8B8A8_SNORM = VkFormat 38
+
+pattern VK_FORMAT_R8G8B8A8_USCALED :: VkFormat
+
+pattern VK_FORMAT_R8G8B8A8_USCALED = VkFormat 39
+
+pattern VK_FORMAT_R8G8B8A8_SSCALED :: VkFormat
+
+pattern VK_FORMAT_R8G8B8A8_SSCALED = VkFormat 40
+
+pattern VK_FORMAT_R8G8B8A8_UINT :: VkFormat
+
+pattern VK_FORMAT_R8G8B8A8_UINT = VkFormat 41
+
+pattern VK_FORMAT_R8G8B8A8_SINT :: VkFormat
+
+pattern VK_FORMAT_R8G8B8A8_SINT = VkFormat 42
+
+pattern VK_FORMAT_R8G8B8A8_SRGB :: VkFormat
+
+pattern VK_FORMAT_R8G8B8A8_SRGB = VkFormat 43
+
+pattern VK_FORMAT_B8G8R8A8_UNORM :: VkFormat
+
+pattern VK_FORMAT_B8G8R8A8_UNORM = VkFormat 44
+
+pattern VK_FORMAT_B8G8R8A8_SNORM :: VkFormat
+
+pattern VK_FORMAT_B8G8R8A8_SNORM = VkFormat 45
+
+pattern VK_FORMAT_B8G8R8A8_USCALED :: VkFormat
+
+pattern VK_FORMAT_B8G8R8A8_USCALED = VkFormat 46
+
+pattern VK_FORMAT_B8G8R8A8_SSCALED :: VkFormat
+
+pattern VK_FORMAT_B8G8R8A8_SSCALED = VkFormat 47
+
+pattern VK_FORMAT_B8G8R8A8_UINT :: VkFormat
+
+pattern VK_FORMAT_B8G8R8A8_UINT = VkFormat 48
+
+pattern VK_FORMAT_B8G8R8A8_SINT :: VkFormat
+
+pattern VK_FORMAT_B8G8R8A8_SINT = VkFormat 49
+
+pattern VK_FORMAT_B8G8R8A8_SRGB :: VkFormat
+
+pattern VK_FORMAT_B8G8R8A8_SRGB = VkFormat 50
+
+pattern VK_FORMAT_A8B8G8R8_UNORM_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A8B8G8R8_UNORM_PACK32 = VkFormat 51
+
+pattern VK_FORMAT_A8B8G8R8_SNORM_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A8B8G8R8_SNORM_PACK32 = VkFormat 52
+
+pattern VK_FORMAT_A8B8G8R8_USCALED_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A8B8G8R8_USCALED_PACK32 = VkFormat 53
+
+pattern VK_FORMAT_A8B8G8R8_SSCALED_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = VkFormat 54
+
+pattern VK_FORMAT_A8B8G8R8_UINT_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A8B8G8R8_UINT_PACK32 = VkFormat 55
+
+pattern VK_FORMAT_A8B8G8R8_SINT_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A8B8G8R8_SINT_PACK32 = VkFormat 56
+
+pattern VK_FORMAT_A8B8G8R8_SRGB_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A8B8G8R8_SRGB_PACK32 = VkFormat 57
+
+pattern VK_FORMAT_A2R10G10B10_UNORM_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2R10G10B10_UNORM_PACK32 = VkFormat 58
+
+pattern VK_FORMAT_A2R10G10B10_SNORM_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2R10G10B10_SNORM_PACK32 = VkFormat 59
+
+pattern VK_FORMAT_A2R10G10B10_USCALED_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2R10G10B10_USCALED_PACK32 = VkFormat 60
+
+pattern VK_FORMAT_A2R10G10B10_SSCALED_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = VkFormat 61
+
+pattern VK_FORMAT_A2R10G10B10_UINT_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2R10G10B10_UINT_PACK32 = VkFormat 62
+
+pattern VK_FORMAT_A2R10G10B10_SINT_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2R10G10B10_SINT_PACK32 = VkFormat 63
+
+pattern VK_FORMAT_A2B10G10R10_UNORM_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2B10G10R10_UNORM_PACK32 = VkFormat 64
+
+pattern VK_FORMAT_A2B10G10R10_SNORM_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2B10G10R10_SNORM_PACK32 = VkFormat 65
+
+pattern VK_FORMAT_A2B10G10R10_USCALED_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2B10G10R10_USCALED_PACK32 = VkFormat 66
+
+pattern VK_FORMAT_A2B10G10R10_SSCALED_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = VkFormat 67
+
+pattern VK_FORMAT_A2B10G10R10_UINT_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2B10G10R10_UINT_PACK32 = VkFormat 68
+
+pattern VK_FORMAT_A2B10G10R10_SINT_PACK32 :: VkFormat
+
+pattern VK_FORMAT_A2B10G10R10_SINT_PACK32 = VkFormat 69
+
+pattern VK_FORMAT_R16_UNORM :: VkFormat
+
+pattern VK_FORMAT_R16_UNORM = VkFormat 70
+
+pattern VK_FORMAT_R16_SNORM :: VkFormat
+
+pattern VK_FORMAT_R16_SNORM = VkFormat 71
+
+pattern VK_FORMAT_R16_USCALED :: VkFormat
+
+pattern VK_FORMAT_R16_USCALED = VkFormat 72
+
+pattern VK_FORMAT_R16_SSCALED :: VkFormat
+
+pattern VK_FORMAT_R16_SSCALED = VkFormat 73
+
+pattern VK_FORMAT_R16_UINT :: VkFormat
+
+pattern VK_FORMAT_R16_UINT = VkFormat 74
+
+pattern VK_FORMAT_R16_SINT :: VkFormat
+
+pattern VK_FORMAT_R16_SINT = VkFormat 75
+
+pattern VK_FORMAT_R16_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R16_SFLOAT = VkFormat 76
+
+pattern VK_FORMAT_R16G16_UNORM :: VkFormat
+
+pattern VK_FORMAT_R16G16_UNORM = VkFormat 77
+
+pattern VK_FORMAT_R16G16_SNORM :: VkFormat
+
+pattern VK_FORMAT_R16G16_SNORM = VkFormat 78
+
+pattern VK_FORMAT_R16G16_USCALED :: VkFormat
+
+pattern VK_FORMAT_R16G16_USCALED = VkFormat 79
+
+pattern VK_FORMAT_R16G16_SSCALED :: VkFormat
+
+pattern VK_FORMAT_R16G16_SSCALED = VkFormat 80
+
+pattern VK_FORMAT_R16G16_UINT :: VkFormat
+
+pattern VK_FORMAT_R16G16_UINT = VkFormat 81
+
+pattern VK_FORMAT_R16G16_SINT :: VkFormat
+
+pattern VK_FORMAT_R16G16_SINT = VkFormat 82
+
+pattern VK_FORMAT_R16G16_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R16G16_SFLOAT = VkFormat 83
+
+pattern VK_FORMAT_R16G16B16_UNORM :: VkFormat
+
+pattern VK_FORMAT_R16G16B16_UNORM = VkFormat 84
+
+pattern VK_FORMAT_R16G16B16_SNORM :: VkFormat
+
+pattern VK_FORMAT_R16G16B16_SNORM = VkFormat 85
+
+pattern VK_FORMAT_R16G16B16_USCALED :: VkFormat
+
+pattern VK_FORMAT_R16G16B16_USCALED = VkFormat 86
+
+pattern VK_FORMAT_R16G16B16_SSCALED :: VkFormat
+
+pattern VK_FORMAT_R16G16B16_SSCALED = VkFormat 87
+
+pattern VK_FORMAT_R16G16B16_UINT :: VkFormat
+
+pattern VK_FORMAT_R16G16B16_UINT = VkFormat 88
+
+pattern VK_FORMAT_R16G16B16_SINT :: VkFormat
+
+pattern VK_FORMAT_R16G16B16_SINT = VkFormat 89
+
+pattern VK_FORMAT_R16G16B16_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R16G16B16_SFLOAT = VkFormat 90
+
+pattern VK_FORMAT_R16G16B16A16_UNORM :: VkFormat
+
+pattern VK_FORMAT_R16G16B16A16_UNORM = VkFormat 91
+
+pattern VK_FORMAT_R16G16B16A16_SNORM :: VkFormat
+
+pattern VK_FORMAT_R16G16B16A16_SNORM = VkFormat 92
+
+pattern VK_FORMAT_R16G16B16A16_USCALED :: VkFormat
+
+pattern VK_FORMAT_R16G16B16A16_USCALED = VkFormat 93
+
+pattern VK_FORMAT_R16G16B16A16_SSCALED :: VkFormat
+
+pattern VK_FORMAT_R16G16B16A16_SSCALED = VkFormat 94
+
+pattern VK_FORMAT_R16G16B16A16_UINT :: VkFormat
+
+pattern VK_FORMAT_R16G16B16A16_UINT = VkFormat 95
+
+pattern VK_FORMAT_R16G16B16A16_SINT :: VkFormat
+
+pattern VK_FORMAT_R16G16B16A16_SINT = VkFormat 96
+
+pattern VK_FORMAT_R16G16B16A16_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R16G16B16A16_SFLOAT = VkFormat 97
+
+pattern VK_FORMAT_R32_UINT :: VkFormat
+
+pattern VK_FORMAT_R32_UINT = VkFormat 98
+
+pattern VK_FORMAT_R32_SINT :: VkFormat
+
+pattern VK_FORMAT_R32_SINT = VkFormat 99
+
+pattern VK_FORMAT_R32_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R32_SFLOAT = VkFormat 100
+
+pattern VK_FORMAT_R32G32_UINT :: VkFormat
+
+pattern VK_FORMAT_R32G32_UINT = VkFormat 101
+
+pattern VK_FORMAT_R32G32_SINT :: VkFormat
+
+pattern VK_FORMAT_R32G32_SINT = VkFormat 102
+
+pattern VK_FORMAT_R32G32_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R32G32_SFLOAT = VkFormat 103
+
+pattern VK_FORMAT_R32G32B32_UINT :: VkFormat
+
+pattern VK_FORMAT_R32G32B32_UINT = VkFormat 104
+
+pattern VK_FORMAT_R32G32B32_SINT :: VkFormat
+
+pattern VK_FORMAT_R32G32B32_SINT = VkFormat 105
+
+pattern VK_FORMAT_R32G32B32_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R32G32B32_SFLOAT = VkFormat 106
+
+pattern VK_FORMAT_R32G32B32A32_UINT :: VkFormat
+
+pattern VK_FORMAT_R32G32B32A32_UINT = VkFormat 107
+
+pattern VK_FORMAT_R32G32B32A32_SINT :: VkFormat
+
+pattern VK_FORMAT_R32G32B32A32_SINT = VkFormat 108
+
+pattern VK_FORMAT_R32G32B32A32_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R32G32B32A32_SFLOAT = VkFormat 109
+
+pattern VK_FORMAT_R64_UINT :: VkFormat
+
+pattern VK_FORMAT_R64_UINT = VkFormat 110
+
+pattern VK_FORMAT_R64_SINT :: VkFormat
+
+pattern VK_FORMAT_R64_SINT = VkFormat 111
+
+pattern VK_FORMAT_R64_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R64_SFLOAT = VkFormat 112
+
+pattern VK_FORMAT_R64G64_UINT :: VkFormat
+
+pattern VK_FORMAT_R64G64_UINT = VkFormat 113
+
+pattern VK_FORMAT_R64G64_SINT :: VkFormat
+
+pattern VK_FORMAT_R64G64_SINT = VkFormat 114
+
+pattern VK_FORMAT_R64G64_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R64G64_SFLOAT = VkFormat 115
+
+pattern VK_FORMAT_R64G64B64_UINT :: VkFormat
+
+pattern VK_FORMAT_R64G64B64_UINT = VkFormat 116
+
+pattern VK_FORMAT_R64G64B64_SINT :: VkFormat
+
+pattern VK_FORMAT_R64G64B64_SINT = VkFormat 117
+
+pattern VK_FORMAT_R64G64B64_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R64G64B64_SFLOAT = VkFormat 118
+
+pattern VK_FORMAT_R64G64B64A64_UINT :: VkFormat
+
+pattern VK_FORMAT_R64G64B64A64_UINT = VkFormat 119
+
+pattern VK_FORMAT_R64G64B64A64_SINT :: VkFormat
+
+pattern VK_FORMAT_R64G64B64A64_SINT = VkFormat 120
+
+pattern VK_FORMAT_R64G64B64A64_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_R64G64B64A64_SFLOAT = VkFormat 121
+
+pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32 :: VkFormat
+
+pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32 = VkFormat 122
+
+pattern VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 :: VkFormat
+
+pattern VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = VkFormat 123
+
+pattern VK_FORMAT_D16_UNORM :: VkFormat
+
+pattern VK_FORMAT_D16_UNORM = VkFormat 124
+
+pattern VK_FORMAT_X8_D24_UNORM_PACK32 :: VkFormat
+
+pattern VK_FORMAT_X8_D24_UNORM_PACK32 = VkFormat 125
+
+pattern VK_FORMAT_D32_SFLOAT :: VkFormat
+
+pattern VK_FORMAT_D32_SFLOAT = VkFormat 126
+
+pattern VK_FORMAT_S8_UINT :: VkFormat
+
+pattern VK_FORMAT_S8_UINT = VkFormat 127
+
+pattern VK_FORMAT_D16_UNORM_S8_UINT :: VkFormat
+
+pattern VK_FORMAT_D16_UNORM_S8_UINT = VkFormat 128
+
+pattern VK_FORMAT_D24_UNORM_S8_UINT :: VkFormat
+
+pattern VK_FORMAT_D24_UNORM_S8_UINT = VkFormat 129
+
+pattern VK_FORMAT_D32_SFLOAT_S8_UINT :: VkFormat
+
+pattern VK_FORMAT_D32_SFLOAT_S8_UINT = VkFormat 130
+
+pattern VK_FORMAT_BC1_RGB_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC1_RGB_UNORM_BLOCK = VkFormat 131
+
+pattern VK_FORMAT_BC1_RGB_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC1_RGB_SRGB_BLOCK = VkFormat 132
+
+pattern VK_FORMAT_BC1_RGBA_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC1_RGBA_UNORM_BLOCK = VkFormat 133
+
+pattern VK_FORMAT_BC1_RGBA_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC1_RGBA_SRGB_BLOCK = VkFormat 134
+
+pattern VK_FORMAT_BC2_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC2_UNORM_BLOCK = VkFormat 135
+
+pattern VK_FORMAT_BC2_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC2_SRGB_BLOCK = VkFormat 136
+
+pattern VK_FORMAT_BC3_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC3_UNORM_BLOCK = VkFormat 137
+
+pattern VK_FORMAT_BC3_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC3_SRGB_BLOCK = VkFormat 138
+
+pattern VK_FORMAT_BC4_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC4_UNORM_BLOCK = VkFormat 139
+
+pattern VK_FORMAT_BC4_SNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC4_SNORM_BLOCK = VkFormat 140
+
+pattern VK_FORMAT_BC5_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC5_UNORM_BLOCK = VkFormat 141
+
+pattern VK_FORMAT_BC5_SNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC5_SNORM_BLOCK = VkFormat 142
+
+pattern VK_FORMAT_BC6H_UFLOAT_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC6H_UFLOAT_BLOCK = VkFormat 143
+
+pattern VK_FORMAT_BC6H_SFLOAT_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC6H_SFLOAT_BLOCK = VkFormat 144
+
+pattern VK_FORMAT_BC7_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC7_UNORM_BLOCK = VkFormat 145
+
+pattern VK_FORMAT_BC7_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_BC7_SRGB_BLOCK = VkFormat 146
+
+pattern VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = VkFormat 147
+
+pattern VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = VkFormat 148
+
+pattern VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = VkFormat 149
+
+pattern VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = VkFormat 150
+
+pattern VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = VkFormat 151
+
+pattern VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = VkFormat 152
+
+pattern VK_FORMAT_EAC_R11_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_EAC_R11_UNORM_BLOCK = VkFormat 153
+
+pattern VK_FORMAT_EAC_R11_SNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_EAC_R11_SNORM_BLOCK = VkFormat 154
+
+pattern VK_FORMAT_EAC_R11G11_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_EAC_R11G11_UNORM_BLOCK = VkFormat 155
+
+pattern VK_FORMAT_EAC_R11G11_SNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_EAC_R11G11_SNORM_BLOCK = VkFormat 156
+
+pattern VK_FORMAT_ASTC_4x4_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_4x4_UNORM_BLOCK = VkFormat 157
+
+pattern VK_FORMAT_ASTC_4x4_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_4x4_SRGB_BLOCK = VkFormat 158
+
+pattern VK_FORMAT_ASTC_5x4_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_5x4_UNORM_BLOCK = VkFormat 159
+
+pattern VK_FORMAT_ASTC_5x4_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_5x4_SRGB_BLOCK = VkFormat 160
+
+pattern VK_FORMAT_ASTC_5x5_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_5x5_UNORM_BLOCK = VkFormat 161
+
+pattern VK_FORMAT_ASTC_5x5_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_5x5_SRGB_BLOCK = VkFormat 162
+
+pattern VK_FORMAT_ASTC_6x5_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_6x5_UNORM_BLOCK = VkFormat 163
+
+pattern VK_FORMAT_ASTC_6x5_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_6x5_SRGB_BLOCK = VkFormat 164
+
+pattern VK_FORMAT_ASTC_6x6_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_6x6_UNORM_BLOCK = VkFormat 165
+
+pattern VK_FORMAT_ASTC_6x6_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_6x6_SRGB_BLOCK = VkFormat 166
+
+pattern VK_FORMAT_ASTC_8x5_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_8x5_UNORM_BLOCK = VkFormat 167
+
+pattern VK_FORMAT_ASTC_8x5_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_8x5_SRGB_BLOCK = VkFormat 168
+
+pattern VK_FORMAT_ASTC_8x6_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_8x6_UNORM_BLOCK = VkFormat 169
+
+pattern VK_FORMAT_ASTC_8x6_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_8x6_SRGB_BLOCK = VkFormat 170
+
+pattern VK_FORMAT_ASTC_8x8_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_8x8_UNORM_BLOCK = VkFormat 171
+
+pattern VK_FORMAT_ASTC_8x8_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_8x8_SRGB_BLOCK = VkFormat 172
+
+pattern VK_FORMAT_ASTC_10x5_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_10x5_UNORM_BLOCK = VkFormat 173
+
+pattern VK_FORMAT_ASTC_10x5_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_10x5_SRGB_BLOCK = VkFormat 174
+
+pattern VK_FORMAT_ASTC_10x6_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_10x6_UNORM_BLOCK = VkFormat 175
+
+pattern VK_FORMAT_ASTC_10x6_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_10x6_SRGB_BLOCK = VkFormat 176
+
+pattern VK_FORMAT_ASTC_10x8_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_10x8_UNORM_BLOCK = VkFormat 177
+
+pattern VK_FORMAT_ASTC_10x8_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_10x8_SRGB_BLOCK = VkFormat 178
+
+pattern VK_FORMAT_ASTC_10x10_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_10x10_UNORM_BLOCK = VkFormat 179
+
+pattern VK_FORMAT_ASTC_10x10_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_10x10_SRGB_BLOCK = VkFormat 180
+
+pattern VK_FORMAT_ASTC_12x10_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_12x10_UNORM_BLOCK = VkFormat 181
+
+pattern VK_FORMAT_ASTC_12x10_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_12x10_SRGB_BLOCK = VkFormat 182
+
+pattern VK_FORMAT_ASTC_12x12_UNORM_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_12x12_UNORM_BLOCK = VkFormat 183
+
+pattern VK_FORMAT_ASTC_12x12_SRGB_BLOCK :: VkFormat
+
+pattern VK_FORMAT_ASTC_12x12_SRGB_BLOCK = VkFormat 184
+
+newtype VkFormatFeatureBitmask (a ::
+                                  FlagType) = VkFormatFeatureBitmask VkFlags
+                                              deriving (Eq, Ord, Storable)
+
+type VkFormatFeatureFlags = VkFormatFeatureBitmask FlagMask
+
+type VkFormatFeatureFlagBits = VkFormatFeatureBitmask FlagBit
+
+pattern VkFormatFeatureFlagBits ::
+        VkFlags -> VkFormatFeatureBitmask FlagBit
+
+pattern VkFormatFeatureFlagBits n = VkFormatFeatureBitmask n
+
+pattern VkFormatFeatureFlags ::
+        VkFlags -> VkFormatFeatureBitmask FlagMask
+
+pattern VkFormatFeatureFlags n = VkFormatFeatureBitmask n
+
+deriving instance Bits (VkFormatFeatureBitmask FlagMask)
+
+deriving instance FiniteBits (VkFormatFeatureBitmask FlagMask)
+
+instance Show (VkFormatFeatureBitmask a) where
+    showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
+      = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
+      = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
+      = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
+      = showString "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
+      = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
+      = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT
+      = showString "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
+      = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
+      = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
+      = showString "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_BLIT_SRC_BIT
+      = showString "VK_FORMAT_FEATURE_BLIT_SRC_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_BLIT_DST_BIT
+      = showString "VK_FORMAT_FEATURE_BLIT_DST_BIT"
+    showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
+      = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"
+    showsPrec p (VkFormatFeatureBitmask x)
+      = showParen (p >= 11)
+          (showString "VkFormatFeatureBitmask " . showsPrec 11 x)
+
+instance Read (VkFormatFeatureBitmask a) where
+    readPrec
+      = parens
+          (choose
+             [("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT",
+               pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT),
+              ("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT",
+               pure VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT),
+              ("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT",
+               pure VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT),
+              ("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT",
+               pure VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT),
+              ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT",
+               pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT),
+              ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT",
+               pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT),
+              ("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT",
+               pure VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT),
+              ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT",
+               pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT),
+              ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT",
+               pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT),
+              ("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT",
+               pure VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT),
+              ("VK_FORMAT_FEATURE_BLIT_SRC_BIT",
+               pure VK_FORMAT_FEATURE_BLIT_SRC_BIT),
+              ("VK_FORMAT_FEATURE_BLIT_DST_BIT",
+               pure VK_FORMAT_FEATURE_BLIT_DST_BIT),
+              ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT",
+               pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkFormatFeatureBitmask") >>
+                  (VkFormatFeatureBitmask <$> step readPrec)))
 
 -- | Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/FramebufferCreateFlagBits.hs b/src-gen/Graphics/Vulkan/Types/Enum/FramebufferCreateFlagBits.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/FramebufferCreateFlagBits.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/FramebufferCreateFlagBits.hs
@@ -1,25 +1,20 @@
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.FramebufferCreateFlagBits
        (VkFramebufferCreateFlagBits(..)) where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
 newtype VkFramebufferCreateFlagBits = VkFramebufferCreateFlagBits VkFlags
-                                        deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                  FiniteBits, Storable, Real, Data, Generic)
+                                      deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkFramebufferCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkFramebufferCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkFramebufferCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/FrontFace.hs b/src-gen/Graphics/Vulkan/Types/Enum/FrontFace.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/FrontFace.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/FrontFace.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -9,9 +7,7 @@
        (VkFrontFace(VkFrontFace, VK_FRONT_FACE_COUNTER_CLOCKWISE,
                     VK_FRONT_FACE_CLOCKWISE))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -22,26 +18,26 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFrontFace VkFrontFace registry at www.khronos.org>
 newtype VkFrontFace = VkFrontFace Int32
-                        deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                      deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkFrontFace where
-        showsPrec _ VK_FRONT_FACE_COUNTER_CLOCKWISE
-          = showString "VK_FRONT_FACE_COUNTER_CLOCKWISE"
-        showsPrec _ VK_FRONT_FACE_CLOCKWISE
-          = showString "VK_FRONT_FACE_CLOCKWISE"
-        showsPrec p (VkFrontFace x)
-          = showParen (p >= 11) (showString "VkFrontFace " . showsPrec 11 x)
+    showsPrec _ VK_FRONT_FACE_COUNTER_CLOCKWISE
+      = showString "VK_FRONT_FACE_COUNTER_CLOCKWISE"
+    showsPrec _ VK_FRONT_FACE_CLOCKWISE
+      = showString "VK_FRONT_FACE_CLOCKWISE"
+    showsPrec p (VkFrontFace x)
+      = showParen (p >= 11) (showString "VkFrontFace " . showsPrec 11 x)
 
 instance Read VkFrontFace where
-        readPrec
-          = parens
-              (choose
-                 [("VK_FRONT_FACE_COUNTER_CLOCKWISE",
-                   pure VK_FRONT_FACE_COUNTER_CLOCKWISE),
-                  ("VK_FRONT_FACE_CLOCKWISE", pure VK_FRONT_FACE_CLOCKWISE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkFrontFace") >> (VkFrontFace <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_FRONT_FACE_COUNTER_CLOCKWISE",
+               pure VK_FRONT_FACE_COUNTER_CLOCKWISE),
+              ("VK_FRONT_FACE_CLOCKWISE", pure VK_FRONT_FACE_CLOCKWISE)]
+             +++
+             prec 10
+               (expectP (Ident "VkFrontFace") >> (VkFrontFace <$> step readPrec)))
 
 pattern VK_FRONT_FACE_COUNTER_CLOCKWISE :: VkFrontFace
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Image.hs b/src-gen/Graphics/Vulkan/Types/Enum/Image.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Image.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Image.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -48,9 +46,7 @@
                         VK_IMAGE_VIEW_TYPE_2D_ARRAY, VK_IMAGE_VIEW_TYPE_CUBE_ARRAY))
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -60,7 +56,7 @@
 
 newtype VkImageAspectBitmask (a ::
                                 FlagType) = VkImageAspectBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkImageAspectFlags = VkImageAspectBitmask FlagMask
 
@@ -80,42 +76,32 @@
 
 deriving instance FiniteBits (VkImageAspectBitmask FlagMask)
 
-deriving instance Integral (VkImageAspectBitmask FlagMask)
-
-deriving instance Num (VkImageAspectBitmask FlagMask)
-
-deriving instance Bounded (VkImageAspectBitmask FlagMask)
-
-deriving instance Enum (VkImageAspectBitmask FlagMask)
-
-deriving instance Real (VkImageAspectBitmask FlagMask)
-
 instance Show (VkImageAspectBitmask a) where
-        showsPrec _ VK_IMAGE_ASPECT_COLOR_BIT
-          = showString "VK_IMAGE_ASPECT_COLOR_BIT"
-        showsPrec _ VK_IMAGE_ASPECT_DEPTH_BIT
-          = showString "VK_IMAGE_ASPECT_DEPTH_BIT"
-        showsPrec _ VK_IMAGE_ASPECT_STENCIL_BIT
-          = showString "VK_IMAGE_ASPECT_STENCIL_BIT"
-        showsPrec _ VK_IMAGE_ASPECT_METADATA_BIT
-          = showString "VK_IMAGE_ASPECT_METADATA_BIT"
-        showsPrec p (VkImageAspectBitmask x)
-          = showParen (p >= 11)
-              (showString "VkImageAspectBitmask " . showsPrec 11 x)
+    showsPrec _ VK_IMAGE_ASPECT_COLOR_BIT
+      = showString "VK_IMAGE_ASPECT_COLOR_BIT"
+    showsPrec _ VK_IMAGE_ASPECT_DEPTH_BIT
+      = showString "VK_IMAGE_ASPECT_DEPTH_BIT"
+    showsPrec _ VK_IMAGE_ASPECT_STENCIL_BIT
+      = showString "VK_IMAGE_ASPECT_STENCIL_BIT"
+    showsPrec _ VK_IMAGE_ASPECT_METADATA_BIT
+      = showString "VK_IMAGE_ASPECT_METADATA_BIT"
+    showsPrec p (VkImageAspectBitmask x)
+      = showParen (p >= 11)
+          (showString "VkImageAspectBitmask " . showsPrec 11 x)
 
 instance Read (VkImageAspectBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_IMAGE_ASPECT_COLOR_BIT", pure VK_IMAGE_ASPECT_COLOR_BIT),
-                  ("VK_IMAGE_ASPECT_DEPTH_BIT", pure VK_IMAGE_ASPECT_DEPTH_BIT),
-                  ("VK_IMAGE_ASPECT_STENCIL_BIT", pure VK_IMAGE_ASPECT_STENCIL_BIT),
-                  ("VK_IMAGE_ASPECT_METADATA_BIT",
-                   pure VK_IMAGE_ASPECT_METADATA_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkImageAspectBitmask") >>
-                      (VkImageAspectBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_IMAGE_ASPECT_COLOR_BIT", pure VK_IMAGE_ASPECT_COLOR_BIT),
+              ("VK_IMAGE_ASPECT_DEPTH_BIT", pure VK_IMAGE_ASPECT_DEPTH_BIT),
+              ("VK_IMAGE_ASPECT_STENCIL_BIT", pure VK_IMAGE_ASPECT_STENCIL_BIT),
+              ("VK_IMAGE_ASPECT_METADATA_BIT",
+               pure VK_IMAGE_ASPECT_METADATA_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkImageAspectBitmask") >>
+                  (VkImageAspectBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_IMAGE_ASPECT_COLOR_BIT :: VkImageAspectBitmask a
@@ -139,7 +125,7 @@
 
 newtype VkImageCreateBitmask (a ::
                                 FlagType) = VkImageCreateBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkImageCreateFlags = VkImageCreateBitmask FlagMask
 
@@ -159,49 +145,39 @@
 
 deriving instance FiniteBits (VkImageCreateBitmask FlagMask)
 
-deriving instance Integral (VkImageCreateBitmask FlagMask)
-
-deriving instance Num (VkImageCreateBitmask FlagMask)
-
-deriving instance Bounded (VkImageCreateBitmask FlagMask)
-
-deriving instance Enum (VkImageCreateBitmask FlagMask)
-
-deriving instance Real (VkImageCreateBitmask FlagMask)
-
 instance Show (VkImageCreateBitmask a) where
-        showsPrec _ VK_IMAGE_CREATE_SPARSE_BINDING_BIT
-          = showString "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"
-        showsPrec _ VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
-          = showString "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"
-        showsPrec _ VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
-          = showString "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"
-        showsPrec _ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
-          = showString "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"
-        showsPrec _ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
-          = showString "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"
-        showsPrec p (VkImageCreateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkImageCreateBitmask " . showsPrec 11 x)
+    showsPrec _ VK_IMAGE_CREATE_SPARSE_BINDING_BIT
+      = showString "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"
+    showsPrec _ VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
+      = showString "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"
+    showsPrec _ VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
+      = showString "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"
+    showsPrec _ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
+      = showString "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"
+    showsPrec _ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
+      = showString "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"
+    showsPrec p (VkImageCreateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkImageCreateBitmask " . showsPrec 11 x)
 
 instance Read (VkImageCreateBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_IMAGE_CREATE_SPARSE_BINDING_BIT",
-                   pure VK_IMAGE_CREATE_SPARSE_BINDING_BIT),
-                  ("VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT",
-                   pure VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT),
-                  ("VK_IMAGE_CREATE_SPARSE_ALIASED_BIT",
-                   pure VK_IMAGE_CREATE_SPARSE_ALIASED_BIT),
-                  ("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT",
-                   pure VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT),
-                  ("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT",
-                   pure VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkImageCreateBitmask") >>
-                      (VkImageCreateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_IMAGE_CREATE_SPARSE_BINDING_BIT",
+               pure VK_IMAGE_CREATE_SPARSE_BINDING_BIT),
+              ("VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT",
+               pure VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT),
+              ("VK_IMAGE_CREATE_SPARSE_ALIASED_BIT",
+               pure VK_IMAGE_CREATE_SPARSE_ALIASED_BIT),
+              ("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT",
+               pure VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT),
+              ("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT",
+               pure VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkImageCreateBitmask") >>
+                  (VkImageCreateBitmask <$> step readPrec)))
 
 -- | Image should support sparse backing
 --
@@ -249,55 +225,55 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageLayout VkImageLayout registry at www.khronos.org>
 newtype VkImageLayout = VkImageLayout Int32
-                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                        deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkImageLayout where
-        showsPrec _ VK_IMAGE_LAYOUT_UNDEFINED
-          = showString "VK_IMAGE_LAYOUT_UNDEFINED"
-        showsPrec _ VK_IMAGE_LAYOUT_GENERAL
-          = showString "VK_IMAGE_LAYOUT_GENERAL"
-        showsPrec _ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
-          = showString "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"
-        showsPrec _ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
-          = showString "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"
-        showsPrec _ VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
-          = showString "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"
-        showsPrec _ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
-          = showString "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"
-        showsPrec _ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
-          = showString "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"
-        showsPrec _ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
-          = showString "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"
-        showsPrec _ VK_IMAGE_LAYOUT_PREINITIALIZED
-          = showString "VK_IMAGE_LAYOUT_PREINITIALIZED"
-        showsPrec p (VkImageLayout x)
-          = showParen (p >= 11)
-              (showString "VkImageLayout " . showsPrec 11 x)
+    showsPrec _ VK_IMAGE_LAYOUT_UNDEFINED
+      = showString "VK_IMAGE_LAYOUT_UNDEFINED"
+    showsPrec _ VK_IMAGE_LAYOUT_GENERAL
+      = showString "VK_IMAGE_LAYOUT_GENERAL"
+    showsPrec _ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
+      = showString "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"
+    showsPrec _ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
+      = showString "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"
+    showsPrec _ VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
+      = showString "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"
+    showsPrec _ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
+      = showString "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"
+    showsPrec _ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
+      = showString "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"
+    showsPrec _ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
+      = showString "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"
+    showsPrec _ VK_IMAGE_LAYOUT_PREINITIALIZED
+      = showString "VK_IMAGE_LAYOUT_PREINITIALIZED"
+    showsPrec p (VkImageLayout x)
+      = showParen (p >= 11)
+          (showString "VkImageLayout " . showsPrec 11 x)
 
 instance Read VkImageLayout where
-        readPrec
-          = parens
-              (choose
-                 [("VK_IMAGE_LAYOUT_UNDEFINED", pure VK_IMAGE_LAYOUT_UNDEFINED),
-                  ("VK_IMAGE_LAYOUT_GENERAL", pure VK_IMAGE_LAYOUT_GENERAL),
-                  ("VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL",
-                   pure VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL),
-                  ("VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL",
-                   pure VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
-                  ("VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL",
-                   pure VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL),
-                  ("VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL",
-                   pure VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL),
-                  ("VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL",
-                   pure VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL),
-                  ("VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL",
-                   pure VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL),
-                  ("VK_IMAGE_LAYOUT_PREINITIALIZED",
-                   pure VK_IMAGE_LAYOUT_PREINITIALIZED)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkImageLayout") >>
-                      (VkImageLayout <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_IMAGE_LAYOUT_UNDEFINED", pure VK_IMAGE_LAYOUT_UNDEFINED),
+              ("VK_IMAGE_LAYOUT_GENERAL", pure VK_IMAGE_LAYOUT_GENERAL),
+              ("VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL",
+               pure VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL),
+              ("VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL",
+               pure VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL),
+              ("VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL",
+               pure VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL),
+              ("VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL",
+               pure VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL),
+              ("VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL",
+               pure VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL),
+              ("VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL",
+               pure VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL),
+              ("VK_IMAGE_LAYOUT_PREINITIALIZED",
+               pure VK_IMAGE_LAYOUT_PREINITIALIZED)]
+             +++
+             prec 10
+               (expectP (Ident "VkImageLayout") >>
+                  (VkImageLayout <$> step readPrec)))
 
 -- | Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
 pattern VK_IMAGE_LAYOUT_UNDEFINED :: VkImageLayout
@@ -352,27 +328,27 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageTiling VkImageTiling registry at www.khronos.org>
 newtype VkImageTiling = VkImageTiling Int32
-                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                        deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkImageTiling where
-        showsPrec _ VK_IMAGE_TILING_OPTIMAL
-          = showString "VK_IMAGE_TILING_OPTIMAL"
-        showsPrec _ VK_IMAGE_TILING_LINEAR
-          = showString "VK_IMAGE_TILING_LINEAR"
-        showsPrec p (VkImageTiling x)
-          = showParen (p >= 11)
-              (showString "VkImageTiling " . showsPrec 11 x)
+    showsPrec _ VK_IMAGE_TILING_OPTIMAL
+      = showString "VK_IMAGE_TILING_OPTIMAL"
+    showsPrec _ VK_IMAGE_TILING_LINEAR
+      = showString "VK_IMAGE_TILING_LINEAR"
+    showsPrec p (VkImageTiling x)
+      = showParen (p >= 11)
+          (showString "VkImageTiling " . showsPrec 11 x)
 
 instance Read VkImageTiling where
-        readPrec
-          = parens
-              (choose
-                 [("VK_IMAGE_TILING_OPTIMAL", pure VK_IMAGE_TILING_OPTIMAL),
-                  ("VK_IMAGE_TILING_LINEAR", pure VK_IMAGE_TILING_LINEAR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkImageTiling") >>
-                      (VkImageTiling <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_IMAGE_TILING_OPTIMAL", pure VK_IMAGE_TILING_OPTIMAL),
+              ("VK_IMAGE_TILING_LINEAR", pure VK_IMAGE_TILING_LINEAR)]
+             +++
+             prec 10
+               (expectP (Ident "VkImageTiling") >>
+                  (VkImageTiling <$> step readPrec)))
 
 pattern VK_IMAGE_TILING_OPTIMAL :: VkImageTiling
 
@@ -386,25 +362,25 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageType VkImageType registry at www.khronos.org>
 newtype VkImageType = VkImageType Int32
-                        deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                      deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkImageType where
-        showsPrec _ VK_IMAGE_TYPE_1D = showString "VK_IMAGE_TYPE_1D"
-        showsPrec _ VK_IMAGE_TYPE_2D = showString "VK_IMAGE_TYPE_2D"
-        showsPrec _ VK_IMAGE_TYPE_3D = showString "VK_IMAGE_TYPE_3D"
-        showsPrec p (VkImageType x)
-          = showParen (p >= 11) (showString "VkImageType " . showsPrec 11 x)
+    showsPrec _ VK_IMAGE_TYPE_1D = showString "VK_IMAGE_TYPE_1D"
+    showsPrec _ VK_IMAGE_TYPE_2D = showString "VK_IMAGE_TYPE_2D"
+    showsPrec _ VK_IMAGE_TYPE_3D = showString "VK_IMAGE_TYPE_3D"
+    showsPrec p (VkImageType x)
+      = showParen (p >= 11) (showString "VkImageType " . showsPrec 11 x)
 
 instance Read VkImageType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_IMAGE_TYPE_1D", pure VK_IMAGE_TYPE_1D),
-                  ("VK_IMAGE_TYPE_2D", pure VK_IMAGE_TYPE_2D),
-                  ("VK_IMAGE_TYPE_3D", pure VK_IMAGE_TYPE_3D)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkImageType") >> (VkImageType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_IMAGE_TYPE_1D", pure VK_IMAGE_TYPE_1D),
+              ("VK_IMAGE_TYPE_2D", pure VK_IMAGE_TYPE_2D),
+              ("VK_IMAGE_TYPE_3D", pure VK_IMAGE_TYPE_3D)]
+             +++
+             prec 10
+               (expectP (Ident "VkImageType") >> (VkImageType <$> step readPrec)))
 
 pattern VK_IMAGE_TYPE_1D :: VkImageType
 
@@ -420,7 +396,7 @@
 
 newtype VkImageUsageBitmask (a ::
                                FlagType) = VkImageUsageBitmask VkFlags
-                                             deriving (Eq, Ord, Storable, Data, Generic)
+                                           deriving (Eq, Ord, Storable)
 
 type VkImageUsageFlags = VkImageUsageBitmask FlagMask
 
@@ -440,59 +416,49 @@
 
 deriving instance FiniteBits (VkImageUsageBitmask FlagMask)
 
-deriving instance Integral (VkImageUsageBitmask FlagMask)
-
-deriving instance Num (VkImageUsageBitmask FlagMask)
-
-deriving instance Bounded (VkImageUsageBitmask FlagMask)
-
-deriving instance Enum (VkImageUsageBitmask FlagMask)
-
-deriving instance Real (VkImageUsageBitmask FlagMask)
-
 instance Show (VkImageUsageBitmask a) where
-        showsPrec _ VK_IMAGE_USAGE_TRANSFER_SRC_BIT
-          = showString "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"
-        showsPrec _ VK_IMAGE_USAGE_TRANSFER_DST_BIT
-          = showString "VK_IMAGE_USAGE_TRANSFER_DST_BIT"
-        showsPrec _ VK_IMAGE_USAGE_SAMPLED_BIT
-          = showString "VK_IMAGE_USAGE_SAMPLED_BIT"
-        showsPrec _ VK_IMAGE_USAGE_STORAGE_BIT
-          = showString "VK_IMAGE_USAGE_STORAGE_BIT"
-        showsPrec _ VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
-          = showString "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"
-        showsPrec _ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
-          = showString "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"
-        showsPrec _ VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
-          = showString "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"
-        showsPrec _ VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
-          = showString "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"
-        showsPrec p (VkImageUsageBitmask x)
-          = showParen (p >= 11)
-              (showString "VkImageUsageBitmask " . showsPrec 11 x)
+    showsPrec _ VK_IMAGE_USAGE_TRANSFER_SRC_BIT
+      = showString "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"
+    showsPrec _ VK_IMAGE_USAGE_TRANSFER_DST_BIT
+      = showString "VK_IMAGE_USAGE_TRANSFER_DST_BIT"
+    showsPrec _ VK_IMAGE_USAGE_SAMPLED_BIT
+      = showString "VK_IMAGE_USAGE_SAMPLED_BIT"
+    showsPrec _ VK_IMAGE_USAGE_STORAGE_BIT
+      = showString "VK_IMAGE_USAGE_STORAGE_BIT"
+    showsPrec _ VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
+      = showString "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"
+    showsPrec _ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
+      = showString "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"
+    showsPrec _ VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
+      = showString "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"
+    showsPrec _ VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
+      = showString "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"
+    showsPrec p (VkImageUsageBitmask x)
+      = showParen (p >= 11)
+          (showString "VkImageUsageBitmask " . showsPrec 11 x)
 
 instance Read (VkImageUsageBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_IMAGE_USAGE_TRANSFER_SRC_BIT",
-                   pure VK_IMAGE_USAGE_TRANSFER_SRC_BIT),
-                  ("VK_IMAGE_USAGE_TRANSFER_DST_BIT",
-                   pure VK_IMAGE_USAGE_TRANSFER_DST_BIT),
-                  ("VK_IMAGE_USAGE_SAMPLED_BIT", pure VK_IMAGE_USAGE_SAMPLED_BIT),
-                  ("VK_IMAGE_USAGE_STORAGE_BIT", pure VK_IMAGE_USAGE_STORAGE_BIT),
-                  ("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT",
-                   pure VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT),
-                  ("VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT",
-                   pure VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT),
-                  ("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT",
-                   pure VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT),
-                  ("VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT",
-                   pure VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkImageUsageBitmask") >>
-                      (VkImageUsageBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_IMAGE_USAGE_TRANSFER_SRC_BIT",
+               pure VK_IMAGE_USAGE_TRANSFER_SRC_BIT),
+              ("VK_IMAGE_USAGE_TRANSFER_DST_BIT",
+               pure VK_IMAGE_USAGE_TRANSFER_DST_BIT),
+              ("VK_IMAGE_USAGE_SAMPLED_BIT", pure VK_IMAGE_USAGE_SAMPLED_BIT),
+              ("VK_IMAGE_USAGE_STORAGE_BIT", pure VK_IMAGE_USAGE_STORAGE_BIT),
+              ("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT",
+               pure VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT),
+              ("VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT",
+               pure VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT),
+              ("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT",
+               pure VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT),
+              ("VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT",
+               pure VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkImageUsageBitmask") >>
+                  (VkImageUsageBitmask <$> step readPrec)))
 
 -- | Can be used as a source of transfer operations
 --
@@ -562,43 +528,43 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageViewType VkImageViewType registry at www.khronos.org>
 newtype VkImageViewType = VkImageViewType Int32
-                            deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                          deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkImageViewType where
-        showsPrec _ VK_IMAGE_VIEW_TYPE_1D
-          = showString "VK_IMAGE_VIEW_TYPE_1D"
-        showsPrec _ VK_IMAGE_VIEW_TYPE_2D
-          = showString "VK_IMAGE_VIEW_TYPE_2D"
-        showsPrec _ VK_IMAGE_VIEW_TYPE_3D
-          = showString "VK_IMAGE_VIEW_TYPE_3D"
-        showsPrec _ VK_IMAGE_VIEW_TYPE_CUBE
-          = showString "VK_IMAGE_VIEW_TYPE_CUBE"
-        showsPrec _ VK_IMAGE_VIEW_TYPE_1D_ARRAY
-          = showString "VK_IMAGE_VIEW_TYPE_1D_ARRAY"
-        showsPrec _ VK_IMAGE_VIEW_TYPE_2D_ARRAY
-          = showString "VK_IMAGE_VIEW_TYPE_2D_ARRAY"
-        showsPrec _ VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
-          = showString "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"
-        showsPrec p (VkImageViewType x)
-          = showParen (p >= 11)
-              (showString "VkImageViewType " . showsPrec 11 x)
+    showsPrec _ VK_IMAGE_VIEW_TYPE_1D
+      = showString "VK_IMAGE_VIEW_TYPE_1D"
+    showsPrec _ VK_IMAGE_VIEW_TYPE_2D
+      = showString "VK_IMAGE_VIEW_TYPE_2D"
+    showsPrec _ VK_IMAGE_VIEW_TYPE_3D
+      = showString "VK_IMAGE_VIEW_TYPE_3D"
+    showsPrec _ VK_IMAGE_VIEW_TYPE_CUBE
+      = showString "VK_IMAGE_VIEW_TYPE_CUBE"
+    showsPrec _ VK_IMAGE_VIEW_TYPE_1D_ARRAY
+      = showString "VK_IMAGE_VIEW_TYPE_1D_ARRAY"
+    showsPrec _ VK_IMAGE_VIEW_TYPE_2D_ARRAY
+      = showString "VK_IMAGE_VIEW_TYPE_2D_ARRAY"
+    showsPrec _ VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
+      = showString "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"
+    showsPrec p (VkImageViewType x)
+      = showParen (p >= 11)
+          (showString "VkImageViewType " . showsPrec 11 x)
 
 instance Read VkImageViewType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_IMAGE_VIEW_TYPE_1D", pure VK_IMAGE_VIEW_TYPE_1D),
-                  ("VK_IMAGE_VIEW_TYPE_2D", pure VK_IMAGE_VIEW_TYPE_2D),
-                  ("VK_IMAGE_VIEW_TYPE_3D", pure VK_IMAGE_VIEW_TYPE_3D),
-                  ("VK_IMAGE_VIEW_TYPE_CUBE", pure VK_IMAGE_VIEW_TYPE_CUBE),
-                  ("VK_IMAGE_VIEW_TYPE_1D_ARRAY", pure VK_IMAGE_VIEW_TYPE_1D_ARRAY),
-                  ("VK_IMAGE_VIEW_TYPE_2D_ARRAY", pure VK_IMAGE_VIEW_TYPE_2D_ARRAY),
-                  ("VK_IMAGE_VIEW_TYPE_CUBE_ARRAY",
-                   pure VK_IMAGE_VIEW_TYPE_CUBE_ARRAY)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkImageViewType") >>
-                      (VkImageViewType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_IMAGE_VIEW_TYPE_1D", pure VK_IMAGE_VIEW_TYPE_1D),
+              ("VK_IMAGE_VIEW_TYPE_2D", pure VK_IMAGE_VIEW_TYPE_2D),
+              ("VK_IMAGE_VIEW_TYPE_3D", pure VK_IMAGE_VIEW_TYPE_3D),
+              ("VK_IMAGE_VIEW_TYPE_CUBE", pure VK_IMAGE_VIEW_TYPE_CUBE),
+              ("VK_IMAGE_VIEW_TYPE_1D_ARRAY", pure VK_IMAGE_VIEW_TYPE_1D_ARRAY),
+              ("VK_IMAGE_VIEW_TYPE_2D_ARRAY", pure VK_IMAGE_VIEW_TYPE_2D_ARRAY),
+              ("VK_IMAGE_VIEW_TYPE_CUBE_ARRAY",
+               pure VK_IMAGE_VIEW_TYPE_CUBE_ARRAY)]
+             +++
+             prec 10
+               (expectP (Ident "VkImageViewType") >>
+                  (VkImageViewType <$> step readPrec)))
 
 pattern VK_IMAGE_VIEW_TYPE_1D :: VkImageViewType
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/IndexType.hs b/src-gen/Graphics/Vulkan/Types/Enum/IndexType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/IndexType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/IndexType.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -9,9 +7,7 @@
        (VkIndexType(VkIndexType, VK_INDEX_TYPE_UINT16,
                     VK_INDEX_TYPE_UINT32))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -22,25 +18,25 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkIndexType VkIndexType registry at www.khronos.org>
 newtype VkIndexType = VkIndexType Int32
-                        deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                      deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkIndexType where
-        showsPrec _ VK_INDEX_TYPE_UINT16
-          = showString "VK_INDEX_TYPE_UINT16"
-        showsPrec _ VK_INDEX_TYPE_UINT32
-          = showString "VK_INDEX_TYPE_UINT32"
-        showsPrec p (VkIndexType x)
-          = showParen (p >= 11) (showString "VkIndexType " . showsPrec 11 x)
+    showsPrec _ VK_INDEX_TYPE_UINT16
+      = showString "VK_INDEX_TYPE_UINT16"
+    showsPrec _ VK_INDEX_TYPE_UINT32
+      = showString "VK_INDEX_TYPE_UINT32"
+    showsPrec p (VkIndexType x)
+      = showParen (p >= 11) (showString "VkIndexType " . showsPrec 11 x)
 
 instance Read VkIndexType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_INDEX_TYPE_UINT16", pure VK_INDEX_TYPE_UINT16),
-                  ("VK_INDEX_TYPE_UINT32", pure VK_INDEX_TYPE_UINT32)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkIndexType") >> (VkIndexType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_INDEX_TYPE_UINT16", pure VK_INDEX_TYPE_UINT16),
+              ("VK_INDEX_TYPE_UINT32", pure VK_INDEX_TYPE_UINT32)]
+             +++
+             prec 10
+               (expectP (Ident "VkIndexType") >> (VkIndexType <$> step readPrec)))
 
 pattern VK_INDEX_TYPE_UINT16 :: VkIndexType
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/IndirectCommands.hs b/src-gen/Graphics/Vulkan/Types/Enum/IndirectCommands.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/IndirectCommands.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/IndirectCommands.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -30,9 +28,7 @@
                                        VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX))
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -42,8 +38,7 @@
 
 newtype VkIndirectCommandsLayoutUsageBitmaskNVX (a ::
                                                    FlagType) = VkIndirectCommandsLayoutUsageBitmaskNVX VkFlags
-                                                                 deriving (Eq, Ord, Storable, Data,
-                                                                           Generic)
+                                                               deriving (Eq, Ord, Storable)
 
 type VkIndirectCommandsLayoutUsageFlagsNVX =
      VkIndirectCommandsLayoutUsageBitmaskNVX FlagMask
@@ -69,60 +64,45 @@
 deriving instance
          FiniteBits (VkIndirectCommandsLayoutUsageBitmaskNVX FlagMask)
 
-deriving instance
-         Integral (VkIndirectCommandsLayoutUsageBitmaskNVX FlagMask)
-
-deriving instance
-         Num (VkIndirectCommandsLayoutUsageBitmaskNVX FlagMask)
-
-deriving instance
-         Bounded (VkIndirectCommandsLayoutUsageBitmaskNVX FlagMask)
-
-deriving instance
-         Enum (VkIndirectCommandsLayoutUsageBitmaskNVX FlagMask)
-
-deriving instance
-         Real (VkIndirectCommandsLayoutUsageBitmaskNVX FlagMask)
-
 instance Show (VkIndirectCommandsLayoutUsageBitmaskNVX a) where
-        showsPrec _
-          VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX
-          = showString
-              "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"
-        showsPrec _
-          VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX
-          = showString
-              "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"
-        showsPrec _
-          VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX
-          = showString
-              "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"
-        showsPrec _
-          VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
-          = showString
-              "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"
-        showsPrec p (VkIndirectCommandsLayoutUsageBitmaskNVX x)
-          = showParen (p >= 11)
-              (showString "VkIndirectCommandsLayoutUsageBitmaskNVX " .
-                 showsPrec 11 x)
+    showsPrec _
+      VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX
+      = showString
+          "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"
+    showsPrec _
+      VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX
+      = showString
+          "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"
+    showsPrec _
+      VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX
+      = showString
+          "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"
+    showsPrec _
+      VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
+      = showString
+          "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"
+    showsPrec p (VkIndirectCommandsLayoutUsageBitmaskNVX x)
+      = showParen (p >= 11)
+          (showString "VkIndirectCommandsLayoutUsageBitmaskNVX " .
+             showsPrec 11 x)
 
 instance Read (VkIndirectCommandsLayoutUsageBitmaskNVX a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX",
-                   pure
-                     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX),
-                  ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX",
-                   pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX),
-                  ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX",
-                   pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX),
-                  ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX",
-                   pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkIndirectCommandsLayoutUsageBitmaskNVX") >>
-                      (VkIndirectCommandsLayoutUsageBitmaskNVX <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX",
+               pure
+                 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX),
+              ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX",
+               pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX),
+              ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX",
+               pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX),
+              ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX",
+               pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX)]
+             +++
+             prec 10
+               (expectP (Ident "VkIndirectCommandsLayoutUsageBitmaskNVX") >>
+                  (VkIndirectCommandsLayoutUsageBitmaskNVX <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX
@@ -156,54 +136,53 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkIndirectCommandsTokenTypeNVX VkIndirectCommandsTokenTypeNVX registry at www.khronos.org>
 newtype VkIndirectCommandsTokenTypeNVX = VkIndirectCommandsTokenTypeNVX Int32
-                                           deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                     Generic)
+                                         deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkIndirectCommandsTokenTypeNVX where
-        showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX
-          = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"
-        showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX
-          = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"
-        showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX
-          = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"
-        showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX
-          = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"
-        showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX
-          = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"
-        showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX
-          = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"
-        showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX
-          = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"
-        showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
-          = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"
-        showsPrec p (VkIndirectCommandsTokenTypeNVX x)
-          = showParen (p >= 11)
-              (showString "VkIndirectCommandsTokenTypeNVX " . showsPrec 11 x)
+    showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX
+      = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"
+    showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX
+      = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"
+    showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX
+      = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"
+    showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX
+      = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"
+    showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX
+      = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"
+    showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX
+      = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"
+    showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX
+      = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"
+    showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
+      = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"
+    showsPrec p (VkIndirectCommandsTokenTypeNVX x)
+      = showParen (p >= 11)
+          (showString "VkIndirectCommandsTokenTypeNVX " . showsPrec 11 x)
 
 instance Read VkIndirectCommandsTokenTypeNVX where
-        readPrec
-          = parens
-              (choose
-                 [("VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX",
-                   pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX),
-                  ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX",
-                   pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX),
-                  ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX",
-                   pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX),
-                  ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX",
-                   pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX),
-                  ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX",
-                   pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX),
-                  ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX",
-                   pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX),
-                  ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX",
-                   pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX),
-                  ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX",
-                   pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkIndirectCommandsTokenTypeNVX") >>
-                      (VkIndirectCommandsTokenTypeNVX <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX",
+               pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX),
+              ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX",
+               pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX),
+              ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX",
+               pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX),
+              ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX",
+               pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX),
+              ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX",
+               pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX),
+              ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX",
+               pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX),
+              ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX",
+               pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX),
+              ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX",
+               pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX)]
+             +++
+             prec 10
+               (expectP (Ident "VkIndirectCommandsTokenTypeNVX") >>
+                  (VkIndirectCommandsTokenTypeNVX <$> step readPrec)))
 
 pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX ::
         VkIndirectCommandsTokenTypeNVX
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/InstanceCreateFlagBits.hs b/src-gen/Graphics/Vulkan/Types/Enum/InstanceCreateFlagBits.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/InstanceCreateFlagBits.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/InstanceCreateFlagBits.hs
@@ -1,25 +1,20 @@
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.InstanceCreateFlagBits
        (VkInstanceCreateFlagBits(..)) where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
 newtype VkInstanceCreateFlagBits = VkInstanceCreateFlagBits VkFlags
-                                     deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                               FiniteBits, Storable, Real, Data, Generic)
+                                   deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkInstanceCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkInstanceCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkInstanceCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/InternalAllocationType.hs b/src-gen/Graphics/Vulkan/Types/Enum/InternalAllocationType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/InternalAllocationType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/InternalAllocationType.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -9,9 +7,7 @@
        (VkInternalAllocationType(VkInternalAllocationType,
                                  VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -22,25 +18,25 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkInternalAllocationType VkInternalAllocationType registry at www.khronos.org>
 newtype VkInternalAllocationType = VkInternalAllocationType Int32
-                                     deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                                   deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkInternalAllocationType where
-        showsPrec _ VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
-          = showString "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"
-        showsPrec p (VkInternalAllocationType x)
-          = showParen (p >= 11)
-              (showString "VkInternalAllocationType " . showsPrec 11 x)
+    showsPrec _ VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
+      = showString "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"
+    showsPrec p (VkInternalAllocationType x)
+      = showParen (p >= 11)
+          (showString "VkInternalAllocationType " . showsPrec 11 x)
 
 instance Read VkInternalAllocationType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE",
-                   pure VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkInternalAllocationType") >>
-                      (VkInternalAllocationType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE",
+               pure VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE)]
+             +++
+             prec 10
+               (expectP (Ident "VkInternalAllocationType") >>
+                  (VkInternalAllocationType <$> step readPrec)))
 
 pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE ::
         VkInternalAllocationType
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/LogicOp.hs b/src-gen/Graphics/Vulkan/Types/Enum/LogicOp.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/LogicOp.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/LogicOp.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -14,9 +12,7 @@
                   VK_LOGIC_OP_COPY_INVERTED, VK_LOGIC_OP_OR_INVERTED,
                   VK_LOGIC_OP_NAND, VK_LOGIC_OP_SET))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -27,57 +23,57 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkLogicOp VkLogicOp registry at www.khronos.org>
 newtype VkLogicOp = VkLogicOp Int32
-                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                    deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkLogicOp where
-        showsPrec _ VK_LOGIC_OP_CLEAR = showString "VK_LOGIC_OP_CLEAR"
-        showsPrec _ VK_LOGIC_OP_AND = showString "VK_LOGIC_OP_AND"
-        showsPrec _ VK_LOGIC_OP_AND_REVERSE
-          = showString "VK_LOGIC_OP_AND_REVERSE"
-        showsPrec _ VK_LOGIC_OP_COPY = showString "VK_LOGIC_OP_COPY"
-        showsPrec _ VK_LOGIC_OP_AND_INVERTED
-          = showString "VK_LOGIC_OP_AND_INVERTED"
-        showsPrec _ VK_LOGIC_OP_NO_OP = showString "VK_LOGIC_OP_NO_OP"
-        showsPrec _ VK_LOGIC_OP_XOR = showString "VK_LOGIC_OP_XOR"
-        showsPrec _ VK_LOGIC_OP_OR = showString "VK_LOGIC_OP_OR"
-        showsPrec _ VK_LOGIC_OP_NOR = showString "VK_LOGIC_OP_NOR"
-        showsPrec _ VK_LOGIC_OP_EQUIVALENT
-          = showString "VK_LOGIC_OP_EQUIVALENT"
-        showsPrec _ VK_LOGIC_OP_INVERT = showString "VK_LOGIC_OP_INVERT"
-        showsPrec _ VK_LOGIC_OP_OR_REVERSE
-          = showString "VK_LOGIC_OP_OR_REVERSE"
-        showsPrec _ VK_LOGIC_OP_COPY_INVERTED
-          = showString "VK_LOGIC_OP_COPY_INVERTED"
-        showsPrec _ VK_LOGIC_OP_OR_INVERTED
-          = showString "VK_LOGIC_OP_OR_INVERTED"
-        showsPrec _ VK_LOGIC_OP_NAND = showString "VK_LOGIC_OP_NAND"
-        showsPrec _ VK_LOGIC_OP_SET = showString "VK_LOGIC_OP_SET"
-        showsPrec p (VkLogicOp x)
-          = showParen (p >= 11) (showString "VkLogicOp " . showsPrec 11 x)
+    showsPrec _ VK_LOGIC_OP_CLEAR = showString "VK_LOGIC_OP_CLEAR"
+    showsPrec _ VK_LOGIC_OP_AND = showString "VK_LOGIC_OP_AND"
+    showsPrec _ VK_LOGIC_OP_AND_REVERSE
+      = showString "VK_LOGIC_OP_AND_REVERSE"
+    showsPrec _ VK_LOGIC_OP_COPY = showString "VK_LOGIC_OP_COPY"
+    showsPrec _ VK_LOGIC_OP_AND_INVERTED
+      = showString "VK_LOGIC_OP_AND_INVERTED"
+    showsPrec _ VK_LOGIC_OP_NO_OP = showString "VK_LOGIC_OP_NO_OP"
+    showsPrec _ VK_LOGIC_OP_XOR = showString "VK_LOGIC_OP_XOR"
+    showsPrec _ VK_LOGIC_OP_OR = showString "VK_LOGIC_OP_OR"
+    showsPrec _ VK_LOGIC_OP_NOR = showString "VK_LOGIC_OP_NOR"
+    showsPrec _ VK_LOGIC_OP_EQUIVALENT
+      = showString "VK_LOGIC_OP_EQUIVALENT"
+    showsPrec _ VK_LOGIC_OP_INVERT = showString "VK_LOGIC_OP_INVERT"
+    showsPrec _ VK_LOGIC_OP_OR_REVERSE
+      = showString "VK_LOGIC_OP_OR_REVERSE"
+    showsPrec _ VK_LOGIC_OP_COPY_INVERTED
+      = showString "VK_LOGIC_OP_COPY_INVERTED"
+    showsPrec _ VK_LOGIC_OP_OR_INVERTED
+      = showString "VK_LOGIC_OP_OR_INVERTED"
+    showsPrec _ VK_LOGIC_OP_NAND = showString "VK_LOGIC_OP_NAND"
+    showsPrec _ VK_LOGIC_OP_SET = showString "VK_LOGIC_OP_SET"
+    showsPrec p (VkLogicOp x)
+      = showParen (p >= 11) (showString "VkLogicOp " . showsPrec 11 x)
 
 instance Read VkLogicOp where
-        readPrec
-          = parens
-              (choose
-                 [("VK_LOGIC_OP_CLEAR", pure VK_LOGIC_OP_CLEAR),
-                  ("VK_LOGIC_OP_AND", pure VK_LOGIC_OP_AND),
-                  ("VK_LOGIC_OP_AND_REVERSE", pure VK_LOGIC_OP_AND_REVERSE),
-                  ("VK_LOGIC_OP_COPY", pure VK_LOGIC_OP_COPY),
-                  ("VK_LOGIC_OP_AND_INVERTED", pure VK_LOGIC_OP_AND_INVERTED),
-                  ("VK_LOGIC_OP_NO_OP", pure VK_LOGIC_OP_NO_OP),
-                  ("VK_LOGIC_OP_XOR", pure VK_LOGIC_OP_XOR),
-                  ("VK_LOGIC_OP_OR", pure VK_LOGIC_OP_OR),
-                  ("VK_LOGIC_OP_NOR", pure VK_LOGIC_OP_NOR),
-                  ("VK_LOGIC_OP_EQUIVALENT", pure VK_LOGIC_OP_EQUIVALENT),
-                  ("VK_LOGIC_OP_INVERT", pure VK_LOGIC_OP_INVERT),
-                  ("VK_LOGIC_OP_OR_REVERSE", pure VK_LOGIC_OP_OR_REVERSE),
-                  ("VK_LOGIC_OP_COPY_INVERTED", pure VK_LOGIC_OP_COPY_INVERTED),
-                  ("VK_LOGIC_OP_OR_INVERTED", pure VK_LOGIC_OP_OR_INVERTED),
-                  ("VK_LOGIC_OP_NAND", pure VK_LOGIC_OP_NAND),
-                  ("VK_LOGIC_OP_SET", pure VK_LOGIC_OP_SET)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkLogicOp") >> (VkLogicOp <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_LOGIC_OP_CLEAR", pure VK_LOGIC_OP_CLEAR),
+              ("VK_LOGIC_OP_AND", pure VK_LOGIC_OP_AND),
+              ("VK_LOGIC_OP_AND_REVERSE", pure VK_LOGIC_OP_AND_REVERSE),
+              ("VK_LOGIC_OP_COPY", pure VK_LOGIC_OP_COPY),
+              ("VK_LOGIC_OP_AND_INVERTED", pure VK_LOGIC_OP_AND_INVERTED),
+              ("VK_LOGIC_OP_NO_OP", pure VK_LOGIC_OP_NO_OP),
+              ("VK_LOGIC_OP_XOR", pure VK_LOGIC_OP_XOR),
+              ("VK_LOGIC_OP_OR", pure VK_LOGIC_OP_OR),
+              ("VK_LOGIC_OP_NOR", pure VK_LOGIC_OP_NOR),
+              ("VK_LOGIC_OP_EQUIVALENT", pure VK_LOGIC_OP_EQUIVALENT),
+              ("VK_LOGIC_OP_INVERT", pure VK_LOGIC_OP_INVERT),
+              ("VK_LOGIC_OP_OR_REVERSE", pure VK_LOGIC_OP_OR_REVERSE),
+              ("VK_LOGIC_OP_COPY_INVERTED", pure VK_LOGIC_OP_COPY_INVERTED),
+              ("VK_LOGIC_OP_OR_INVERTED", pure VK_LOGIC_OP_OR_INVERTED),
+              ("VK_LOGIC_OP_NAND", pure VK_LOGIC_OP_NAND),
+              ("VK_LOGIC_OP_SET", pure VK_LOGIC_OP_SET)]
+             +++
+             prec 10
+               (expectP (Ident "VkLogicOp") >> (VkLogicOp <$> step readPrec)))
 
 pattern VK_LOGIC_OP_CLEAR :: VkLogicOp
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Memory.hs b/src-gen/Graphics/Vulkan/Types/Enum/Memory.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Memory.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Memory.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -29,9 +27,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -40,20 +36,19 @@
 import Text.Read.Lex                   (Lexeme (..))
 
 newtype VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBitsKHR VkFlags
-                                        deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                  FiniteBits, Storable, Real, Data, Generic)
+                                      deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkMemoryAllocateFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkMemoryAllocateFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkMemoryAllocateFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkMemoryAllocateBitmask (a ::
                                    FlagType) = VkMemoryAllocateBitmask VkFlags
-                                                 deriving (Eq, Ord, Storable, Data, Generic)
+                                               deriving (Eq, Ord, Storable)
 
 type VkMemoryAllocateFlags = VkMemoryAllocateBitmask FlagMask
 
@@ -73,33 +68,23 @@
 
 deriving instance FiniteBits (VkMemoryAllocateBitmask FlagMask)
 
-deriving instance Integral (VkMemoryAllocateBitmask FlagMask)
-
-deriving instance Num (VkMemoryAllocateBitmask FlagMask)
-
-deriving instance Bounded (VkMemoryAllocateBitmask FlagMask)
-
-deriving instance Enum (VkMemoryAllocateBitmask FlagMask)
-
-deriving instance Real (VkMemoryAllocateBitmask FlagMask)
-
 instance Show (VkMemoryAllocateBitmask a) where
-        showsPrec _ VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
-          = showString "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"
-        showsPrec p (VkMemoryAllocateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkMemoryAllocateBitmask " . showsPrec 11 x)
+    showsPrec _ VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
+      = showString "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"
+    showsPrec p (VkMemoryAllocateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkMemoryAllocateBitmask " . showsPrec 11 x)
 
 instance Read (VkMemoryAllocateBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT",
-                   pure VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkMemoryAllocateBitmask") >>
-                      (VkMemoryAllocateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT",
+               pure VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkMemoryAllocateBitmask") >>
+                  (VkMemoryAllocateBitmask <$> step readPrec)))
 
 -- | Force allocation on specific devices
 --
@@ -112,7 +97,7 @@
 
 newtype VkMemoryHeapBitmask (a ::
                                FlagType) = VkMemoryHeapBitmask VkFlags
-                                             deriving (Eq, Ord, Storable, Data, Generic)
+                                           deriving (Eq, Ord, Storable)
 
 type VkMemoryHeapFlags = VkMemoryHeapBitmask FlagMask
 
@@ -132,33 +117,23 @@
 
 deriving instance FiniteBits (VkMemoryHeapBitmask FlagMask)
 
-deriving instance Integral (VkMemoryHeapBitmask FlagMask)
-
-deriving instance Num (VkMemoryHeapBitmask FlagMask)
-
-deriving instance Bounded (VkMemoryHeapBitmask FlagMask)
-
-deriving instance Enum (VkMemoryHeapBitmask FlagMask)
-
-deriving instance Real (VkMemoryHeapBitmask FlagMask)
-
 instance Show (VkMemoryHeapBitmask a) where
-        showsPrec _ VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
-          = showString "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"
-        showsPrec p (VkMemoryHeapBitmask x)
-          = showParen (p >= 11)
-              (showString "VkMemoryHeapBitmask " . showsPrec 11 x)
+    showsPrec _ VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
+      = showString "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"
+    showsPrec p (VkMemoryHeapBitmask x)
+      = showParen (p >= 11)
+          (showString "VkMemoryHeapBitmask " . showsPrec 11 x)
 
 instance Read (VkMemoryHeapBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_MEMORY_HEAP_DEVICE_LOCAL_BIT",
-                   pure VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkMemoryHeapBitmask") >>
-                      (VkMemoryHeapBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_MEMORY_HEAP_DEVICE_LOCAL_BIT",
+               pure VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkMemoryHeapBitmask") >>
+                  (VkMemoryHeapBitmask <$> step readPrec)))
 
 -- | If set, heap represents device memory
 --
@@ -169,7 +144,7 @@
 
 newtype VkMemoryPropertyBitmask (a ::
                                    FlagType) = VkMemoryPropertyBitmask VkFlags
-                                                 deriving (Eq, Ord, Storable, Data, Generic)
+                                               deriving (Eq, Ord, Storable)
 
 type VkMemoryPropertyFlags = VkMemoryPropertyBitmask FlagMask
 
@@ -189,49 +164,39 @@
 
 deriving instance FiniteBits (VkMemoryPropertyBitmask FlagMask)
 
-deriving instance Integral (VkMemoryPropertyBitmask FlagMask)
-
-deriving instance Num (VkMemoryPropertyBitmask FlagMask)
-
-deriving instance Bounded (VkMemoryPropertyBitmask FlagMask)
-
-deriving instance Enum (VkMemoryPropertyBitmask FlagMask)
-
-deriving instance Real (VkMemoryPropertyBitmask FlagMask)
-
 instance Show (VkMemoryPropertyBitmask a) where
-        showsPrec _ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
-          = showString "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"
-        showsPrec _ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
-          = showString "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"
-        showsPrec _ VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
-          = showString "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"
-        showsPrec _ VK_MEMORY_PROPERTY_HOST_CACHED_BIT
-          = showString "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"
-        showsPrec _ VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
-          = showString "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"
-        showsPrec p (VkMemoryPropertyBitmask x)
-          = showParen (p >= 11)
-              (showString "VkMemoryPropertyBitmask " . showsPrec 11 x)
+    showsPrec _ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
+      = showString "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"
+    showsPrec _ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
+      = showString "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"
+    showsPrec _ VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
+      = showString "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"
+    showsPrec _ VK_MEMORY_PROPERTY_HOST_CACHED_BIT
+      = showString "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"
+    showsPrec _ VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
+      = showString "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"
+    showsPrec p (VkMemoryPropertyBitmask x)
+      = showParen (p >= 11)
+          (showString "VkMemoryPropertyBitmask " . showsPrec 11 x)
 
 instance Read (VkMemoryPropertyBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT",
-                   pure VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT),
-                  ("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT",
-                   pure VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT),
-                  ("VK_MEMORY_PROPERTY_HOST_COHERENT_BIT",
-                   pure VK_MEMORY_PROPERTY_HOST_COHERENT_BIT),
-                  ("VK_MEMORY_PROPERTY_HOST_CACHED_BIT",
-                   pure VK_MEMORY_PROPERTY_HOST_CACHED_BIT),
-                  ("VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT",
-                   pure VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkMemoryPropertyBitmask") >>
-                      (VkMemoryPropertyBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT",
+               pure VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT),
+              ("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT",
+               pure VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT),
+              ("VK_MEMORY_PROPERTY_HOST_COHERENT_BIT",
+               pure VK_MEMORY_PROPERTY_HOST_COHERENT_BIT),
+              ("VK_MEMORY_PROPERTY_HOST_CACHED_BIT",
+               pure VK_MEMORY_PROPERTY_HOST_CACHED_BIT),
+              ("VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT",
+               pure VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkMemoryPropertyBitmask") >>
+                  (VkMemoryPropertyBitmask <$> step readPrec)))
 
 -- | If otherwise stated, then allocate memory on device
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Object.hs b/src-gen/Graphics/Vulkan/Types/Enum/Object.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Object.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Object.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -36,9 +34,7 @@
                      VK_OBJECT_TYPE_FRAMEBUFFER, VK_OBJECT_TYPE_COMMAND_POOL))
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -50,41 +46,41 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectEntryTypeNVX VkObjectEntryTypeNVX registry at www.khronos.org>
 newtype VkObjectEntryTypeNVX = VkObjectEntryTypeNVX Int32
-                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                               deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkObjectEntryTypeNVX where
-        showsPrec _ VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX
-          = showString "VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX"
-        showsPrec _ VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX
-          = showString "VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX"
-        showsPrec _ VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX
-          = showString "VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX"
-        showsPrec _ VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX
-          = showString "VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX"
-        showsPrec _ VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
-          = showString "VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX"
-        showsPrec p (VkObjectEntryTypeNVX x)
-          = showParen (p >= 11)
-              (showString "VkObjectEntryTypeNVX " . showsPrec 11 x)
+    showsPrec _ VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX
+      = showString "VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX"
+    showsPrec _ VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX
+      = showString "VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX"
+    showsPrec _ VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX
+      = showString "VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX"
+    showsPrec _ VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX
+      = showString "VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX"
+    showsPrec _ VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
+      = showString "VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX"
+    showsPrec p (VkObjectEntryTypeNVX x)
+      = showParen (p >= 11)
+          (showString "VkObjectEntryTypeNVX " . showsPrec 11 x)
 
 instance Read VkObjectEntryTypeNVX where
-        readPrec
-          = parens
-              (choose
-                 [("VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX",
-                   pure VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX),
-                  ("VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX",
-                   pure VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX),
-                  ("VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX",
-                   pure VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX),
-                  ("VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX",
-                   pure VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX),
-                  ("VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX",
-                   pure VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkObjectEntryTypeNVX") >>
-                      (VkObjectEntryTypeNVX <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX",
+               pure VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX),
+              ("VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX",
+               pure VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX),
+              ("VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX",
+               pure VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX),
+              ("VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX",
+               pure VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX),
+              ("VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX",
+               pure VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX)]
+             +++
+             prec 10
+               (expectP (Ident "VkObjectEntryTypeNVX") >>
+                  (VkObjectEntryTypeNVX <$> step readPrec)))
 
 pattern VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX ::
         VkObjectEntryTypeNVX
@@ -116,7 +112,7 @@
 
 newtype VkObjectEntryUsageBitmaskNVX (a ::
                                         FlagType) = VkObjectEntryUsageBitmaskNVX VkFlags
-                                                      deriving (Eq, Ord, Storable, Data, Generic)
+                                                    deriving (Eq, Ord, Storable)
 
 type VkObjectEntryUsageFlagsNVX =
      VkObjectEntryUsageBitmaskNVX FlagMask
@@ -141,37 +137,27 @@
 deriving instance
          FiniteBits (VkObjectEntryUsageBitmaskNVX FlagMask)
 
-deriving instance Integral (VkObjectEntryUsageBitmaskNVX FlagMask)
-
-deriving instance Num (VkObjectEntryUsageBitmaskNVX FlagMask)
-
-deriving instance Bounded (VkObjectEntryUsageBitmaskNVX FlagMask)
-
-deriving instance Enum (VkObjectEntryUsageBitmaskNVX FlagMask)
-
-deriving instance Real (VkObjectEntryUsageBitmaskNVX FlagMask)
-
 instance Show (VkObjectEntryUsageBitmaskNVX a) where
-        showsPrec _ VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX
-          = showString "VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"
-        showsPrec _ VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
-          = showString "VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"
-        showsPrec p (VkObjectEntryUsageBitmaskNVX x)
-          = showParen (p >= 11)
-              (showString "VkObjectEntryUsageBitmaskNVX " . showsPrec 11 x)
+    showsPrec _ VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX
+      = showString "VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"
+    showsPrec _ VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
+      = showString "VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"
+    showsPrec p (VkObjectEntryUsageBitmaskNVX x)
+      = showParen (p >= 11)
+          (showString "VkObjectEntryUsageBitmaskNVX " . showsPrec 11 x)
 
 instance Read (VkObjectEntryUsageBitmaskNVX a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX",
-                   pure VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX),
-                  ("VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX",
-                   pure VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkObjectEntryUsageBitmaskNVX") >>
-                      (VkObjectEntryUsageBitmaskNVX <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX",
+               pure VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX),
+              ("VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX",
+               pure VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX)]
+             +++
+             prec 10
+               (expectP (Ident "VkObjectEntryUsageBitmaskNVX") >>
+                  (VkObjectEntryUsageBitmaskNVX <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX ::
@@ -194,107 +180,107 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectType VkObjectType registry at www.khronos.org>
 newtype VkObjectType = VkObjectType Int32
-                         deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                       deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkObjectType where
-        showsPrec _ VK_OBJECT_TYPE_UNKNOWN
-          = showString "VK_OBJECT_TYPE_UNKNOWN"
-        showsPrec _ VK_OBJECT_TYPE_INSTANCE
-          = showString "VK_OBJECT_TYPE_INSTANCE"
-        showsPrec _ VK_OBJECT_TYPE_PHYSICAL_DEVICE
-          = showString "VK_OBJECT_TYPE_PHYSICAL_DEVICE"
-        showsPrec _ VK_OBJECT_TYPE_DEVICE
-          = showString "VK_OBJECT_TYPE_DEVICE"
-        showsPrec _ VK_OBJECT_TYPE_QUEUE
-          = showString "VK_OBJECT_TYPE_QUEUE"
-        showsPrec _ VK_OBJECT_TYPE_SEMAPHORE
-          = showString "VK_OBJECT_TYPE_SEMAPHORE"
-        showsPrec _ VK_OBJECT_TYPE_COMMAND_BUFFER
-          = showString "VK_OBJECT_TYPE_COMMAND_BUFFER"
-        showsPrec _ VK_OBJECT_TYPE_FENCE
-          = showString "VK_OBJECT_TYPE_FENCE"
-        showsPrec _ VK_OBJECT_TYPE_DEVICE_MEMORY
-          = showString "VK_OBJECT_TYPE_DEVICE_MEMORY"
-        showsPrec _ VK_OBJECT_TYPE_BUFFER
-          = showString "VK_OBJECT_TYPE_BUFFER"
-        showsPrec _ VK_OBJECT_TYPE_IMAGE
-          = showString "VK_OBJECT_TYPE_IMAGE"
-        showsPrec _ VK_OBJECT_TYPE_EVENT
-          = showString "VK_OBJECT_TYPE_EVENT"
-        showsPrec _ VK_OBJECT_TYPE_QUERY_POOL
-          = showString "VK_OBJECT_TYPE_QUERY_POOL"
-        showsPrec _ VK_OBJECT_TYPE_BUFFER_VIEW
-          = showString "VK_OBJECT_TYPE_BUFFER_VIEW"
-        showsPrec _ VK_OBJECT_TYPE_IMAGE_VIEW
-          = showString "VK_OBJECT_TYPE_IMAGE_VIEW"
-        showsPrec _ VK_OBJECT_TYPE_SHADER_MODULE
-          = showString "VK_OBJECT_TYPE_SHADER_MODULE"
-        showsPrec _ VK_OBJECT_TYPE_PIPELINE_CACHE
-          = showString "VK_OBJECT_TYPE_PIPELINE_CACHE"
-        showsPrec _ VK_OBJECT_TYPE_PIPELINE_LAYOUT
-          = showString "VK_OBJECT_TYPE_PIPELINE_LAYOUT"
-        showsPrec _ VK_OBJECT_TYPE_RENDER_PASS
-          = showString "VK_OBJECT_TYPE_RENDER_PASS"
-        showsPrec _ VK_OBJECT_TYPE_PIPELINE
-          = showString "VK_OBJECT_TYPE_PIPELINE"
-        showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT
-          = showString "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"
-        showsPrec _ VK_OBJECT_TYPE_SAMPLER
-          = showString "VK_OBJECT_TYPE_SAMPLER"
-        showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_POOL
-          = showString "VK_OBJECT_TYPE_DESCRIPTOR_POOL"
-        showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_SET
-          = showString "VK_OBJECT_TYPE_DESCRIPTOR_SET"
-        showsPrec _ VK_OBJECT_TYPE_FRAMEBUFFER
-          = showString "VK_OBJECT_TYPE_FRAMEBUFFER"
-        showsPrec _ VK_OBJECT_TYPE_COMMAND_POOL
-          = showString "VK_OBJECT_TYPE_COMMAND_POOL"
-        showsPrec p (VkObjectType x)
-          = showParen (p >= 11) (showString "VkObjectType " . showsPrec 11 x)
+    showsPrec _ VK_OBJECT_TYPE_UNKNOWN
+      = showString "VK_OBJECT_TYPE_UNKNOWN"
+    showsPrec _ VK_OBJECT_TYPE_INSTANCE
+      = showString "VK_OBJECT_TYPE_INSTANCE"
+    showsPrec _ VK_OBJECT_TYPE_PHYSICAL_DEVICE
+      = showString "VK_OBJECT_TYPE_PHYSICAL_DEVICE"
+    showsPrec _ VK_OBJECT_TYPE_DEVICE
+      = showString "VK_OBJECT_TYPE_DEVICE"
+    showsPrec _ VK_OBJECT_TYPE_QUEUE
+      = showString "VK_OBJECT_TYPE_QUEUE"
+    showsPrec _ VK_OBJECT_TYPE_SEMAPHORE
+      = showString "VK_OBJECT_TYPE_SEMAPHORE"
+    showsPrec _ VK_OBJECT_TYPE_COMMAND_BUFFER
+      = showString "VK_OBJECT_TYPE_COMMAND_BUFFER"
+    showsPrec _ VK_OBJECT_TYPE_FENCE
+      = showString "VK_OBJECT_TYPE_FENCE"
+    showsPrec _ VK_OBJECT_TYPE_DEVICE_MEMORY
+      = showString "VK_OBJECT_TYPE_DEVICE_MEMORY"
+    showsPrec _ VK_OBJECT_TYPE_BUFFER
+      = showString "VK_OBJECT_TYPE_BUFFER"
+    showsPrec _ VK_OBJECT_TYPE_IMAGE
+      = showString "VK_OBJECT_TYPE_IMAGE"
+    showsPrec _ VK_OBJECT_TYPE_EVENT
+      = showString "VK_OBJECT_TYPE_EVENT"
+    showsPrec _ VK_OBJECT_TYPE_QUERY_POOL
+      = showString "VK_OBJECT_TYPE_QUERY_POOL"
+    showsPrec _ VK_OBJECT_TYPE_BUFFER_VIEW
+      = showString "VK_OBJECT_TYPE_BUFFER_VIEW"
+    showsPrec _ VK_OBJECT_TYPE_IMAGE_VIEW
+      = showString "VK_OBJECT_TYPE_IMAGE_VIEW"
+    showsPrec _ VK_OBJECT_TYPE_SHADER_MODULE
+      = showString "VK_OBJECT_TYPE_SHADER_MODULE"
+    showsPrec _ VK_OBJECT_TYPE_PIPELINE_CACHE
+      = showString "VK_OBJECT_TYPE_PIPELINE_CACHE"
+    showsPrec _ VK_OBJECT_TYPE_PIPELINE_LAYOUT
+      = showString "VK_OBJECT_TYPE_PIPELINE_LAYOUT"
+    showsPrec _ VK_OBJECT_TYPE_RENDER_PASS
+      = showString "VK_OBJECT_TYPE_RENDER_PASS"
+    showsPrec _ VK_OBJECT_TYPE_PIPELINE
+      = showString "VK_OBJECT_TYPE_PIPELINE"
+    showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT
+      = showString "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"
+    showsPrec _ VK_OBJECT_TYPE_SAMPLER
+      = showString "VK_OBJECT_TYPE_SAMPLER"
+    showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_POOL
+      = showString "VK_OBJECT_TYPE_DESCRIPTOR_POOL"
+    showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_SET
+      = showString "VK_OBJECT_TYPE_DESCRIPTOR_SET"
+    showsPrec _ VK_OBJECT_TYPE_FRAMEBUFFER
+      = showString "VK_OBJECT_TYPE_FRAMEBUFFER"
+    showsPrec _ VK_OBJECT_TYPE_COMMAND_POOL
+      = showString "VK_OBJECT_TYPE_COMMAND_POOL"
+    showsPrec p (VkObjectType x)
+      = showParen (p >= 11) (showString "VkObjectType " . showsPrec 11 x)
 
 instance Read VkObjectType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_OBJECT_TYPE_UNKNOWN", pure VK_OBJECT_TYPE_UNKNOWN),
-                  ("VK_OBJECT_TYPE_INSTANCE", pure VK_OBJECT_TYPE_INSTANCE),
-                  ("VK_OBJECT_TYPE_PHYSICAL_DEVICE",
-                   pure VK_OBJECT_TYPE_PHYSICAL_DEVICE),
-                  ("VK_OBJECT_TYPE_DEVICE", pure VK_OBJECT_TYPE_DEVICE),
-                  ("VK_OBJECT_TYPE_QUEUE", pure VK_OBJECT_TYPE_QUEUE),
-                  ("VK_OBJECT_TYPE_SEMAPHORE", pure VK_OBJECT_TYPE_SEMAPHORE),
-                  ("VK_OBJECT_TYPE_COMMAND_BUFFER",
-                   pure VK_OBJECT_TYPE_COMMAND_BUFFER),
-                  ("VK_OBJECT_TYPE_FENCE", pure VK_OBJECT_TYPE_FENCE),
-                  ("VK_OBJECT_TYPE_DEVICE_MEMORY",
-                   pure VK_OBJECT_TYPE_DEVICE_MEMORY),
-                  ("VK_OBJECT_TYPE_BUFFER", pure VK_OBJECT_TYPE_BUFFER),
-                  ("VK_OBJECT_TYPE_IMAGE", pure VK_OBJECT_TYPE_IMAGE),
-                  ("VK_OBJECT_TYPE_EVENT", pure VK_OBJECT_TYPE_EVENT),
-                  ("VK_OBJECT_TYPE_QUERY_POOL", pure VK_OBJECT_TYPE_QUERY_POOL),
-                  ("VK_OBJECT_TYPE_BUFFER_VIEW", pure VK_OBJECT_TYPE_BUFFER_VIEW),
-                  ("VK_OBJECT_TYPE_IMAGE_VIEW", pure VK_OBJECT_TYPE_IMAGE_VIEW),
-                  ("VK_OBJECT_TYPE_SHADER_MODULE",
-                   pure VK_OBJECT_TYPE_SHADER_MODULE),
-                  ("VK_OBJECT_TYPE_PIPELINE_CACHE",
-                   pure VK_OBJECT_TYPE_PIPELINE_CACHE),
-                  ("VK_OBJECT_TYPE_PIPELINE_LAYOUT",
-                   pure VK_OBJECT_TYPE_PIPELINE_LAYOUT),
-                  ("VK_OBJECT_TYPE_RENDER_PASS", pure VK_OBJECT_TYPE_RENDER_PASS),
-                  ("VK_OBJECT_TYPE_PIPELINE", pure VK_OBJECT_TYPE_PIPELINE),
-                  ("VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT",
-                   pure VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT),
-                  ("VK_OBJECT_TYPE_SAMPLER", pure VK_OBJECT_TYPE_SAMPLER),
-                  ("VK_OBJECT_TYPE_DESCRIPTOR_POOL",
-                   pure VK_OBJECT_TYPE_DESCRIPTOR_POOL),
-                  ("VK_OBJECT_TYPE_DESCRIPTOR_SET",
-                   pure VK_OBJECT_TYPE_DESCRIPTOR_SET),
-                  ("VK_OBJECT_TYPE_FRAMEBUFFER", pure VK_OBJECT_TYPE_FRAMEBUFFER),
-                  ("VK_OBJECT_TYPE_COMMAND_POOL", pure VK_OBJECT_TYPE_COMMAND_POOL)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkObjectType") >>
-                      (VkObjectType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_OBJECT_TYPE_UNKNOWN", pure VK_OBJECT_TYPE_UNKNOWN),
+              ("VK_OBJECT_TYPE_INSTANCE", pure VK_OBJECT_TYPE_INSTANCE),
+              ("VK_OBJECT_TYPE_PHYSICAL_DEVICE",
+               pure VK_OBJECT_TYPE_PHYSICAL_DEVICE),
+              ("VK_OBJECT_TYPE_DEVICE", pure VK_OBJECT_TYPE_DEVICE),
+              ("VK_OBJECT_TYPE_QUEUE", pure VK_OBJECT_TYPE_QUEUE),
+              ("VK_OBJECT_TYPE_SEMAPHORE", pure VK_OBJECT_TYPE_SEMAPHORE),
+              ("VK_OBJECT_TYPE_COMMAND_BUFFER",
+               pure VK_OBJECT_TYPE_COMMAND_BUFFER),
+              ("VK_OBJECT_TYPE_FENCE", pure VK_OBJECT_TYPE_FENCE),
+              ("VK_OBJECT_TYPE_DEVICE_MEMORY",
+               pure VK_OBJECT_TYPE_DEVICE_MEMORY),
+              ("VK_OBJECT_TYPE_BUFFER", pure VK_OBJECT_TYPE_BUFFER),
+              ("VK_OBJECT_TYPE_IMAGE", pure VK_OBJECT_TYPE_IMAGE),
+              ("VK_OBJECT_TYPE_EVENT", pure VK_OBJECT_TYPE_EVENT),
+              ("VK_OBJECT_TYPE_QUERY_POOL", pure VK_OBJECT_TYPE_QUERY_POOL),
+              ("VK_OBJECT_TYPE_BUFFER_VIEW", pure VK_OBJECT_TYPE_BUFFER_VIEW),
+              ("VK_OBJECT_TYPE_IMAGE_VIEW", pure VK_OBJECT_TYPE_IMAGE_VIEW),
+              ("VK_OBJECT_TYPE_SHADER_MODULE",
+               pure VK_OBJECT_TYPE_SHADER_MODULE),
+              ("VK_OBJECT_TYPE_PIPELINE_CACHE",
+               pure VK_OBJECT_TYPE_PIPELINE_CACHE),
+              ("VK_OBJECT_TYPE_PIPELINE_LAYOUT",
+               pure VK_OBJECT_TYPE_PIPELINE_LAYOUT),
+              ("VK_OBJECT_TYPE_RENDER_PASS", pure VK_OBJECT_TYPE_RENDER_PASS),
+              ("VK_OBJECT_TYPE_PIPELINE", pure VK_OBJECT_TYPE_PIPELINE),
+              ("VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT",
+               pure VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT),
+              ("VK_OBJECT_TYPE_SAMPLER", pure VK_OBJECT_TYPE_SAMPLER),
+              ("VK_OBJECT_TYPE_DESCRIPTOR_POOL",
+               pure VK_OBJECT_TYPE_DESCRIPTOR_POOL),
+              ("VK_OBJECT_TYPE_DESCRIPTOR_SET",
+               pure VK_OBJECT_TYPE_DESCRIPTOR_SET),
+              ("VK_OBJECT_TYPE_FRAMEBUFFER", pure VK_OBJECT_TYPE_FRAMEBUFFER),
+              ("VK_OBJECT_TYPE_COMMAND_POOL", pure VK_OBJECT_TYPE_COMMAND_POOL)]
+             +++
+             prec 10
+               (expectP (Ident "VkObjectType") >>
+                  (VkObjectType <$> step readPrec)))
 
 pattern VK_OBJECT_TYPE_UNKNOWN :: VkObjectType
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/PeerMemoryFeatureFlag.hs b/src-gen/Graphics/Vulkan/Types/Enum/PeerMemoryFeatureFlag.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/PeerMemoryFeatureFlag.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/PeerMemoryFeatureFlag.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -21,9 +19,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -32,20 +28,19 @@
 import Text.Read.Lex                   (Lexeme (..))
 
 newtype VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBitsKHR VkFlags
-                                           deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                     FiniteBits, Storable, Real, Data, Generic)
+                                         deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPeerMemoryFeatureFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkPeerMemoryFeatureFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPeerMemoryFeatureFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPeerMemoryFeatureBitmask (a ::
                                       FlagType) = VkPeerMemoryFeatureBitmask VkFlags
-                                                    deriving (Eq, Ord, Storable, Data, Generic)
+                                                  deriving (Eq, Ord, Storable)
 
 type VkPeerMemoryFeatureFlags = VkPeerMemoryFeatureBitmask FlagMask
 
@@ -67,45 +62,35 @@
 
 deriving instance FiniteBits (VkPeerMemoryFeatureBitmask FlagMask)
 
-deriving instance Integral (VkPeerMemoryFeatureBitmask FlagMask)
-
-deriving instance Num (VkPeerMemoryFeatureBitmask FlagMask)
-
-deriving instance Bounded (VkPeerMemoryFeatureBitmask FlagMask)
-
-deriving instance Enum (VkPeerMemoryFeatureBitmask FlagMask)
-
-deriving instance Real (VkPeerMemoryFeatureBitmask FlagMask)
-
 instance Show (VkPeerMemoryFeatureBitmask a) where
-        showsPrec _ VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT
-          = showString "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"
-        showsPrec _ VK_PEER_MEMORY_FEATURE_COPY_DST_BIT
-          = showString "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"
-        showsPrec _ VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT
-          = showString "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"
-        showsPrec _ VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT
-          = showString "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"
-        showsPrec p (VkPeerMemoryFeatureBitmask x)
-          = showParen (p >= 11)
-              (showString "VkPeerMemoryFeatureBitmask " . showsPrec 11 x)
+    showsPrec _ VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT
+      = showString "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"
+    showsPrec _ VK_PEER_MEMORY_FEATURE_COPY_DST_BIT
+      = showString "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"
+    showsPrec _ VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT
+      = showString "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"
+    showsPrec _ VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT
+      = showString "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"
+    showsPrec p (VkPeerMemoryFeatureBitmask x)
+      = showParen (p >= 11)
+          (showString "VkPeerMemoryFeatureBitmask " . showsPrec 11 x)
 
 instance Read (VkPeerMemoryFeatureBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT",
-                   pure VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT),
-                  ("VK_PEER_MEMORY_FEATURE_COPY_DST_BIT",
-                   pure VK_PEER_MEMORY_FEATURE_COPY_DST_BIT),
-                  ("VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT",
-                   pure VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT),
-                  ("VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT",
-                   pure VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPeerMemoryFeatureBitmask") >>
-                      (VkPeerMemoryFeatureBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT",
+               pure VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT),
+              ("VK_PEER_MEMORY_FEATURE_COPY_DST_BIT",
+               pure VK_PEER_MEMORY_FEATURE_COPY_DST_BIT),
+              ("VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT",
+               pure VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT),
+              ("VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT",
+               pure VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkPeerMemoryFeatureBitmask") >>
+                  (VkPeerMemoryFeatureBitmask <$> step readPrec)))
 
 -- | Can read with vkCmdCopy commands
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/PhysicalDeviceType.hs b/src-gen/Graphics/Vulkan/Types/Enum/PhysicalDeviceType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/PhysicalDeviceType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/PhysicalDeviceType.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -12,9 +10,7 @@
                              VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
                              VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_PHYSICAL_DEVICE_TYPE_CPU))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -25,40 +21,40 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceType VkPhysicalDeviceType registry at www.khronos.org>
 newtype VkPhysicalDeviceType = VkPhysicalDeviceType Int32
-                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                               deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkPhysicalDeviceType where
-        showsPrec _ VK_PHYSICAL_DEVICE_TYPE_OTHER
-          = showString "VK_PHYSICAL_DEVICE_TYPE_OTHER"
-        showsPrec _ VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
-          = showString "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"
-        showsPrec _ VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
-          = showString "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"
-        showsPrec _ VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU
-          = showString "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"
-        showsPrec _ VK_PHYSICAL_DEVICE_TYPE_CPU
-          = showString "VK_PHYSICAL_DEVICE_TYPE_CPU"
-        showsPrec p (VkPhysicalDeviceType x)
-          = showParen (p >= 11)
-              (showString "VkPhysicalDeviceType " . showsPrec 11 x)
+    showsPrec _ VK_PHYSICAL_DEVICE_TYPE_OTHER
+      = showString "VK_PHYSICAL_DEVICE_TYPE_OTHER"
+    showsPrec _ VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
+      = showString "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"
+    showsPrec _ VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
+      = showString "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"
+    showsPrec _ VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU
+      = showString "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"
+    showsPrec _ VK_PHYSICAL_DEVICE_TYPE_CPU
+      = showString "VK_PHYSICAL_DEVICE_TYPE_CPU"
+    showsPrec p (VkPhysicalDeviceType x)
+      = showParen (p >= 11)
+          (showString "VkPhysicalDeviceType " . showsPrec 11 x)
 
 instance Read VkPhysicalDeviceType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PHYSICAL_DEVICE_TYPE_OTHER",
-                   pure VK_PHYSICAL_DEVICE_TYPE_OTHER),
-                  ("VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU",
-                   pure VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU),
-                  ("VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU",
-                   pure VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU),
-                  ("VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU",
-                   pure VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU),
-                  ("VK_PHYSICAL_DEVICE_TYPE_CPU", pure VK_PHYSICAL_DEVICE_TYPE_CPU)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPhysicalDeviceType") >>
-                      (VkPhysicalDeviceType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_PHYSICAL_DEVICE_TYPE_OTHER",
+               pure VK_PHYSICAL_DEVICE_TYPE_OTHER),
+              ("VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU",
+               pure VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU),
+              ("VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU",
+               pure VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU),
+              ("VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU",
+               pure VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU),
+              ("VK_PHYSICAL_DEVICE_TYPE_CPU", pure VK_PHYSICAL_DEVICE_TYPE_CPU)]
+             +++
+             prec 10
+               (expectP (Ident "VkPhysicalDeviceType") >>
+                  (VkPhysicalDeviceType <$> step readPrec)))
 
 pattern VK_PHYSICAL_DEVICE_TYPE_OTHER :: VkPhysicalDeviceType
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Pipeline.hs b/src-gen/Graphics/Vulkan/Types/Enum/Pipeline.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Pipeline.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Pipeline.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -54,9 +52,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -68,29 +64,29 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineBindPoint VkPipelineBindPoint registry at www.khronos.org>
 newtype VkPipelineBindPoint = VkPipelineBindPoint Int32
-                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                              deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkPipelineBindPoint where
-        showsPrec _ VK_PIPELINE_BIND_POINT_GRAPHICS
-          = showString "VK_PIPELINE_BIND_POINT_GRAPHICS"
-        showsPrec _ VK_PIPELINE_BIND_POINT_COMPUTE
-          = showString "VK_PIPELINE_BIND_POINT_COMPUTE"
-        showsPrec p (VkPipelineBindPoint x)
-          = showParen (p >= 11)
-              (showString "VkPipelineBindPoint " . showsPrec 11 x)
+    showsPrec _ VK_PIPELINE_BIND_POINT_GRAPHICS
+      = showString "VK_PIPELINE_BIND_POINT_GRAPHICS"
+    showsPrec _ VK_PIPELINE_BIND_POINT_COMPUTE
+      = showString "VK_PIPELINE_BIND_POINT_COMPUTE"
+    showsPrec p (VkPipelineBindPoint x)
+      = showParen (p >= 11)
+          (showString "VkPipelineBindPoint " . showsPrec 11 x)
 
 instance Read VkPipelineBindPoint where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PIPELINE_BIND_POINT_GRAPHICS",
-                   pure VK_PIPELINE_BIND_POINT_GRAPHICS),
-                  ("VK_PIPELINE_BIND_POINT_COMPUTE",
-                   pure VK_PIPELINE_BIND_POINT_COMPUTE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPipelineBindPoint") >>
-                      (VkPipelineBindPoint <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_PIPELINE_BIND_POINT_GRAPHICS",
+               pure VK_PIPELINE_BIND_POINT_GRAPHICS),
+              ("VK_PIPELINE_BIND_POINT_COMPUTE",
+               pure VK_PIPELINE_BIND_POINT_COMPUTE)]
+             +++
+             prec 10
+               (expectP (Ident "VkPipelineBindPoint") >>
+                  (VkPipelineBindPoint <$> step readPrec)))
 
 pattern VK_PIPELINE_BIND_POINT_GRAPHICS :: VkPipelineBindPoint
 
@@ -101,41 +97,39 @@
 pattern VK_PIPELINE_BIND_POINT_COMPUTE = VkPipelineBindPoint 1
 
 newtype VkPipelineCacheCreateFlagBits = VkPipelineCacheCreateFlagBits VkFlags
-                                          deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                    FiniteBits, Storable, Real, Data, Generic)
+                                        deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineCacheCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineCacheCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineCacheCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 -- | type = @enum@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCacheHeaderVersion VkPipelineCacheHeaderVersion registry at www.khronos.org>
 newtype VkPipelineCacheHeaderVersion = VkPipelineCacheHeaderVersion Int32
-                                         deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                   Generic)
+                                       deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkPipelineCacheHeaderVersion where
-        showsPrec _ VK_PIPELINE_CACHE_HEADER_VERSION_ONE
-          = showString "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"
-        showsPrec p (VkPipelineCacheHeaderVersion x)
-          = showParen (p >= 11)
-              (showString "VkPipelineCacheHeaderVersion " . showsPrec 11 x)
+    showsPrec _ VK_PIPELINE_CACHE_HEADER_VERSION_ONE
+      = showString "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"
+    showsPrec p (VkPipelineCacheHeaderVersion x)
+      = showParen (p >= 11)
+          (showString "VkPipelineCacheHeaderVersion " . showsPrec 11 x)
 
 instance Read VkPipelineCacheHeaderVersion where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PIPELINE_CACHE_HEADER_VERSION_ONE",
-                   pure VK_PIPELINE_CACHE_HEADER_VERSION_ONE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPipelineCacheHeaderVersion") >>
-                      (VkPipelineCacheHeaderVersion <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_PIPELINE_CACHE_HEADER_VERSION_ONE",
+               pure VK_PIPELINE_CACHE_HEADER_VERSION_ONE)]
+             +++
+             prec 10
+               (expectP (Ident "VkPipelineCacheHeaderVersion") >>
+                  (VkPipelineCacheHeaderVersion <$> step readPrec)))
 
 pattern VK_PIPELINE_CACHE_HEADER_VERSION_ONE ::
         VkPipelineCacheHeaderVersion
@@ -144,21 +138,20 @@
         VkPipelineCacheHeaderVersion 1
 
 newtype VkPipelineColorBlendStateCreateFlagBits = VkPipelineColorBlendStateCreateFlagBits VkFlags
-                                                    deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                              Bits, FiniteBits, Storable, Real,
-                                                              Data, Generic)
+                                                  deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                            Storable)
 
 instance Show VkPipelineColorBlendStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineColorBlendStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineColorBlendStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineCreateBitmask (a ::
                                    FlagType) = VkPipelineCreateBitmask VkFlags
-                                                 deriving (Eq, Ord, Storable, Data, Generic)
+                                               deriving (Eq, Ord, Storable)
 
 type VkPipelineCreateFlags = VkPipelineCreateBitmask FlagMask
 
@@ -178,41 +171,31 @@
 
 deriving instance FiniteBits (VkPipelineCreateBitmask FlagMask)
 
-deriving instance Integral (VkPipelineCreateBitmask FlagMask)
-
-deriving instance Num (VkPipelineCreateBitmask FlagMask)
-
-deriving instance Bounded (VkPipelineCreateBitmask FlagMask)
-
-deriving instance Enum (VkPipelineCreateBitmask FlagMask)
-
-deriving instance Real (VkPipelineCreateBitmask FlagMask)
-
 instance Show (VkPipelineCreateBitmask a) where
-        showsPrec _ VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
-          = showString "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"
-        showsPrec _ VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
-          = showString "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"
-        showsPrec _ VK_PIPELINE_CREATE_DERIVATIVE_BIT
-          = showString "VK_PIPELINE_CREATE_DERIVATIVE_BIT"
-        showsPrec p (VkPipelineCreateBitmask x)
-          = showParen (p >= 11)
-              (showString "VkPipelineCreateBitmask " . showsPrec 11 x)
+    showsPrec _ VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
+      = showString "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"
+    showsPrec _ VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
+      = showString "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"
+    showsPrec _ VK_PIPELINE_CREATE_DERIVATIVE_BIT
+      = showString "VK_PIPELINE_CREATE_DERIVATIVE_BIT"
+    showsPrec p (VkPipelineCreateBitmask x)
+      = showParen (p >= 11)
+          (showString "VkPipelineCreateBitmask " . showsPrec 11 x)
 
 instance Read (VkPipelineCreateBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT",
-                   pure VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT),
-                  ("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT",
-                   pure VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT),
-                  ("VK_PIPELINE_CREATE_DERIVATIVE_BIT",
-                   pure VK_PIPELINE_CREATE_DERIVATIVE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPipelineCreateBitmask") >>
-                      (VkPipelineCreateBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT",
+               pure VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT),
+              ("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT",
+               pure VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT),
+              ("VK_PIPELINE_CREATE_DERIVATIVE_BIT",
+               pure VK_PIPELINE_CREATE_DERIVATIVE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkPipelineCreateBitmask") >>
+                  (VkPipelineCreateBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT ::
@@ -236,98 +219,89 @@
         VkPipelineCreateBitmask 4
 
 newtype VkPipelineDepthStencilStateCreateFlagBits = VkPipelineDepthStencilStateCreateFlagBits VkFlags
-                                                      deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                Integral, Bits, FiniteBits,
-                                                                Storable, Real, Data, Generic)
+                                                    deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                              Storable)
 
 instance Show VkPipelineDepthStencilStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineDepthStencilStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineDepthStencilStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineDynamicStateCreateFlagBits = VkPipelineDynamicStateCreateFlagBits VkFlags
-                                                 deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                           Bits, FiniteBits, Storable, Real, Data,
-                                                           Generic)
+                                               deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineDynamicStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineDynamicStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineDynamicStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineInputAssemblyStateCreateFlagBits = VkPipelineInputAssemblyStateCreateFlagBits VkFlags
-                                                       deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                 Integral, Bits, FiniteBits,
-                                                                 Storable, Real, Data, Generic)
+                                                     deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                               Storable)
 
 instance Show VkPipelineInputAssemblyStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineInputAssemblyStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineInputAssemblyStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineLayoutCreateFlagBits = VkPipelineLayoutCreateFlagBits VkFlags
-                                           deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                     FiniteBits, Storable, Real, Data, Generic)
+                                         deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineLayoutCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineLayoutCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineLayoutCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineMultisampleStateCreateFlagBits = VkPipelineMultisampleStateCreateFlagBits VkFlags
-                                                     deriving (Eq, Ord, Num, Bounded, Enum,
-                                                               Integral, Bits, FiniteBits, Storable,
-                                                               Real, Data, Generic)
+                                                   deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                             Storable)
 
 instance Show VkPipelineMultisampleStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineMultisampleStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineMultisampleStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineRasterizationStateCreateFlagBits = VkPipelineRasterizationStateCreateFlagBits VkFlags
-                                                       deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                 Integral, Bits, FiniteBits,
-                                                                 Storable, Real, Data, Generic)
+                                                     deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                               Storable)
 
 instance Show VkPipelineRasterizationStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineRasterizationStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineRasterizationStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineShaderStageCreateFlagBits = VkPipelineShaderStageCreateFlagBits VkFlags
-                                                deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                          Bits, FiniteBits, Storable, Real, Data,
-                                                          Generic)
+                                              deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineShaderStageCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineShaderStageCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineShaderStageCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineStageBitmask (a ::
                                   FlagType) = VkPipelineStageBitmask VkFlags
-                                                deriving (Eq, Ord, Storable, Data, Generic)
+                                              deriving (Eq, Ord, Storable)
 
 type VkPipelineStageFlags = VkPipelineStageBitmask FlagMask
 
@@ -347,96 +321,86 @@
 
 deriving instance FiniteBits (VkPipelineStageBitmask FlagMask)
 
-deriving instance Integral (VkPipelineStageBitmask FlagMask)
-
-deriving instance Num (VkPipelineStageBitmask FlagMask)
-
-deriving instance Bounded (VkPipelineStageBitmask FlagMask)
-
-deriving instance Enum (VkPipelineStageBitmask FlagMask)
-
-deriving instance Real (VkPipelineStageBitmask FlagMask)
-
 instance Show (VkPipelineStageBitmask a) where
-        showsPrec _ VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
-          = showString "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
-          = showString "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
-          = showString "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
-          = showString "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
-          = showString "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
-          = showString "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
-          = showString "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
-          = showString "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
-          = showString "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT
-          = showString "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
-          = showString "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT
-          = showString "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_TRANSFER_BIT
-          = showString "VK_PIPELINE_STAGE_TRANSFER_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
-          = showString "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_HOST_BIT
-          = showString "VK_PIPELINE_STAGE_HOST_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
-          = showString "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"
-        showsPrec _ VK_PIPELINE_STAGE_ALL_COMMANDS_BIT
-          = showString "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"
-        showsPrec p (VkPipelineStageBitmask x)
-          = showParen (p >= 11)
-              (showString "VkPipelineStageBitmask " . showsPrec 11 x)
+    showsPrec _ VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
+      = showString "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
+      = showString "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
+      = showString "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
+      = showString "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
+      = showString "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
+      = showString "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
+      = showString "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
+      = showString "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
+      = showString "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT
+      = showString "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
+      = showString "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT
+      = showString "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_TRANSFER_BIT
+      = showString "VK_PIPELINE_STAGE_TRANSFER_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
+      = showString "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_HOST_BIT
+      = showString "VK_PIPELINE_STAGE_HOST_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
+      = showString "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"
+    showsPrec _ VK_PIPELINE_STAGE_ALL_COMMANDS_BIT
+      = showString "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"
+    showsPrec p (VkPipelineStageBitmask x)
+      = showParen (p >= 11)
+          (showString "VkPipelineStageBitmask " . showsPrec 11 x)
 
 instance Read (VkPipelineStageBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT",
-                   pure VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT),
-                  ("VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT",
-                   pure VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT),
-                  ("VK_PIPELINE_STAGE_VERTEX_INPUT_BIT",
-                   pure VK_PIPELINE_STAGE_VERTEX_INPUT_BIT),
-                  ("VK_PIPELINE_STAGE_VERTEX_SHADER_BIT",
-                   pure VK_PIPELINE_STAGE_VERTEX_SHADER_BIT),
-                  ("VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT",
-                   pure VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT),
-                  ("VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT",
-                   pure VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT),
-                  ("VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT",
-                   pure VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT),
-                  ("VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT",
-                   pure VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT),
-                  ("VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT",
-                   pure VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT),
-                  ("VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT",
-                   pure VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT),
-                  ("VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT",
-                   pure VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT),
-                  ("VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT",
-                   pure VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT),
-                  ("VK_PIPELINE_STAGE_TRANSFER_BIT",
-                   pure VK_PIPELINE_STAGE_TRANSFER_BIT),
-                  ("VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT",
-                   pure VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT),
-                  ("VK_PIPELINE_STAGE_HOST_BIT", pure VK_PIPELINE_STAGE_HOST_BIT),
-                  ("VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT",
-                   pure VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT),
-                  ("VK_PIPELINE_STAGE_ALL_COMMANDS_BIT",
-                   pure VK_PIPELINE_STAGE_ALL_COMMANDS_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPipelineStageBitmask") >>
-                      (VkPipelineStageBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT",
+               pure VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT),
+              ("VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT",
+               pure VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT),
+              ("VK_PIPELINE_STAGE_VERTEX_INPUT_BIT",
+               pure VK_PIPELINE_STAGE_VERTEX_INPUT_BIT),
+              ("VK_PIPELINE_STAGE_VERTEX_SHADER_BIT",
+               pure VK_PIPELINE_STAGE_VERTEX_SHADER_BIT),
+              ("VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT",
+               pure VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT),
+              ("VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT",
+               pure VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT),
+              ("VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT",
+               pure VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT),
+              ("VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT",
+               pure VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT),
+              ("VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT",
+               pure VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT),
+              ("VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT",
+               pure VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT),
+              ("VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT",
+               pure VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT),
+              ("VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT",
+               pure VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT),
+              ("VK_PIPELINE_STAGE_TRANSFER_BIT",
+               pure VK_PIPELINE_STAGE_TRANSFER_BIT),
+              ("VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT",
+               pure VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT),
+              ("VK_PIPELINE_STAGE_HOST_BIT", pure VK_PIPELINE_STAGE_HOST_BIT),
+              ("VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT",
+               pure VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT),
+              ("VK_PIPELINE_STAGE_ALL_COMMANDS_BIT",
+               pure VK_PIPELINE_STAGE_ALL_COMMANDS_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkPipelineStageBitmask") >>
+                  (VkPipelineStageBitmask <$> step readPrec)))
 
 -- | Before subsequent commands are processed
 --
@@ -589,40 +553,36 @@
         VkPipelineStageBitmask 65536
 
 newtype VkPipelineTessellationStateCreateFlagBits = VkPipelineTessellationStateCreateFlagBits VkFlags
-                                                      deriving (Eq, Ord, Num, Bounded, Enum,
-                                                                Integral, Bits, FiniteBits,
-                                                                Storable, Real, Data, Generic)
+                                                    deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                              Storable)
 
 instance Show VkPipelineTessellationStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineTessellationStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineTessellationStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineVertexInputStateCreateFlagBits = VkPipelineVertexInputStateCreateFlagBits VkFlags
-                                                     deriving (Eq, Ord, Num, Bounded, Enum,
-                                                               Integral, Bits, FiniteBits, Storable,
-                                                               Real, Data, Generic)
+                                                   deriving (Eq, Ord, Enum, Bits, FiniteBits,
+                                                             Storable)
 
 instance Show VkPipelineVertexInputStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineVertexInputStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineVertexInputStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkPipelineViewportStateCreateFlagBits = VkPipelineViewportStateCreateFlagBits VkFlags
-                                                  deriving (Eq, Ord, Num, Bounded, Enum, Integral,
-                                                            Bits, FiniteBits, Storable, Real, Data,
-                                                            Generic)
+                                                deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPipelineViewportStateCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkPipelineViewportStateCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPipelineViewportStateCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/PointClippingBehavior.hs b/src-gen/Graphics/Vulkan/Types/Enum/PointClippingBehavior.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/PointClippingBehavior.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/PointClippingBehavior.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -13,9 +11,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags)
@@ -27,29 +23,29 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPointClippingBehavior VkPointClippingBehavior registry at www.khronos.org>
 newtype VkPointClippingBehavior = VkPointClippingBehavior Int32
-                                    deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                                  deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkPointClippingBehavior where
-        showsPrec _ VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
-          = showString "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"
-        showsPrec _ VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
-          = showString "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"
-        showsPrec p (VkPointClippingBehavior x)
-          = showParen (p >= 11)
-              (showString "VkPointClippingBehavior " . showsPrec 11 x)
+    showsPrec _ VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES
+      = showString "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"
+    showsPrec _ VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY
+      = showString "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"
+    showsPrec p (VkPointClippingBehavior x)
+      = showParen (p >= 11)
+          (showString "VkPointClippingBehavior " . showsPrec 11 x)
 
 instance Read VkPointClippingBehavior where
-        readPrec
-          = parens
-              (choose
-                 [("VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES",
-                   pure VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES),
-                  ("VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY",
-                   pure VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPointClippingBehavior") >>
-                      (VkPointClippingBehavior <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES",
+               pure VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES),
+              ("VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY",
+               pure VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY)]
+             +++
+             prec 10
+               (expectP (Ident "VkPointClippingBehavior") >>
+                  (VkPointClippingBehavior <$> step readPrec)))
 
 pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES ::
         VkPointClippingBehavior
@@ -64,13 +60,12 @@
         VkPointClippingBehavior 1
 
 newtype VkPointClippingBehaviorKHR = VkPointClippingBehaviorKHR VkFlags
-                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                 FiniteBits, Storable, Real, Data, Generic)
+                                     deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkPointClippingBehaviorKHR where
-        {-# INLINE show #-}
-        show (VkPointClippingBehaviorKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkPointClippingBehaviorKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/PolygonMode.hs b/src-gen/Graphics/Vulkan/Types/Enum/PolygonMode.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/PolygonMode.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/PolygonMode.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -9,9 +7,7 @@
        (VkPolygonMode(VkPolygonMode, VK_POLYGON_MODE_FILL,
                       VK_POLYGON_MODE_LINE, VK_POLYGON_MODE_POINT))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -22,30 +18,30 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPolygonMode VkPolygonMode registry at www.khronos.org>
 newtype VkPolygonMode = VkPolygonMode Int32
-                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                        deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkPolygonMode where
-        showsPrec _ VK_POLYGON_MODE_FILL
-          = showString "VK_POLYGON_MODE_FILL"
-        showsPrec _ VK_POLYGON_MODE_LINE
-          = showString "VK_POLYGON_MODE_LINE"
-        showsPrec _ VK_POLYGON_MODE_POINT
-          = showString "VK_POLYGON_MODE_POINT"
-        showsPrec p (VkPolygonMode x)
-          = showParen (p >= 11)
-              (showString "VkPolygonMode " . showsPrec 11 x)
+    showsPrec _ VK_POLYGON_MODE_FILL
+      = showString "VK_POLYGON_MODE_FILL"
+    showsPrec _ VK_POLYGON_MODE_LINE
+      = showString "VK_POLYGON_MODE_LINE"
+    showsPrec _ VK_POLYGON_MODE_POINT
+      = showString "VK_POLYGON_MODE_POINT"
+    showsPrec p (VkPolygonMode x)
+      = showParen (p >= 11)
+          (showString "VkPolygonMode " . showsPrec 11 x)
 
 instance Read VkPolygonMode where
-        readPrec
-          = parens
-              (choose
-                 [("VK_POLYGON_MODE_FILL", pure VK_POLYGON_MODE_FILL),
-                  ("VK_POLYGON_MODE_LINE", pure VK_POLYGON_MODE_LINE),
-                  ("VK_POLYGON_MODE_POINT", pure VK_POLYGON_MODE_POINT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPolygonMode") >>
-                      (VkPolygonMode <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_POLYGON_MODE_FILL", pure VK_POLYGON_MODE_FILL),
+              ("VK_POLYGON_MODE_LINE", pure VK_POLYGON_MODE_LINE),
+              ("VK_POLYGON_MODE_POINT", pure VK_POLYGON_MODE_POINT)]
+             +++
+             prec 10
+               (expectP (Ident "VkPolygonMode") >>
+                  (VkPolygonMode <$> step readPrec)))
 
 pattern VK_POLYGON_MODE_FILL :: VkPolygonMode
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/PresentModeKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/PresentModeKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/PresentModeKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/PresentModeKHR.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -10,9 +8,7 @@
                          VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_FIFO_KHR,
                          VK_PRESENT_MODE_FIFO_RELAXED_KHR))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -23,35 +19,35 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentModeKHR VkPresentModeKHR registry at www.khronos.org>
 newtype VkPresentModeKHR = VkPresentModeKHR Int32
-                             deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                           deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkPresentModeKHR where
-        showsPrec _ VK_PRESENT_MODE_IMMEDIATE_KHR
-          = showString "VK_PRESENT_MODE_IMMEDIATE_KHR"
-        showsPrec _ VK_PRESENT_MODE_MAILBOX_KHR
-          = showString "VK_PRESENT_MODE_MAILBOX_KHR"
-        showsPrec _ VK_PRESENT_MODE_FIFO_KHR
-          = showString "VK_PRESENT_MODE_FIFO_KHR"
-        showsPrec _ VK_PRESENT_MODE_FIFO_RELAXED_KHR
-          = showString "VK_PRESENT_MODE_FIFO_RELAXED_KHR"
-        showsPrec p (VkPresentModeKHR x)
-          = showParen (p >= 11)
-              (showString "VkPresentModeKHR " . showsPrec 11 x)
+    showsPrec _ VK_PRESENT_MODE_IMMEDIATE_KHR
+      = showString "VK_PRESENT_MODE_IMMEDIATE_KHR"
+    showsPrec _ VK_PRESENT_MODE_MAILBOX_KHR
+      = showString "VK_PRESENT_MODE_MAILBOX_KHR"
+    showsPrec _ VK_PRESENT_MODE_FIFO_KHR
+      = showString "VK_PRESENT_MODE_FIFO_KHR"
+    showsPrec _ VK_PRESENT_MODE_FIFO_RELAXED_KHR
+      = showString "VK_PRESENT_MODE_FIFO_RELAXED_KHR"
+    showsPrec p (VkPresentModeKHR x)
+      = showParen (p >= 11)
+          (showString "VkPresentModeKHR " . showsPrec 11 x)
 
 instance Read VkPresentModeKHR where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PRESENT_MODE_IMMEDIATE_KHR",
-                   pure VK_PRESENT_MODE_IMMEDIATE_KHR),
-                  ("VK_PRESENT_MODE_MAILBOX_KHR", pure VK_PRESENT_MODE_MAILBOX_KHR),
-                  ("VK_PRESENT_MODE_FIFO_KHR", pure VK_PRESENT_MODE_FIFO_KHR),
-                  ("VK_PRESENT_MODE_FIFO_RELAXED_KHR",
-                   pure VK_PRESENT_MODE_FIFO_RELAXED_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPresentModeKHR") >>
-                      (VkPresentModeKHR <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_PRESENT_MODE_IMMEDIATE_KHR",
+               pure VK_PRESENT_MODE_IMMEDIATE_KHR),
+              ("VK_PRESENT_MODE_MAILBOX_KHR", pure VK_PRESENT_MODE_MAILBOX_KHR),
+              ("VK_PRESENT_MODE_FIFO_KHR", pure VK_PRESENT_MODE_FIFO_KHR),
+              ("VK_PRESENT_MODE_FIFO_RELAXED_KHR",
+               pure VK_PRESENT_MODE_FIFO_RELAXED_KHR)]
+             +++
+             prec 10
+               (expectP (Ident "VkPresentModeKHR") >>
+                  (VkPresentModeKHR <$> step readPrec)))
 
 pattern VK_PRESENT_MODE_IMMEDIATE_KHR :: VkPresentModeKHR
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/PrimitiveTopology.hs b/src-gen/Graphics/Vulkan/Types/Enum/PrimitiveTopology.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/PrimitiveTopology.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/PrimitiveTopology.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -18,9 +16,7 @@
                             VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
                             VK_PRIMITIVE_TOPOLOGY_PATCH_LIST))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -31,65 +27,65 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPrimitiveTopology VkPrimitiveTopology registry at www.khronos.org>
 newtype VkPrimitiveTopology = VkPrimitiveTopology Int32
-                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                              deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkPrimitiveTopology where
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_POINT_LIST
-          = showString "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST
-          = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
-          = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
-          = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP
-          = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
-          = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
-          = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
-          = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
-          = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
-          = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"
-        showsPrec _ VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
-          = showString "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"
-        showsPrec p (VkPrimitiveTopology x)
-          = showParen (p >= 11)
-              (showString "VkPrimitiveTopology " . showsPrec 11 x)
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_POINT_LIST
+      = showString "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST
+      = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
+      = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
+      = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP
+      = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
+      = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
+      = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
+      = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
+      = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
+      = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"
+    showsPrec _ VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
+      = showString "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"
+    showsPrec p (VkPrimitiveTopology x)
+      = showParen (p >= 11)
+          (showString "VkPrimitiveTopology " . showsPrec 11 x)
 
 instance Read VkPrimitiveTopology where
-        readPrec
-          = parens
-              (choose
-                 [("VK_PRIMITIVE_TOPOLOGY_POINT_LIST",
-                   pure VK_PRIMITIVE_TOPOLOGY_POINT_LIST),
-                  ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST",
-                   pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST),
-                  ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP",
-                   pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP),
-                  ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST",
-                   pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST),
-                  ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP",
-                   pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP),
-                  ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN",
-                   pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN),
-                  ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY",
-                   pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY),
-                  ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY",
-                   pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY),
-                  ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY",
-                   pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY),
-                  ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY",
-                   pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY),
-                  ("VK_PRIMITIVE_TOPOLOGY_PATCH_LIST",
-                   pure VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkPrimitiveTopology") >>
-                      (VkPrimitiveTopology <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_PRIMITIVE_TOPOLOGY_POINT_LIST",
+               pure VK_PRIMITIVE_TOPOLOGY_POINT_LIST),
+              ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST",
+               pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST),
+              ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP",
+               pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP),
+              ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST",
+               pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST),
+              ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP",
+               pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP),
+              ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN",
+               pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN),
+              ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY",
+               pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY),
+              ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY",
+               pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY),
+              ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY",
+               pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY),
+              ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY",
+               pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY),
+              ("VK_PRIMITIVE_TOPOLOGY_PATCH_LIST",
+               pure VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)]
+             +++
+             prec 10
+               (expectP (Ident "VkPrimitiveTopology") >>
+                  (VkPrimitiveTopology <$> step readPrec)))
 
 pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST :: VkPrimitiveTopology
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Query.hs b/src-gen/Graphics/Vulkan/Types/Enum/Query.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Query.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Query.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -39,9 +37,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -51,7 +47,7 @@
 
 newtype VkQueryControlBitmask (a ::
                                  FlagType) = VkQueryControlBitmask VkFlags
-                                               deriving (Eq, Ord, Storable, Data, Generic)
+                                             deriving (Eq, Ord, Storable)
 
 type VkQueryControlFlags = VkQueryControlBitmask FlagMask
 
@@ -71,33 +67,23 @@
 
 deriving instance FiniteBits (VkQueryControlBitmask FlagMask)
 
-deriving instance Integral (VkQueryControlBitmask FlagMask)
-
-deriving instance Num (VkQueryControlBitmask FlagMask)
-
-deriving instance Bounded (VkQueryControlBitmask FlagMask)
-
-deriving instance Enum (VkQueryControlBitmask FlagMask)
-
-deriving instance Real (VkQueryControlBitmask FlagMask)
-
 instance Show (VkQueryControlBitmask a) where
-        showsPrec _ VK_QUERY_CONTROL_PRECISE_BIT
-          = showString "VK_QUERY_CONTROL_PRECISE_BIT"
-        showsPrec p (VkQueryControlBitmask x)
-          = showParen (p >= 11)
-              (showString "VkQueryControlBitmask " . showsPrec 11 x)
+    showsPrec _ VK_QUERY_CONTROL_PRECISE_BIT
+      = showString "VK_QUERY_CONTROL_PRECISE_BIT"
+    showsPrec p (VkQueryControlBitmask x)
+      = showParen (p >= 11)
+          (showString "VkQueryControlBitmask " . showsPrec 11 x)
 
 instance Read (VkQueryControlBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_QUERY_CONTROL_PRECISE_BIT",
-                   pure VK_QUERY_CONTROL_PRECISE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkQueryControlBitmask") >>
-                      (VkQueryControlBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_QUERY_CONTROL_PRECISE_BIT",
+               pure VK_QUERY_CONTROL_PRECISE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkQueryControlBitmask") >>
+                  (VkQueryControlBitmask <$> step readPrec)))
 
 -- | Require precise results to be collected by the query
 --
@@ -108,7 +94,7 @@
 
 newtype VkQueryPipelineStatisticBitmask (a ::
                                            FlagType) = VkQueryPipelineStatisticBitmask VkFlags
-                                                         deriving (Eq, Ord, Storable, Data, Generic)
+                                                       deriving (Eq, Ord, Storable)
 
 type VkQueryPipelineStatisticFlags =
      VkQueryPipelineStatisticBitmask FlagMask
@@ -133,94 +119,82 @@
 deriving instance
          FiniteBits (VkQueryPipelineStatisticBitmask FlagMask)
 
-deriving instance
-         Integral (VkQueryPipelineStatisticBitmask FlagMask)
-
-deriving instance Num (VkQueryPipelineStatisticBitmask FlagMask)
-
-deriving instance
-         Bounded (VkQueryPipelineStatisticBitmask FlagMask)
-
-deriving instance Enum (VkQueryPipelineStatisticBitmask FlagMask)
-
-deriving instance Real (VkQueryPipelineStatisticBitmask FlagMask)
-
 instance Show (VkQueryPipelineStatisticBitmask a) where
-        showsPrec _ VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"
-        showsPrec _
-          VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"
-        showsPrec _
-          VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"
-        showsPrec _
-          VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"
-        showsPrec _
-          VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"
-        showsPrec _ VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT
-          = showString "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"
-        showsPrec _ VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT
-          = showString "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"
-        showsPrec _
-          VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"
-        showsPrec _
-          VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"
-        showsPrec _
-          VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"
-        showsPrec _
-          VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
-          = showString
-              "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"
-        showsPrec p (VkQueryPipelineStatisticBitmask x)
-          = showParen (p >= 11)
-              (showString "VkQueryPipelineStatisticBitmask " . showsPrec 11 x)
+    showsPrec _ VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"
+    showsPrec _
+      VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"
+    showsPrec _
+      VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"
+    showsPrec _
+      VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"
+    showsPrec _
+      VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"
+    showsPrec _ VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT
+      = showString "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"
+    showsPrec _ VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT
+      = showString "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"
+    showsPrec _
+      VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"
+    showsPrec _
+      VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"
+    showsPrec _
+      VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"
+    showsPrec _
+      VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
+      = showString
+          "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"
+    showsPrec p (VkQueryPipelineStatisticBitmask x)
+      = showParen (p >= 11)
+          (showString "VkQueryPipelineStatisticBitmask " . showsPrec 11 x)
 
 instance Read (VkQueryPipelineStatisticBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT",
-                   pure
-                     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT",
-                   pure
-                     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT),
-                  ("VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT",
-                   pure VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkQueryPipelineStatisticBitmask") >>
-                      (VkQueryPipelineStatisticBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT",
+               pure
+                 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT",
+               pure
+                 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT),
+              ("VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT",
+               pure VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkQueryPipelineStatisticBitmask") >>
+                  (VkQueryPipelineStatisticBitmask <$> step readPrec)))
 
 -- | Optional
 --
@@ -322,20 +296,19 @@
         = VkQueryPipelineStatisticBitmask 1024
 
 newtype VkQueryPoolCreateFlagBits = VkQueryPoolCreateFlagBits VkFlags
-                                      deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                FiniteBits, Storable, Real, Data, Generic)
+                                    deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkQueryPoolCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkQueryPoolCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkQueryPoolCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkQueryResultBitmask (a ::
                                 FlagType) = VkQueryResultBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkQueryResultFlags = VkQueryResultBitmask FlagMask
 
@@ -355,42 +328,32 @@
 
 deriving instance FiniteBits (VkQueryResultBitmask FlagMask)
 
-deriving instance Integral (VkQueryResultBitmask FlagMask)
-
-deriving instance Num (VkQueryResultBitmask FlagMask)
-
-deriving instance Bounded (VkQueryResultBitmask FlagMask)
-
-deriving instance Enum (VkQueryResultBitmask FlagMask)
-
-deriving instance Real (VkQueryResultBitmask FlagMask)
-
 instance Show (VkQueryResultBitmask a) where
-        showsPrec _ VK_QUERY_RESULT_64_BIT
-          = showString "VK_QUERY_RESULT_64_BIT"
-        showsPrec _ VK_QUERY_RESULT_WAIT_BIT
-          = showString "VK_QUERY_RESULT_WAIT_BIT"
-        showsPrec _ VK_QUERY_RESULT_WITH_AVAILABILITY_BIT
-          = showString "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"
-        showsPrec _ VK_QUERY_RESULT_PARTIAL_BIT
-          = showString "VK_QUERY_RESULT_PARTIAL_BIT"
-        showsPrec p (VkQueryResultBitmask x)
-          = showParen (p >= 11)
-              (showString "VkQueryResultBitmask " . showsPrec 11 x)
+    showsPrec _ VK_QUERY_RESULT_64_BIT
+      = showString "VK_QUERY_RESULT_64_BIT"
+    showsPrec _ VK_QUERY_RESULT_WAIT_BIT
+      = showString "VK_QUERY_RESULT_WAIT_BIT"
+    showsPrec _ VK_QUERY_RESULT_WITH_AVAILABILITY_BIT
+      = showString "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"
+    showsPrec _ VK_QUERY_RESULT_PARTIAL_BIT
+      = showString "VK_QUERY_RESULT_PARTIAL_BIT"
+    showsPrec p (VkQueryResultBitmask x)
+      = showParen (p >= 11)
+          (showString "VkQueryResultBitmask " . showsPrec 11 x)
 
 instance Read (VkQueryResultBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_QUERY_RESULT_64_BIT", pure VK_QUERY_RESULT_64_BIT),
-                  ("VK_QUERY_RESULT_WAIT_BIT", pure VK_QUERY_RESULT_WAIT_BIT),
-                  ("VK_QUERY_RESULT_WITH_AVAILABILITY_BIT",
-                   pure VK_QUERY_RESULT_WITH_AVAILABILITY_BIT),
-                  ("VK_QUERY_RESULT_PARTIAL_BIT", pure VK_QUERY_RESULT_PARTIAL_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkQueryResultBitmask") >>
-                      (VkQueryResultBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_QUERY_RESULT_64_BIT", pure VK_QUERY_RESULT_64_BIT),
+              ("VK_QUERY_RESULT_WAIT_BIT", pure VK_QUERY_RESULT_WAIT_BIT),
+              ("VK_QUERY_RESULT_WITH_AVAILABILITY_BIT",
+               pure VK_QUERY_RESULT_WITH_AVAILABILITY_BIT),
+              ("VK_QUERY_RESULT_PARTIAL_BIT", pure VK_QUERY_RESULT_PARTIAL_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkQueryResultBitmask") >>
+                  (VkQueryResultBitmask <$> step readPrec)))
 
 -- | Results of the queries are written to the destination buffer as 64-bit values
 --
@@ -426,29 +389,29 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkQueryType VkQueryType registry at www.khronos.org>
 newtype VkQueryType = VkQueryType Int32
-                        deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                      deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkQueryType where
-        showsPrec _ VK_QUERY_TYPE_OCCLUSION
-          = showString "VK_QUERY_TYPE_OCCLUSION"
-        showsPrec _ VK_QUERY_TYPE_PIPELINE_STATISTICS
-          = showString "VK_QUERY_TYPE_PIPELINE_STATISTICS"
-        showsPrec _ VK_QUERY_TYPE_TIMESTAMP
-          = showString "VK_QUERY_TYPE_TIMESTAMP"
-        showsPrec p (VkQueryType x)
-          = showParen (p >= 11) (showString "VkQueryType " . showsPrec 11 x)
+    showsPrec _ VK_QUERY_TYPE_OCCLUSION
+      = showString "VK_QUERY_TYPE_OCCLUSION"
+    showsPrec _ VK_QUERY_TYPE_PIPELINE_STATISTICS
+      = showString "VK_QUERY_TYPE_PIPELINE_STATISTICS"
+    showsPrec _ VK_QUERY_TYPE_TIMESTAMP
+      = showString "VK_QUERY_TYPE_TIMESTAMP"
+    showsPrec p (VkQueryType x)
+      = showParen (p >= 11) (showString "VkQueryType " . showsPrec 11 x)
 
 instance Read VkQueryType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_QUERY_TYPE_OCCLUSION", pure VK_QUERY_TYPE_OCCLUSION),
-                  ("VK_QUERY_TYPE_PIPELINE_STATISTICS",
-                   pure VK_QUERY_TYPE_PIPELINE_STATISTICS),
-                  ("VK_QUERY_TYPE_TIMESTAMP", pure VK_QUERY_TYPE_TIMESTAMP)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkQueryType") >> (VkQueryType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_QUERY_TYPE_OCCLUSION", pure VK_QUERY_TYPE_OCCLUSION),
+              ("VK_QUERY_TYPE_PIPELINE_STATISTICS",
+               pure VK_QUERY_TYPE_PIPELINE_STATISTICS),
+              ("VK_QUERY_TYPE_TIMESTAMP", pure VK_QUERY_TYPE_TIMESTAMP)]
+             +++
+             prec 10
+               (expectP (Ident "VkQueryType") >> (VkQueryType <$> step readPrec)))
 
 pattern VK_QUERY_TYPE_OCCLUSION :: VkQueryType
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Queue.hs b/src-gen/Graphics/Vulkan/Types/Enum/Queue.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Queue.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Queue.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -21,9 +19,7 @@
                                  VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT))
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -32,7 +28,7 @@
 import Text.Read.Lex                   (Lexeme (..))
 
 newtype VkQueueBitmask (a :: FlagType) = VkQueueBitmask VkFlags
-                                           deriving (Eq, Ord, Storable, Data, Generic)
+                                         deriving (Eq, Ord, Storable)
 
 type VkQueueFlags = VkQueueBitmask FlagMask
 
@@ -50,41 +46,31 @@
 
 deriving instance FiniteBits (VkQueueBitmask FlagMask)
 
-deriving instance Integral (VkQueueBitmask FlagMask)
-
-deriving instance Num (VkQueueBitmask FlagMask)
-
-deriving instance Bounded (VkQueueBitmask FlagMask)
-
-deriving instance Enum (VkQueueBitmask FlagMask)
-
-deriving instance Real (VkQueueBitmask FlagMask)
-
 instance Show (VkQueueBitmask a) where
-        showsPrec _ VK_QUEUE_GRAPHICS_BIT
-          = showString "VK_QUEUE_GRAPHICS_BIT"
-        showsPrec _ VK_QUEUE_COMPUTE_BIT
-          = showString "VK_QUEUE_COMPUTE_BIT"
-        showsPrec _ VK_QUEUE_TRANSFER_BIT
-          = showString "VK_QUEUE_TRANSFER_BIT"
-        showsPrec _ VK_QUEUE_SPARSE_BINDING_BIT
-          = showString "VK_QUEUE_SPARSE_BINDING_BIT"
-        showsPrec p (VkQueueBitmask x)
-          = showParen (p >= 11)
-              (showString "VkQueueBitmask " . showsPrec 11 x)
+    showsPrec _ VK_QUEUE_GRAPHICS_BIT
+      = showString "VK_QUEUE_GRAPHICS_BIT"
+    showsPrec _ VK_QUEUE_COMPUTE_BIT
+      = showString "VK_QUEUE_COMPUTE_BIT"
+    showsPrec _ VK_QUEUE_TRANSFER_BIT
+      = showString "VK_QUEUE_TRANSFER_BIT"
+    showsPrec _ VK_QUEUE_SPARSE_BINDING_BIT
+      = showString "VK_QUEUE_SPARSE_BINDING_BIT"
+    showsPrec p (VkQueueBitmask x)
+      = showParen (p >= 11)
+          (showString "VkQueueBitmask " . showsPrec 11 x)
 
 instance Read (VkQueueBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_QUEUE_GRAPHICS_BIT", pure VK_QUEUE_GRAPHICS_BIT),
-                  ("VK_QUEUE_COMPUTE_BIT", pure VK_QUEUE_COMPUTE_BIT),
-                  ("VK_QUEUE_TRANSFER_BIT", pure VK_QUEUE_TRANSFER_BIT),
-                  ("VK_QUEUE_SPARSE_BINDING_BIT", pure VK_QUEUE_SPARSE_BINDING_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkQueueBitmask") >>
-                      (VkQueueBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_QUEUE_GRAPHICS_BIT", pure VK_QUEUE_GRAPHICS_BIT),
+              ("VK_QUEUE_COMPUTE_BIT", pure VK_QUEUE_COMPUTE_BIT),
+              ("VK_QUEUE_TRANSFER_BIT", pure VK_QUEUE_TRANSFER_BIT),
+              ("VK_QUEUE_SPARSE_BINDING_BIT", pure VK_QUEUE_SPARSE_BINDING_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkQueueBitmask") >>
+                  (VkQueueBitmask <$> step readPrec)))
 
 -- | Queue supports graphics operations
 --
@@ -118,37 +104,37 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkQueueGlobalPriorityEXT VkQueueGlobalPriorityEXT registry at www.khronos.org>
 newtype VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityEXT Int32
-                                     deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                                   deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkQueueGlobalPriorityEXT where
-        showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT
-          = showString "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"
-        showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT
-          = showString "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"
-        showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT
-          = showString "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"
-        showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
-          = showString "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"
-        showsPrec p (VkQueueGlobalPriorityEXT x)
-          = showParen (p >= 11)
-              (showString "VkQueueGlobalPriorityEXT " . showsPrec 11 x)
+    showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT
+      = showString "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"
+    showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT
+      = showString "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"
+    showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT
+      = showString "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"
+    showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
+      = showString "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"
+    showsPrec p (VkQueueGlobalPriorityEXT x)
+      = showParen (p >= 11)
+          (showString "VkQueueGlobalPriorityEXT " . showsPrec 11 x)
 
 instance Read VkQueueGlobalPriorityEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT",
-                   pure VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT),
-                  ("VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT",
-                   pure VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT),
-                  ("VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT",
-                   pure VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT),
-                  ("VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT",
-                   pure VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkQueueGlobalPriorityEXT") >>
-                      (VkQueueGlobalPriorityEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT",
+               pure VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT),
+              ("VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT",
+               pure VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT),
+              ("VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT",
+               pure VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT),
+              ("VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT",
+               pure VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkQueueGlobalPriorityEXT") >>
+                  (VkQueueGlobalPriorityEXT <$> step readPrec)))
 
 pattern VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT ::
         VkQueueGlobalPriorityEXT
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/RasterizationOrderAMD.hs b/src-gen/Graphics/Vulkan/Types/Enum/RasterizationOrderAMD.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/RasterizationOrderAMD.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/RasterizationOrderAMD.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -10,9 +8,7 @@
                                 VK_RASTERIZATION_ORDER_STRICT_AMD,
                                 VK_RASTERIZATION_ORDER_RELAXED_AMD))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -23,29 +19,29 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRasterizationOrderAMD VkRasterizationOrderAMD registry at www.khronos.org>
 newtype VkRasterizationOrderAMD = VkRasterizationOrderAMD Int32
-                                    deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                                  deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkRasterizationOrderAMD where
-        showsPrec _ VK_RASTERIZATION_ORDER_STRICT_AMD
-          = showString "VK_RASTERIZATION_ORDER_STRICT_AMD"
-        showsPrec _ VK_RASTERIZATION_ORDER_RELAXED_AMD
-          = showString "VK_RASTERIZATION_ORDER_RELAXED_AMD"
-        showsPrec p (VkRasterizationOrderAMD x)
-          = showParen (p >= 11)
-              (showString "VkRasterizationOrderAMD " . showsPrec 11 x)
+    showsPrec _ VK_RASTERIZATION_ORDER_STRICT_AMD
+      = showString "VK_RASTERIZATION_ORDER_STRICT_AMD"
+    showsPrec _ VK_RASTERIZATION_ORDER_RELAXED_AMD
+      = showString "VK_RASTERIZATION_ORDER_RELAXED_AMD"
+    showsPrec p (VkRasterizationOrderAMD x)
+      = showParen (p >= 11)
+          (showString "VkRasterizationOrderAMD " . showsPrec 11 x)
 
 instance Read VkRasterizationOrderAMD where
-        readPrec
-          = parens
-              (choose
-                 [("VK_RASTERIZATION_ORDER_STRICT_AMD",
-                   pure VK_RASTERIZATION_ORDER_STRICT_AMD),
-                  ("VK_RASTERIZATION_ORDER_RELAXED_AMD",
-                   pure VK_RASTERIZATION_ORDER_RELAXED_AMD)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkRasterizationOrderAMD") >>
-                      (VkRasterizationOrderAMD <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_RASTERIZATION_ORDER_STRICT_AMD",
+               pure VK_RASTERIZATION_ORDER_STRICT_AMD),
+              ("VK_RASTERIZATION_ORDER_RELAXED_AMD",
+               pure VK_RASTERIZATION_ORDER_RELAXED_AMD)]
+             +++
+             prec 10
+               (expectP (Ident "VkRasterizationOrderAMD") >>
+                  (VkRasterizationOrderAMD <$> step readPrec)))
 
 pattern VK_RASTERIZATION_ORDER_STRICT_AMD ::
         VkRasterizationOrderAMD
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/RenderPassCreateFlagBits.hs b/src-gen/Graphics/Vulkan/Types/Enum/RenderPassCreateFlagBits.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/RenderPassCreateFlagBits.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/RenderPassCreateFlagBits.hs
@@ -1,25 +1,20 @@
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE Strict                     #-}
 module Graphics.Vulkan.Types.Enum.RenderPassCreateFlagBits
        (VkRenderPassCreateFlagBits(..)) where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags)
 
 newtype VkRenderPassCreateFlagBits = VkRenderPassCreateFlagBits VkFlags
-                                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                 FiniteBits, Storable, Real, Data, Generic)
+                                     deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkRenderPassCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkRenderPassCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkRenderPassCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Result.hs b/src-gen/Graphics/Vulkan/Types/Enum/Result.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Result.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Result.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -15,9 +13,7 @@
                  VK_ERROR_INCOMPATIBLE_DRIVER, VK_ERROR_TOO_MANY_OBJECTS,
                  VK_ERROR_FORMAT_NOT_SUPPORTED, VK_ERROR_FRAGMENTED_POOL))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -31,73 +27,73 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkResult VkResult registry at www.khronos.org>
 newtype VkResult = VkResult Int32
-                     deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                   deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkResult where
-        showsPrec _ VK_SUCCESS = showString "VK_SUCCESS"
-        showsPrec _ VK_NOT_READY = showString "VK_NOT_READY"
-        showsPrec _ VK_TIMEOUT = showString "VK_TIMEOUT"
-        showsPrec _ VK_EVENT_SET = showString "VK_EVENT_SET"
-        showsPrec _ VK_EVENT_RESET = showString "VK_EVENT_RESET"
-        showsPrec _ VK_INCOMPLETE = showString "VK_INCOMPLETE"
-        showsPrec _ VK_ERROR_OUT_OF_HOST_MEMORY
-          = showString "VK_ERROR_OUT_OF_HOST_MEMORY"
-        showsPrec _ VK_ERROR_OUT_OF_DEVICE_MEMORY
-          = showString "VK_ERROR_OUT_OF_DEVICE_MEMORY"
-        showsPrec _ VK_ERROR_INITIALIZATION_FAILED
-          = showString "VK_ERROR_INITIALIZATION_FAILED"
-        showsPrec _ VK_ERROR_DEVICE_LOST
-          = showString "VK_ERROR_DEVICE_LOST"
-        showsPrec _ VK_ERROR_MEMORY_MAP_FAILED
-          = showString "VK_ERROR_MEMORY_MAP_FAILED"
-        showsPrec _ VK_ERROR_LAYER_NOT_PRESENT
-          = showString "VK_ERROR_LAYER_NOT_PRESENT"
-        showsPrec _ VK_ERROR_EXTENSION_NOT_PRESENT
-          = showString "VK_ERROR_EXTENSION_NOT_PRESENT"
-        showsPrec _ VK_ERROR_FEATURE_NOT_PRESENT
-          = showString "VK_ERROR_FEATURE_NOT_PRESENT"
-        showsPrec _ VK_ERROR_INCOMPATIBLE_DRIVER
-          = showString "VK_ERROR_INCOMPATIBLE_DRIVER"
-        showsPrec _ VK_ERROR_TOO_MANY_OBJECTS
-          = showString "VK_ERROR_TOO_MANY_OBJECTS"
-        showsPrec _ VK_ERROR_FORMAT_NOT_SUPPORTED
-          = showString "VK_ERROR_FORMAT_NOT_SUPPORTED"
-        showsPrec _ VK_ERROR_FRAGMENTED_POOL
-          = showString "VK_ERROR_FRAGMENTED_POOL"
-        showsPrec p (VkResult x)
-          = showParen (p >= 11) (showString "VkResult " . showsPrec 11 x)
+    showsPrec _ VK_SUCCESS = showString "VK_SUCCESS"
+    showsPrec _ VK_NOT_READY = showString "VK_NOT_READY"
+    showsPrec _ VK_TIMEOUT = showString "VK_TIMEOUT"
+    showsPrec _ VK_EVENT_SET = showString "VK_EVENT_SET"
+    showsPrec _ VK_EVENT_RESET = showString "VK_EVENT_RESET"
+    showsPrec _ VK_INCOMPLETE = showString "VK_INCOMPLETE"
+    showsPrec _ VK_ERROR_OUT_OF_HOST_MEMORY
+      = showString "VK_ERROR_OUT_OF_HOST_MEMORY"
+    showsPrec _ VK_ERROR_OUT_OF_DEVICE_MEMORY
+      = showString "VK_ERROR_OUT_OF_DEVICE_MEMORY"
+    showsPrec _ VK_ERROR_INITIALIZATION_FAILED
+      = showString "VK_ERROR_INITIALIZATION_FAILED"
+    showsPrec _ VK_ERROR_DEVICE_LOST
+      = showString "VK_ERROR_DEVICE_LOST"
+    showsPrec _ VK_ERROR_MEMORY_MAP_FAILED
+      = showString "VK_ERROR_MEMORY_MAP_FAILED"
+    showsPrec _ VK_ERROR_LAYER_NOT_PRESENT
+      = showString "VK_ERROR_LAYER_NOT_PRESENT"
+    showsPrec _ VK_ERROR_EXTENSION_NOT_PRESENT
+      = showString "VK_ERROR_EXTENSION_NOT_PRESENT"
+    showsPrec _ VK_ERROR_FEATURE_NOT_PRESENT
+      = showString "VK_ERROR_FEATURE_NOT_PRESENT"
+    showsPrec _ VK_ERROR_INCOMPATIBLE_DRIVER
+      = showString "VK_ERROR_INCOMPATIBLE_DRIVER"
+    showsPrec _ VK_ERROR_TOO_MANY_OBJECTS
+      = showString "VK_ERROR_TOO_MANY_OBJECTS"
+    showsPrec _ VK_ERROR_FORMAT_NOT_SUPPORTED
+      = showString "VK_ERROR_FORMAT_NOT_SUPPORTED"
+    showsPrec _ VK_ERROR_FRAGMENTED_POOL
+      = showString "VK_ERROR_FRAGMENTED_POOL"
+    showsPrec p (VkResult x)
+      = showParen (p >= 11) (showString "VkResult " . showsPrec 11 x)
 
 instance Read VkResult where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SUCCESS", pure VK_SUCCESS),
-                  ("VK_NOT_READY", pure VK_NOT_READY),
-                  ("VK_TIMEOUT", pure VK_TIMEOUT),
-                  ("VK_EVENT_SET", pure VK_EVENT_SET),
-                  ("VK_EVENT_RESET", pure VK_EVENT_RESET),
-                  ("VK_INCOMPLETE", pure VK_INCOMPLETE),
-                  ("VK_ERROR_OUT_OF_HOST_MEMORY", pure VK_ERROR_OUT_OF_HOST_MEMORY),
-                  ("VK_ERROR_OUT_OF_DEVICE_MEMORY",
-                   pure VK_ERROR_OUT_OF_DEVICE_MEMORY),
-                  ("VK_ERROR_INITIALIZATION_FAILED",
-                   pure VK_ERROR_INITIALIZATION_FAILED),
-                  ("VK_ERROR_DEVICE_LOST", pure VK_ERROR_DEVICE_LOST),
-                  ("VK_ERROR_MEMORY_MAP_FAILED", pure VK_ERROR_MEMORY_MAP_FAILED),
-                  ("VK_ERROR_LAYER_NOT_PRESENT", pure VK_ERROR_LAYER_NOT_PRESENT),
-                  ("VK_ERROR_EXTENSION_NOT_PRESENT",
-                   pure VK_ERROR_EXTENSION_NOT_PRESENT),
-                  ("VK_ERROR_FEATURE_NOT_PRESENT",
-                   pure VK_ERROR_FEATURE_NOT_PRESENT),
-                  ("VK_ERROR_INCOMPATIBLE_DRIVER",
-                   pure VK_ERROR_INCOMPATIBLE_DRIVER),
-                  ("VK_ERROR_TOO_MANY_OBJECTS", pure VK_ERROR_TOO_MANY_OBJECTS),
-                  ("VK_ERROR_FORMAT_NOT_SUPPORTED",
-                   pure VK_ERROR_FORMAT_NOT_SUPPORTED),
-                  ("VK_ERROR_FRAGMENTED_POOL", pure VK_ERROR_FRAGMENTED_POOL)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkResult") >> (VkResult <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SUCCESS", pure VK_SUCCESS),
+              ("VK_NOT_READY", pure VK_NOT_READY),
+              ("VK_TIMEOUT", pure VK_TIMEOUT),
+              ("VK_EVENT_SET", pure VK_EVENT_SET),
+              ("VK_EVENT_RESET", pure VK_EVENT_RESET),
+              ("VK_INCOMPLETE", pure VK_INCOMPLETE),
+              ("VK_ERROR_OUT_OF_HOST_MEMORY", pure VK_ERROR_OUT_OF_HOST_MEMORY),
+              ("VK_ERROR_OUT_OF_DEVICE_MEMORY",
+               pure VK_ERROR_OUT_OF_DEVICE_MEMORY),
+              ("VK_ERROR_INITIALIZATION_FAILED",
+               pure VK_ERROR_INITIALIZATION_FAILED),
+              ("VK_ERROR_DEVICE_LOST", pure VK_ERROR_DEVICE_LOST),
+              ("VK_ERROR_MEMORY_MAP_FAILED", pure VK_ERROR_MEMORY_MAP_FAILED),
+              ("VK_ERROR_LAYER_NOT_PRESENT", pure VK_ERROR_LAYER_NOT_PRESENT),
+              ("VK_ERROR_EXTENSION_NOT_PRESENT",
+               pure VK_ERROR_EXTENSION_NOT_PRESENT),
+              ("VK_ERROR_FEATURE_NOT_PRESENT",
+               pure VK_ERROR_FEATURE_NOT_PRESENT),
+              ("VK_ERROR_INCOMPATIBLE_DRIVER",
+               pure VK_ERROR_INCOMPATIBLE_DRIVER),
+              ("VK_ERROR_TOO_MANY_OBJECTS", pure VK_ERROR_TOO_MANY_OBJECTS),
+              ("VK_ERROR_FORMAT_NOT_SUPPORTED",
+               pure VK_ERROR_FORMAT_NOT_SUPPORTED),
+              ("VK_ERROR_FRAGMENTED_POOL", pure VK_ERROR_FRAGMENTED_POOL)]
+             +++
+             prec 10
+               (expectP (Ident "VkResult") >> (VkResult <$> step readPrec)))
 
 -- | Command completed successfully
 pattern VK_SUCCESS :: VkResult
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/SampleCountFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/SampleCountFlags.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/SampleCountFlags.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/SampleCountFlags.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -18,9 +16,7 @@
         VkSampleCountFlags, VkSampleCountFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -30,7 +26,7 @@
 
 newtype VkSampleCountBitmask (a ::
                                 FlagType) = VkSampleCountBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkSampleCountFlags = VkSampleCountBitmask FlagMask
 
@@ -50,50 +46,40 @@
 
 deriving instance FiniteBits (VkSampleCountBitmask FlagMask)
 
-deriving instance Integral (VkSampleCountBitmask FlagMask)
-
-deriving instance Num (VkSampleCountBitmask FlagMask)
-
-deriving instance Bounded (VkSampleCountBitmask FlagMask)
-
-deriving instance Enum (VkSampleCountBitmask FlagMask)
-
-deriving instance Real (VkSampleCountBitmask FlagMask)
-
 instance Show (VkSampleCountBitmask a) where
-        showsPrec _ VK_SAMPLE_COUNT_1_BIT
-          = showString "VK_SAMPLE_COUNT_1_BIT"
-        showsPrec _ VK_SAMPLE_COUNT_2_BIT
-          = showString "VK_SAMPLE_COUNT_2_BIT"
-        showsPrec _ VK_SAMPLE_COUNT_4_BIT
-          = showString "VK_SAMPLE_COUNT_4_BIT"
-        showsPrec _ VK_SAMPLE_COUNT_8_BIT
-          = showString "VK_SAMPLE_COUNT_8_BIT"
-        showsPrec _ VK_SAMPLE_COUNT_16_BIT
-          = showString "VK_SAMPLE_COUNT_16_BIT"
-        showsPrec _ VK_SAMPLE_COUNT_32_BIT
-          = showString "VK_SAMPLE_COUNT_32_BIT"
-        showsPrec _ VK_SAMPLE_COUNT_64_BIT
-          = showString "VK_SAMPLE_COUNT_64_BIT"
-        showsPrec p (VkSampleCountBitmask x)
-          = showParen (p >= 11)
-              (showString "VkSampleCountBitmask " . showsPrec 11 x)
+    showsPrec _ VK_SAMPLE_COUNT_1_BIT
+      = showString "VK_SAMPLE_COUNT_1_BIT"
+    showsPrec _ VK_SAMPLE_COUNT_2_BIT
+      = showString "VK_SAMPLE_COUNT_2_BIT"
+    showsPrec _ VK_SAMPLE_COUNT_4_BIT
+      = showString "VK_SAMPLE_COUNT_4_BIT"
+    showsPrec _ VK_SAMPLE_COUNT_8_BIT
+      = showString "VK_SAMPLE_COUNT_8_BIT"
+    showsPrec _ VK_SAMPLE_COUNT_16_BIT
+      = showString "VK_SAMPLE_COUNT_16_BIT"
+    showsPrec _ VK_SAMPLE_COUNT_32_BIT
+      = showString "VK_SAMPLE_COUNT_32_BIT"
+    showsPrec _ VK_SAMPLE_COUNT_64_BIT
+      = showString "VK_SAMPLE_COUNT_64_BIT"
+    showsPrec p (VkSampleCountBitmask x)
+      = showParen (p >= 11)
+          (showString "VkSampleCountBitmask " . showsPrec 11 x)
 
 instance Read (VkSampleCountBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SAMPLE_COUNT_1_BIT", pure VK_SAMPLE_COUNT_1_BIT),
-                  ("VK_SAMPLE_COUNT_2_BIT", pure VK_SAMPLE_COUNT_2_BIT),
-                  ("VK_SAMPLE_COUNT_4_BIT", pure VK_SAMPLE_COUNT_4_BIT),
-                  ("VK_SAMPLE_COUNT_8_BIT", pure VK_SAMPLE_COUNT_8_BIT),
-                  ("VK_SAMPLE_COUNT_16_BIT", pure VK_SAMPLE_COUNT_16_BIT),
-                  ("VK_SAMPLE_COUNT_32_BIT", pure VK_SAMPLE_COUNT_32_BIT),
-                  ("VK_SAMPLE_COUNT_64_BIT", pure VK_SAMPLE_COUNT_64_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSampleCountBitmask") >>
-                      (VkSampleCountBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SAMPLE_COUNT_1_BIT", pure VK_SAMPLE_COUNT_1_BIT),
+              ("VK_SAMPLE_COUNT_2_BIT", pure VK_SAMPLE_COUNT_2_BIT),
+              ("VK_SAMPLE_COUNT_4_BIT", pure VK_SAMPLE_COUNT_4_BIT),
+              ("VK_SAMPLE_COUNT_8_BIT", pure VK_SAMPLE_COUNT_8_BIT),
+              ("VK_SAMPLE_COUNT_16_BIT", pure VK_SAMPLE_COUNT_16_BIT),
+              ("VK_SAMPLE_COUNT_32_BIT", pure VK_SAMPLE_COUNT_32_BIT),
+              ("VK_SAMPLE_COUNT_64_BIT", pure VK_SAMPLE_COUNT_64_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkSampleCountBitmask") >>
+                  (VkSampleCountBitmask <$> step readPrec)))
 
 -- | Sample count 1 supported
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Sampler.hs b/src-gen/Graphics/Vulkan/Types/Enum/Sampler.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Sampler.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Sampler.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -32,9 +30,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags)
@@ -46,37 +42,37 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerAddressMode VkSamplerAddressMode registry at www.khronos.org>
 newtype VkSamplerAddressMode = VkSamplerAddressMode Int32
-                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                               deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkSamplerAddressMode where
-        showsPrec _ VK_SAMPLER_ADDRESS_MODE_REPEAT
-          = showString "VK_SAMPLER_ADDRESS_MODE_REPEAT"
-        showsPrec _ VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT
-          = showString "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"
-        showsPrec _ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
-          = showString "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"
-        showsPrec _ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
-          = showString "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"
-        showsPrec p (VkSamplerAddressMode x)
-          = showParen (p >= 11)
-              (showString "VkSamplerAddressMode " . showsPrec 11 x)
+    showsPrec _ VK_SAMPLER_ADDRESS_MODE_REPEAT
+      = showString "VK_SAMPLER_ADDRESS_MODE_REPEAT"
+    showsPrec _ VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT
+      = showString "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"
+    showsPrec _ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
+      = showString "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"
+    showsPrec _ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
+      = showString "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"
+    showsPrec p (VkSamplerAddressMode x)
+      = showParen (p >= 11)
+          (showString "VkSamplerAddressMode " . showsPrec 11 x)
 
 instance Read VkSamplerAddressMode where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SAMPLER_ADDRESS_MODE_REPEAT",
-                   pure VK_SAMPLER_ADDRESS_MODE_REPEAT),
-                  ("VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT",
-                   pure VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT),
-                  ("VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE",
-                   pure VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE),
-                  ("VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER",
-                   pure VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSamplerAddressMode") >>
-                      (VkSamplerAddressMode <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SAMPLER_ADDRESS_MODE_REPEAT",
+               pure VK_SAMPLER_ADDRESS_MODE_REPEAT),
+              ("VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT",
+               pure VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT),
+              ("VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE",
+               pure VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE),
+              ("VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER",
+               pure VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER)]
+             +++
+             prec 10
+               (expectP (Ident "VkSamplerAddressMode") >>
+                  (VkSamplerAddressMode <$> step readPrec)))
 
 pattern VK_SAMPLER_ADDRESS_MODE_REPEAT :: VkSamplerAddressMode
 
@@ -101,44 +97,43 @@
         VkSamplerAddressMode 3
 
 newtype VkSamplerCreateFlagBits = VkSamplerCreateFlagBits VkFlags
-                                    deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                              FiniteBits, Storable, Real, Data, Generic)
+                                  deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkSamplerCreateFlagBits where
-        {-# INLINE show #-}
-        show (VkSamplerCreateFlagBits x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkSamplerCreateFlagBits where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 -- | type = @enum@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerMipmapMode VkSamplerMipmapMode registry at www.khronos.org>
 newtype VkSamplerMipmapMode = VkSamplerMipmapMode Int32
-                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                              deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkSamplerMipmapMode where
-        showsPrec _ VK_SAMPLER_MIPMAP_MODE_NEAREST
-          = showString "VK_SAMPLER_MIPMAP_MODE_NEAREST"
-        showsPrec _ VK_SAMPLER_MIPMAP_MODE_LINEAR
-          = showString "VK_SAMPLER_MIPMAP_MODE_LINEAR"
-        showsPrec p (VkSamplerMipmapMode x)
-          = showParen (p >= 11)
-              (showString "VkSamplerMipmapMode " . showsPrec 11 x)
+    showsPrec _ VK_SAMPLER_MIPMAP_MODE_NEAREST
+      = showString "VK_SAMPLER_MIPMAP_MODE_NEAREST"
+    showsPrec _ VK_SAMPLER_MIPMAP_MODE_LINEAR
+      = showString "VK_SAMPLER_MIPMAP_MODE_LINEAR"
+    showsPrec p (VkSamplerMipmapMode x)
+      = showParen (p >= 11)
+          (showString "VkSamplerMipmapMode " . showsPrec 11 x)
 
 instance Read VkSamplerMipmapMode where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SAMPLER_MIPMAP_MODE_NEAREST",
-                   pure VK_SAMPLER_MIPMAP_MODE_NEAREST),
-                  ("VK_SAMPLER_MIPMAP_MODE_LINEAR",
-                   pure VK_SAMPLER_MIPMAP_MODE_LINEAR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSamplerMipmapMode") >>
-                      (VkSamplerMipmapMode <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SAMPLER_MIPMAP_MODE_NEAREST",
+               pure VK_SAMPLER_MIPMAP_MODE_NEAREST),
+              ("VK_SAMPLER_MIPMAP_MODE_LINEAR",
+               pure VK_SAMPLER_MIPMAP_MODE_LINEAR)]
+             +++
+             prec 10
+               (expectP (Ident "VkSamplerMipmapMode") >>
+                  (VkSamplerMipmapMode <$> step readPrec)))
 
 -- | Choose nearest mip level
 pattern VK_SAMPLER_MIPMAP_MODE_NEAREST :: VkSamplerMipmapMode
@@ -154,34 +149,33 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerReductionModeEXT VkSamplerReductionModeEXT registry at www.khronos.org>
 newtype VkSamplerReductionModeEXT = VkSamplerReductionModeEXT Int32
-                                      deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                Generic)
+                                    deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkSamplerReductionModeEXT where
-        showsPrec _ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
-          = showString "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT"
-        showsPrec _ VK_SAMPLER_REDUCTION_MODE_MIN_EXT
-          = showString "VK_SAMPLER_REDUCTION_MODE_MIN_EXT"
-        showsPrec _ VK_SAMPLER_REDUCTION_MODE_MAX_EXT
-          = showString "VK_SAMPLER_REDUCTION_MODE_MAX_EXT"
-        showsPrec p (VkSamplerReductionModeEXT x)
-          = showParen (p >= 11)
-              (showString "VkSamplerReductionModeEXT " . showsPrec 11 x)
+    showsPrec _ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
+      = showString "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT"
+    showsPrec _ VK_SAMPLER_REDUCTION_MODE_MIN_EXT
+      = showString "VK_SAMPLER_REDUCTION_MODE_MIN_EXT"
+    showsPrec _ VK_SAMPLER_REDUCTION_MODE_MAX_EXT
+      = showString "VK_SAMPLER_REDUCTION_MODE_MAX_EXT"
+    showsPrec p (VkSamplerReductionModeEXT x)
+      = showParen (p >= 11)
+          (showString "VkSamplerReductionModeEXT " . showsPrec 11 x)
 
 instance Read VkSamplerReductionModeEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT",
-                   pure VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT),
-                  ("VK_SAMPLER_REDUCTION_MODE_MIN_EXT",
-                   pure VK_SAMPLER_REDUCTION_MODE_MIN_EXT),
-                  ("VK_SAMPLER_REDUCTION_MODE_MAX_EXT",
-                   pure VK_SAMPLER_REDUCTION_MODE_MAX_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSamplerReductionModeEXT") >>
-                      (VkSamplerReductionModeEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT",
+               pure VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT),
+              ("VK_SAMPLER_REDUCTION_MODE_MIN_EXT",
+               pure VK_SAMPLER_REDUCTION_MODE_MIN_EXT),
+              ("VK_SAMPLER_REDUCTION_MODE_MAX_EXT",
+               pure VK_SAMPLER_REDUCTION_MODE_MAX_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkSamplerReductionModeEXT") >>
+                  (VkSamplerReductionModeEXT <$> step readPrec)))
 
 pattern VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT ::
         VkSamplerReductionModeEXT
@@ -205,42 +199,41 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversion registry at www.khronos.org>
 newtype VkSamplerYcbcrModelConversion = VkSamplerYcbcrModelConversion Int32
-                                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                    Generic)
+                                        deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkSamplerYcbcrModelConversion where
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"
-        showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
-          = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"
-        showsPrec p (VkSamplerYcbcrModelConversion x)
-          = showParen (p >= 11)
-              (showString "VkSamplerYcbcrModelConversion " . showsPrec 11 x)
+    showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY
+      = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"
+    showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY
+      = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"
+    showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709
+      = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"
+    showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601
+      = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"
+    showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020
+      = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"
+    showsPrec p (VkSamplerYcbcrModelConversion x)
+      = showParen (p >= 11)
+          (showString "VkSamplerYcbcrModelConversion " . showsPrec 11 x)
 
 instance Read VkSamplerYcbcrModelConversion where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY),
-                  ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY),
-                  ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709),
-                  ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601),
-                  ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020",
-                   pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSamplerYcbcrModelConversion") >>
-                      (VkSamplerYcbcrModelConversion <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY",
+               pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY),
+              ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY",
+               pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY),
+              ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709",
+               pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709),
+              ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601",
+               pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601),
+              ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020",
+               pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020)]
+             +++
+             prec 10
+               (expectP (Ident "VkSamplerYcbcrModelConversion") >>
+                  (VkSamplerYcbcrModelConversion <$> step readPrec)))
 
 pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY ::
         VkSamplerYcbcrModelConversion
@@ -277,44 +270,43 @@
         VkSamplerYcbcrModelConversion 4
 
 newtype VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversionKHR VkFlags
-                                             deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                       FiniteBits, Storable, Real, Data, Generic)
+                                           deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkSamplerYcbcrModelConversionKHR where
-        {-# INLINE show #-}
-        show (VkSamplerYcbcrModelConversionKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkSamplerYcbcrModelConversionKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 -- | type = @enum@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrRange VkSamplerYcbcrRange registry at www.khronos.org>
 newtype VkSamplerYcbcrRange = VkSamplerYcbcrRange Int32
-                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                              deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkSamplerYcbcrRange where
-        showsPrec _ VK_SAMPLER_YCBCR_RANGE_ITU_FULL
-          = showString "VK_SAMPLER_YCBCR_RANGE_ITU_FULL"
-        showsPrec _ VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
-          = showString "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"
-        showsPrec p (VkSamplerYcbcrRange x)
-          = showParen (p >= 11)
-              (showString "VkSamplerYcbcrRange " . showsPrec 11 x)
+    showsPrec _ VK_SAMPLER_YCBCR_RANGE_ITU_FULL
+      = showString "VK_SAMPLER_YCBCR_RANGE_ITU_FULL"
+    showsPrec _ VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
+      = showString "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"
+    showsPrec p (VkSamplerYcbcrRange x)
+      = showParen (p >= 11)
+          (showString "VkSamplerYcbcrRange " . showsPrec 11 x)
 
 instance Read VkSamplerYcbcrRange where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SAMPLER_YCBCR_RANGE_ITU_FULL",
-                   pure VK_SAMPLER_YCBCR_RANGE_ITU_FULL),
-                  ("VK_SAMPLER_YCBCR_RANGE_ITU_NARROW",
-                   pure VK_SAMPLER_YCBCR_RANGE_ITU_NARROW)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSamplerYcbcrRange") >>
-                      (VkSamplerYcbcrRange <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SAMPLER_YCBCR_RANGE_ITU_FULL",
+               pure VK_SAMPLER_YCBCR_RANGE_ITU_FULL),
+              ("VK_SAMPLER_YCBCR_RANGE_ITU_NARROW",
+               pure VK_SAMPLER_YCBCR_RANGE_ITU_NARROW)]
+             +++
+             prec 10
+               (expectP (Ident "VkSamplerYcbcrRange") >>
+                  (VkSamplerYcbcrRange <$> step readPrec)))
 
 -- | Luma 0..1 maps to 0..255, chroma -0.5..0.5 to 1..255 (clamped)
 pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL :: VkSamplerYcbcrRange
@@ -327,13 +319,12 @@
 pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = VkSamplerYcbcrRange 1
 
 newtype VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRangeKHR VkFlags
-                                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                             FiniteBits, Storable, Real, Data, Generic)
+                                 deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkSamplerYcbcrRangeKHR where
-        {-# INLINE show #-}
-        show (VkSamplerYcbcrRangeKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkSamplerYcbcrRangeKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/SemaphoreImportFlag.hs b/src-gen/Graphics/Vulkan/Types/Enum/SemaphoreImportFlag.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/SemaphoreImportFlag.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/SemaphoreImportFlag.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -18,9 +16,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -29,20 +25,19 @@
 import Text.Read.Lex                   (Lexeme (..))
 
 newtype VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBitsKHR VkFlags
-                                         deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                   FiniteBits, Storable, Real, Data, Generic)
+                                       deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkSemaphoreImportFlagBitsKHR where
-        {-# INLINE show #-}
-        show (VkSemaphoreImportFlagBitsKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkSemaphoreImportFlagBitsKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
 
 newtype VkSemaphoreImportBitmask (a ::
                                     FlagType) = VkSemaphoreImportBitmask VkFlags
-                                                  deriving (Eq, Ord, Storable, Data, Generic)
+                                                deriving (Eq, Ord, Storable)
 
 type VkSemaphoreImportFlags = VkSemaphoreImportBitmask FlagMask
 
@@ -62,33 +57,23 @@
 
 deriving instance FiniteBits (VkSemaphoreImportBitmask FlagMask)
 
-deriving instance Integral (VkSemaphoreImportBitmask FlagMask)
-
-deriving instance Num (VkSemaphoreImportBitmask FlagMask)
-
-deriving instance Bounded (VkSemaphoreImportBitmask FlagMask)
-
-deriving instance Enum (VkSemaphoreImportBitmask FlagMask)
-
-deriving instance Real (VkSemaphoreImportBitmask FlagMask)
-
 instance Show (VkSemaphoreImportBitmask a) where
-        showsPrec _ VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
-          = showString "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"
-        showsPrec p (VkSemaphoreImportBitmask x)
-          = showParen (p >= 11)
-              (showString "VkSemaphoreImportBitmask " . showsPrec 11 x)
+    showsPrec _ VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
+      = showString "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"
+    showsPrec p (VkSemaphoreImportBitmask x)
+      = showParen (p >= 11)
+          (showString "VkSemaphoreImportBitmask " . showsPrec 11 x)
 
 instance Read (VkSemaphoreImportBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SEMAPHORE_IMPORT_TEMPORARY_BIT",
-                   pure VK_SEMAPHORE_IMPORT_TEMPORARY_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSemaphoreImportBitmask") >>
-                      (VkSemaphoreImportBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SEMAPHORE_IMPORT_TEMPORARY_BIT",
+               pure VK_SEMAPHORE_IMPORT_TEMPORARY_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkSemaphoreImportBitmask") >>
+                  (VkSemaphoreImportBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT ::
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Shader.hs b/src-gen/Graphics/Vulkan/Types/Enum/Shader.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Shader.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Shader.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -23,9 +21,7 @@
         VkShaderStageFlags, VkShaderStageFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -37,33 +33,33 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderInfoTypeAMD VkShaderInfoTypeAMD registry at www.khronos.org>
 newtype VkShaderInfoTypeAMD = VkShaderInfoTypeAMD Int32
-                                deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                              deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkShaderInfoTypeAMD where
-        showsPrec _ VK_SHADER_INFO_TYPE_STATISTICS_AMD
-          = showString "VK_SHADER_INFO_TYPE_STATISTICS_AMD"
-        showsPrec _ VK_SHADER_INFO_TYPE_BINARY_AMD
-          = showString "VK_SHADER_INFO_TYPE_BINARY_AMD"
-        showsPrec _ VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD
-          = showString "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"
-        showsPrec p (VkShaderInfoTypeAMD x)
-          = showParen (p >= 11)
-              (showString "VkShaderInfoTypeAMD " . showsPrec 11 x)
+    showsPrec _ VK_SHADER_INFO_TYPE_STATISTICS_AMD
+      = showString "VK_SHADER_INFO_TYPE_STATISTICS_AMD"
+    showsPrec _ VK_SHADER_INFO_TYPE_BINARY_AMD
+      = showString "VK_SHADER_INFO_TYPE_BINARY_AMD"
+    showsPrec _ VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD
+      = showString "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"
+    showsPrec p (VkShaderInfoTypeAMD x)
+      = showParen (p >= 11)
+          (showString "VkShaderInfoTypeAMD " . showsPrec 11 x)
 
 instance Read VkShaderInfoTypeAMD where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SHADER_INFO_TYPE_STATISTICS_AMD",
-                   pure VK_SHADER_INFO_TYPE_STATISTICS_AMD),
-                  ("VK_SHADER_INFO_TYPE_BINARY_AMD",
-                   pure VK_SHADER_INFO_TYPE_BINARY_AMD),
-                  ("VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD",
-                   pure VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkShaderInfoTypeAMD") >>
-                      (VkShaderInfoTypeAMD <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SHADER_INFO_TYPE_STATISTICS_AMD",
+               pure VK_SHADER_INFO_TYPE_STATISTICS_AMD),
+              ("VK_SHADER_INFO_TYPE_BINARY_AMD",
+               pure VK_SHADER_INFO_TYPE_BINARY_AMD),
+              ("VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD",
+               pure VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD)]
+             +++
+             prec 10
+               (expectP (Ident "VkShaderInfoTypeAMD") >>
+                  (VkShaderInfoTypeAMD <$> step readPrec)))
 
 pattern VK_SHADER_INFO_TYPE_STATISTICS_AMD :: VkShaderInfoTypeAMD
 
@@ -79,7 +75,7 @@
 
 newtype VkShaderStageBitmask (a ::
                                 FlagType) = VkShaderStageBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkShaderStageFlags = VkShaderStageBitmask FlagMask
 
@@ -99,57 +95,47 @@
 
 deriving instance FiniteBits (VkShaderStageBitmask FlagMask)
 
-deriving instance Integral (VkShaderStageBitmask FlagMask)
-
-deriving instance Num (VkShaderStageBitmask FlagMask)
-
-deriving instance Bounded (VkShaderStageBitmask FlagMask)
-
-deriving instance Enum (VkShaderStageBitmask FlagMask)
-
-deriving instance Real (VkShaderStageBitmask FlagMask)
-
 instance Show (VkShaderStageBitmask a) where
-        showsPrec _ VK_SHADER_STAGE_VERTEX_BIT
-          = showString "VK_SHADER_STAGE_VERTEX_BIT"
-        showsPrec _ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
-          = showString "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"
-        showsPrec _ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
-          = showString "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"
-        showsPrec _ VK_SHADER_STAGE_GEOMETRY_BIT
-          = showString "VK_SHADER_STAGE_GEOMETRY_BIT"
-        showsPrec _ VK_SHADER_STAGE_FRAGMENT_BIT
-          = showString "VK_SHADER_STAGE_FRAGMENT_BIT"
-        showsPrec _ VK_SHADER_STAGE_COMPUTE_BIT
-          = showString "VK_SHADER_STAGE_COMPUTE_BIT"
-        showsPrec _ VK_SHADER_STAGE_ALL_GRAPHICS
-          = showString "VK_SHADER_STAGE_ALL_GRAPHICS"
-        showsPrec _ VK_SHADER_STAGE_ALL = showString "VK_SHADER_STAGE_ALL"
-        showsPrec p (VkShaderStageBitmask x)
-          = showParen (p >= 11)
-              (showString "VkShaderStageBitmask " . showsPrec 11 x)
+    showsPrec _ VK_SHADER_STAGE_VERTEX_BIT
+      = showString "VK_SHADER_STAGE_VERTEX_BIT"
+    showsPrec _ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
+      = showString "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"
+    showsPrec _ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
+      = showString "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"
+    showsPrec _ VK_SHADER_STAGE_GEOMETRY_BIT
+      = showString "VK_SHADER_STAGE_GEOMETRY_BIT"
+    showsPrec _ VK_SHADER_STAGE_FRAGMENT_BIT
+      = showString "VK_SHADER_STAGE_FRAGMENT_BIT"
+    showsPrec _ VK_SHADER_STAGE_COMPUTE_BIT
+      = showString "VK_SHADER_STAGE_COMPUTE_BIT"
+    showsPrec _ VK_SHADER_STAGE_ALL_GRAPHICS
+      = showString "VK_SHADER_STAGE_ALL_GRAPHICS"
+    showsPrec _ VK_SHADER_STAGE_ALL = showString "VK_SHADER_STAGE_ALL"
+    showsPrec p (VkShaderStageBitmask x)
+      = showParen (p >= 11)
+          (showString "VkShaderStageBitmask " . showsPrec 11 x)
 
 instance Read (VkShaderStageBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SHADER_STAGE_VERTEX_BIT", pure VK_SHADER_STAGE_VERTEX_BIT),
-                  ("VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT",
-                   pure VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT),
-                  ("VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT",
-                   pure VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT),
-                  ("VK_SHADER_STAGE_GEOMETRY_BIT",
-                   pure VK_SHADER_STAGE_GEOMETRY_BIT),
-                  ("VK_SHADER_STAGE_FRAGMENT_BIT",
-                   pure VK_SHADER_STAGE_FRAGMENT_BIT),
-                  ("VK_SHADER_STAGE_COMPUTE_BIT", pure VK_SHADER_STAGE_COMPUTE_BIT),
-                  ("VK_SHADER_STAGE_ALL_GRAPHICS",
-                   pure VK_SHADER_STAGE_ALL_GRAPHICS),
-                  ("VK_SHADER_STAGE_ALL", pure VK_SHADER_STAGE_ALL)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkShaderStageBitmask") >>
-                      (VkShaderStageBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SHADER_STAGE_VERTEX_BIT", pure VK_SHADER_STAGE_VERTEX_BIT),
+              ("VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT",
+               pure VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT),
+              ("VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT",
+               pure VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT),
+              ("VK_SHADER_STAGE_GEOMETRY_BIT",
+               pure VK_SHADER_STAGE_GEOMETRY_BIT),
+              ("VK_SHADER_STAGE_FRAGMENT_BIT",
+               pure VK_SHADER_STAGE_FRAGMENT_BIT),
+              ("VK_SHADER_STAGE_COMPUTE_BIT", pure VK_SHADER_STAGE_COMPUTE_BIT),
+              ("VK_SHADER_STAGE_ALL_GRAPHICS",
+               pure VK_SHADER_STAGE_ALL_GRAPHICS),
+              ("VK_SHADER_STAGE_ALL", pure VK_SHADER_STAGE_ALL)]
+             +++
+             prec 10
+               (expectP (Ident "VkShaderStageBitmask") >>
+                  (VkShaderStageBitmask <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_SHADER_STAGE_VERTEX_BIT :: VkShaderStageBitmask a
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/SharingMode.hs b/src-gen/Graphics/Vulkan/Types/Enum/SharingMode.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/SharingMode.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/SharingMode.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -9,9 +7,7 @@
        (VkSharingMode(VkSharingMode, VK_SHARING_MODE_EXCLUSIVE,
                       VK_SHARING_MODE_CONCURRENT))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -22,27 +18,27 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSharingMode VkSharingMode registry at www.khronos.org>
 newtype VkSharingMode = VkSharingMode Int32
-                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                        deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkSharingMode where
-        showsPrec _ VK_SHARING_MODE_EXCLUSIVE
-          = showString "VK_SHARING_MODE_EXCLUSIVE"
-        showsPrec _ VK_SHARING_MODE_CONCURRENT
-          = showString "VK_SHARING_MODE_CONCURRENT"
-        showsPrec p (VkSharingMode x)
-          = showParen (p >= 11)
-              (showString "VkSharingMode " . showsPrec 11 x)
+    showsPrec _ VK_SHARING_MODE_EXCLUSIVE
+      = showString "VK_SHARING_MODE_EXCLUSIVE"
+    showsPrec _ VK_SHARING_MODE_CONCURRENT
+      = showString "VK_SHARING_MODE_CONCURRENT"
+    showsPrec p (VkSharingMode x)
+      = showParen (p >= 11)
+          (showString "VkSharingMode " . showsPrec 11 x)
 
 instance Read VkSharingMode where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SHARING_MODE_EXCLUSIVE", pure VK_SHARING_MODE_EXCLUSIVE),
-                  ("VK_SHARING_MODE_CONCURRENT", pure VK_SHARING_MODE_CONCURRENT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSharingMode") >>
-                      (VkSharingMode <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SHARING_MODE_EXCLUSIVE", pure VK_SHARING_MODE_EXCLUSIVE),
+              ("VK_SHARING_MODE_CONCURRENT", pure VK_SHARING_MODE_CONCURRENT)]
+             +++
+             prec 10
+               (expectP (Ident "VkSharingMode") >>
+                  (VkSharingMode <$> step readPrec)))
 
 pattern VK_SHARING_MODE_EXCLUSIVE :: VkSharingMode
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Sparse.hs b/src-gen/Graphics/Vulkan/Types/Enum/Sparse.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Sparse.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Sparse.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -22,9 +20,7 @@
         VkSparseMemoryBindFlags, VkSparseMemoryBindFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -34,7 +30,7 @@
 
 newtype VkSparseImageFormatBitmask (a ::
                                       FlagType) = VkSparseImageFormatBitmask VkFlags
-                                                    deriving (Eq, Ord, Storable, Data, Generic)
+                                                  deriving (Eq, Ord, Storable)
 
 type VkSparseImageFormatFlags = VkSparseImageFormatBitmask FlagMask
 
@@ -56,41 +52,31 @@
 
 deriving instance FiniteBits (VkSparseImageFormatBitmask FlagMask)
 
-deriving instance Integral (VkSparseImageFormatBitmask FlagMask)
-
-deriving instance Num (VkSparseImageFormatBitmask FlagMask)
-
-deriving instance Bounded (VkSparseImageFormatBitmask FlagMask)
-
-deriving instance Enum (VkSparseImageFormatBitmask FlagMask)
-
-deriving instance Real (VkSparseImageFormatBitmask FlagMask)
-
 instance Show (VkSparseImageFormatBitmask a) where
-        showsPrec _ VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT
-          = showString "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"
-        showsPrec _ VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT
-          = showString "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"
-        showsPrec _ VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
-          = showString "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"
-        showsPrec p (VkSparseImageFormatBitmask x)
-          = showParen (p >= 11)
-              (showString "VkSparseImageFormatBitmask " . showsPrec 11 x)
+    showsPrec _ VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT
+      = showString "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"
+    showsPrec _ VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT
+      = showString "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"
+    showsPrec _ VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
+      = showString "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"
+    showsPrec p (VkSparseImageFormatBitmask x)
+      = showParen (p >= 11)
+          (showString "VkSparseImageFormatBitmask " . showsPrec 11 x)
 
 instance Read (VkSparseImageFormatBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT",
-                   pure VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT),
-                  ("VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT",
-                   pure VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT),
-                  ("VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT",
-                   pure VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSparseImageFormatBitmask") >>
-                      (VkSparseImageFormatBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT",
+               pure VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT),
+              ("VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT",
+               pure VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT),
+              ("VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT",
+               pure VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkSparseImageFormatBitmask") >>
+                  (VkSparseImageFormatBitmask <$> step readPrec)))
 
 -- | Image uses a single mip tail region for all array layers
 --
@@ -121,7 +107,7 @@
 
 newtype VkSparseMemoryBindBitmask (a ::
                                      FlagType) = VkSparseMemoryBindBitmask VkFlags
-                                                   deriving (Eq, Ord, Storable, Data, Generic)
+                                                 deriving (Eq, Ord, Storable)
 
 type VkSparseMemoryBindFlags = VkSparseMemoryBindBitmask FlagMask
 
@@ -141,33 +127,23 @@
 
 deriving instance FiniteBits (VkSparseMemoryBindBitmask FlagMask)
 
-deriving instance Integral (VkSparseMemoryBindBitmask FlagMask)
-
-deriving instance Num (VkSparseMemoryBindBitmask FlagMask)
-
-deriving instance Bounded (VkSparseMemoryBindBitmask FlagMask)
-
-deriving instance Enum (VkSparseMemoryBindBitmask FlagMask)
-
-deriving instance Real (VkSparseMemoryBindBitmask FlagMask)
-
 instance Show (VkSparseMemoryBindBitmask a) where
-        showsPrec _ VK_SPARSE_MEMORY_BIND_METADATA_BIT
-          = showString "VK_SPARSE_MEMORY_BIND_METADATA_BIT"
-        showsPrec p (VkSparseMemoryBindBitmask x)
-          = showParen (p >= 11)
-              (showString "VkSparseMemoryBindBitmask " . showsPrec 11 x)
+    showsPrec _ VK_SPARSE_MEMORY_BIND_METADATA_BIT
+      = showString "VK_SPARSE_MEMORY_BIND_METADATA_BIT"
+    showsPrec p (VkSparseMemoryBindBitmask x)
+      = showParen (p >= 11)
+          (showString "VkSparseMemoryBindBitmask " . showsPrec 11 x)
 
 instance Read (VkSparseMemoryBindBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SPARSE_MEMORY_BIND_METADATA_BIT",
-                   pure VK_SPARSE_MEMORY_BIND_METADATA_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSparseMemoryBindBitmask") >>
-                      (VkSparseMemoryBindBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SPARSE_MEMORY_BIND_METADATA_BIT",
+               pure VK_SPARSE_MEMORY_BIND_METADATA_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkSparseMemoryBindBitmask") >>
+                  (VkSparseMemoryBindBitmask <$> step readPrec)))
 
 -- | Operation binds resource metadata to memory
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Stencil.hs b/src-gen/Graphics/Vulkan/Types/Enum/Stencil.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Stencil.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Stencil.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -21,9 +19,7 @@
                     VK_STENCIL_OP_DECREMENT_AND_WRAP))
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -33,7 +29,7 @@
 
 newtype VkStencilFaceBitmask (a ::
                                 FlagType) = VkStencilFaceBitmask VkFlags
-                                              deriving (Eq, Ord, Storable, Data, Generic)
+                                            deriving (Eq, Ord, Storable)
 
 type VkStencilFaceFlags = VkStencilFaceBitmask FlagMask
 
@@ -53,38 +49,28 @@
 
 deriving instance FiniteBits (VkStencilFaceBitmask FlagMask)
 
-deriving instance Integral (VkStencilFaceBitmask FlagMask)
-
-deriving instance Num (VkStencilFaceBitmask FlagMask)
-
-deriving instance Bounded (VkStencilFaceBitmask FlagMask)
-
-deriving instance Enum (VkStencilFaceBitmask FlagMask)
-
-deriving instance Real (VkStencilFaceBitmask FlagMask)
-
 instance Show (VkStencilFaceBitmask a) where
-        showsPrec _ VK_STENCIL_FACE_FRONT_BIT
-          = showString "VK_STENCIL_FACE_FRONT_BIT"
-        showsPrec _ VK_STENCIL_FACE_BACK_BIT
-          = showString "VK_STENCIL_FACE_BACK_BIT"
-        showsPrec _ VK_STENCIL_FRONT_AND_BACK
-          = showString "VK_STENCIL_FRONT_AND_BACK"
-        showsPrec p (VkStencilFaceBitmask x)
-          = showParen (p >= 11)
-              (showString "VkStencilFaceBitmask " . showsPrec 11 x)
+    showsPrec _ VK_STENCIL_FACE_FRONT_BIT
+      = showString "VK_STENCIL_FACE_FRONT_BIT"
+    showsPrec _ VK_STENCIL_FACE_BACK_BIT
+      = showString "VK_STENCIL_FACE_BACK_BIT"
+    showsPrec _ VK_STENCIL_FRONT_AND_BACK
+      = showString "VK_STENCIL_FRONT_AND_BACK"
+    showsPrec p (VkStencilFaceBitmask x)
+      = showParen (p >= 11)
+          (showString "VkStencilFaceBitmask " . showsPrec 11 x)
 
 instance Read (VkStencilFaceBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_STENCIL_FACE_FRONT_BIT", pure VK_STENCIL_FACE_FRONT_BIT),
-                  ("VK_STENCIL_FACE_BACK_BIT", pure VK_STENCIL_FACE_BACK_BIT),
-                  ("VK_STENCIL_FRONT_AND_BACK", pure VK_STENCIL_FRONT_AND_BACK)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkStencilFaceBitmask") >>
-                      (VkStencilFaceBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_STENCIL_FACE_FRONT_BIT", pure VK_STENCIL_FACE_FRONT_BIT),
+              ("VK_STENCIL_FACE_BACK_BIT", pure VK_STENCIL_FACE_BACK_BIT),
+              ("VK_STENCIL_FRONT_AND_BACK", pure VK_STENCIL_FRONT_AND_BACK)]
+             +++
+             prec 10
+               (expectP (Ident "VkStencilFaceBitmask") >>
+                  (VkStencilFaceBitmask <$> step readPrec)))
 
 -- | Front face
 --
@@ -109,45 +95,45 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkStencilOp VkStencilOp registry at www.khronos.org>
 newtype VkStencilOp = VkStencilOp Int32
-                        deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                      deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkStencilOp where
-        showsPrec _ VK_STENCIL_OP_KEEP = showString "VK_STENCIL_OP_KEEP"
-        showsPrec _ VK_STENCIL_OP_ZERO = showString "VK_STENCIL_OP_ZERO"
-        showsPrec _ VK_STENCIL_OP_REPLACE
-          = showString "VK_STENCIL_OP_REPLACE"
-        showsPrec _ VK_STENCIL_OP_INCREMENT_AND_CLAMP
-          = showString "VK_STENCIL_OP_INCREMENT_AND_CLAMP"
-        showsPrec _ VK_STENCIL_OP_DECREMENT_AND_CLAMP
-          = showString "VK_STENCIL_OP_DECREMENT_AND_CLAMP"
-        showsPrec _ VK_STENCIL_OP_INVERT
-          = showString "VK_STENCIL_OP_INVERT"
-        showsPrec _ VK_STENCIL_OP_INCREMENT_AND_WRAP
-          = showString "VK_STENCIL_OP_INCREMENT_AND_WRAP"
-        showsPrec _ VK_STENCIL_OP_DECREMENT_AND_WRAP
-          = showString "VK_STENCIL_OP_DECREMENT_AND_WRAP"
-        showsPrec p (VkStencilOp x)
-          = showParen (p >= 11) (showString "VkStencilOp " . showsPrec 11 x)
+    showsPrec _ VK_STENCIL_OP_KEEP = showString "VK_STENCIL_OP_KEEP"
+    showsPrec _ VK_STENCIL_OP_ZERO = showString "VK_STENCIL_OP_ZERO"
+    showsPrec _ VK_STENCIL_OP_REPLACE
+      = showString "VK_STENCIL_OP_REPLACE"
+    showsPrec _ VK_STENCIL_OP_INCREMENT_AND_CLAMP
+      = showString "VK_STENCIL_OP_INCREMENT_AND_CLAMP"
+    showsPrec _ VK_STENCIL_OP_DECREMENT_AND_CLAMP
+      = showString "VK_STENCIL_OP_DECREMENT_AND_CLAMP"
+    showsPrec _ VK_STENCIL_OP_INVERT
+      = showString "VK_STENCIL_OP_INVERT"
+    showsPrec _ VK_STENCIL_OP_INCREMENT_AND_WRAP
+      = showString "VK_STENCIL_OP_INCREMENT_AND_WRAP"
+    showsPrec _ VK_STENCIL_OP_DECREMENT_AND_WRAP
+      = showString "VK_STENCIL_OP_DECREMENT_AND_WRAP"
+    showsPrec p (VkStencilOp x)
+      = showParen (p >= 11) (showString "VkStencilOp " . showsPrec 11 x)
 
 instance Read VkStencilOp where
-        readPrec
-          = parens
-              (choose
-                 [("VK_STENCIL_OP_KEEP", pure VK_STENCIL_OP_KEEP),
-                  ("VK_STENCIL_OP_ZERO", pure VK_STENCIL_OP_ZERO),
-                  ("VK_STENCIL_OP_REPLACE", pure VK_STENCIL_OP_REPLACE),
-                  ("VK_STENCIL_OP_INCREMENT_AND_CLAMP",
-                   pure VK_STENCIL_OP_INCREMENT_AND_CLAMP),
-                  ("VK_STENCIL_OP_DECREMENT_AND_CLAMP",
-                   pure VK_STENCIL_OP_DECREMENT_AND_CLAMP),
-                  ("VK_STENCIL_OP_INVERT", pure VK_STENCIL_OP_INVERT),
-                  ("VK_STENCIL_OP_INCREMENT_AND_WRAP",
-                   pure VK_STENCIL_OP_INCREMENT_AND_WRAP),
-                  ("VK_STENCIL_OP_DECREMENT_AND_WRAP",
-                   pure VK_STENCIL_OP_DECREMENT_AND_WRAP)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkStencilOp") >> (VkStencilOp <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_STENCIL_OP_KEEP", pure VK_STENCIL_OP_KEEP),
+              ("VK_STENCIL_OP_ZERO", pure VK_STENCIL_OP_ZERO),
+              ("VK_STENCIL_OP_REPLACE", pure VK_STENCIL_OP_REPLACE),
+              ("VK_STENCIL_OP_INCREMENT_AND_CLAMP",
+               pure VK_STENCIL_OP_INCREMENT_AND_CLAMP),
+              ("VK_STENCIL_OP_DECREMENT_AND_CLAMP",
+               pure VK_STENCIL_OP_DECREMENT_AND_CLAMP),
+              ("VK_STENCIL_OP_INVERT", pure VK_STENCIL_OP_INVERT),
+              ("VK_STENCIL_OP_INCREMENT_AND_WRAP",
+               pure VK_STENCIL_OP_INCREMENT_AND_WRAP),
+              ("VK_STENCIL_OP_DECREMENT_AND_WRAP",
+               pure VK_STENCIL_OP_DECREMENT_AND_WRAP)]
+             +++
+             prec 10
+               (expectP (Ident "VkStencilOp") >> (VkStencilOp <$> step readPrec)))
 
 pattern VK_STENCIL_OP_KEEP :: VkStencilOp
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/StructureType.hs b/src-gen/Graphics/Vulkan/Types/Enum/StructureType.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/StructureType.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/StructureType.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -57,9 +55,7 @@
                         VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
                         VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -73,232 +69,232 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkStructureType VkStructureType registry at www.khronos.org>
 newtype VkStructureType = VkStructureType Int32
-                            deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                          deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkStructureType where
-        showsPrec _ VK_STRUCTURE_TYPE_APPLICATION_INFO
-          = showString "VK_STRUCTURE_TYPE_APPLICATION_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_SUBMIT_INFO
-          = showString "VK_STRUCTURE_TYPE_SUBMIT_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
-          = showString "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
-          = showString "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"
-        showsPrec _ VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
-          = showString "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"
-        showsPrec _
-          VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
-          = showString
-              "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"
-        showsPrec _
-          VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
-          = showString
-              "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"
-        showsPrec _
-          VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
-          = showString
-              "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
-          = showString
-              "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"
-        showsPrec _
-          VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
-          = showString
-              "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"
-        showsPrec _
-          VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
-          = showString
-              "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"
-        showsPrec _
-          VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
-          = showString
-              "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"
-        showsPrec _
-          VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
-          = showString
-              "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
-          = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
-          = showString "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"
-        showsPrec _ VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
-          = showString "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"
-        showsPrec _ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
-          = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
-          = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
-          = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
-          = showString "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
-          = showString "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"
-        showsPrec _ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
-          = showString "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"
-        showsPrec _ VK_STRUCTURE_TYPE_MEMORY_BARRIER
-          = showString "VK_STRUCTURE_TYPE_MEMORY_BARRIER"
-        showsPrec _ VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"
-        showsPrec _ VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
-          = showString "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"
-        showsPrec p (VkStructureType x)
-          = showParen (p >= 11)
-              (showString "VkStructureType " . showsPrec 11 x)
+    showsPrec _ VK_STRUCTURE_TYPE_APPLICATION_INFO
+      = showString "VK_STRUCTURE_TYPE_APPLICATION_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_SUBMIT_INFO
+      = showString "VK_STRUCTURE_TYPE_SUBMIT_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
+      = showString "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
+      = showString "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"
+    showsPrec _ VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
+      = showString "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"
+    showsPrec _
+      VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
+      = showString
+          "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"
+    showsPrec _
+      VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
+      = showString
+          "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"
+    showsPrec _
+      VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
+      = showString
+          "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
+      = showString
+          "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"
+    showsPrec _
+      VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
+      = showString
+          "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"
+    showsPrec _
+      VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
+      = showString
+          "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"
+    showsPrec _
+      VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
+      = showString
+          "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"
+    showsPrec _
+      VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
+      = showString
+          "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
+      = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
+      = showString "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"
+    showsPrec _ VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
+      = showString "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"
+    showsPrec _ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
+      = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
+      = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
+      = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
+      = showString "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
+      = showString "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"
+    showsPrec _ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
+      = showString "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"
+    showsPrec _ VK_STRUCTURE_TYPE_MEMORY_BARRIER
+      = showString "VK_STRUCTURE_TYPE_MEMORY_BARRIER"
+    showsPrec _ VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"
+    showsPrec _ VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
+      = showString "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"
+    showsPrec p (VkStructureType x)
+      = showParen (p >= 11)
+          (showString "VkStructureType " . showsPrec 11 x)
 
 instance Read VkStructureType where
-        readPrec
-          = parens
-              (choose
-                 [("VK_STRUCTURE_TYPE_APPLICATION_INFO",
-                   pure VK_STRUCTURE_TYPE_APPLICATION_INFO),
-                  ("VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_SUBMIT_INFO",
-                   pure VK_STRUCTURE_TYPE_SUBMIT_INFO),
-                  ("VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO",
-                   pure VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO),
-                  ("VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE",
-                   pure VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE),
-                  ("VK_STRUCTURE_TYPE_BIND_SPARSE_INFO",
-                   pure VK_STRUCTURE_TYPE_BIND_SPARSE_INFO),
-                  ("VK_STRUCTURE_TYPE_FENCE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_FENCE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_EVENT_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_EVENT_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO",
-                   pure VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO),
-                  ("VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET",
-                   pure VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET),
-                  ("VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET",
-                   pure VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET),
-                  ("VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO",
-                   pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO),
-                  ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO",
-                   pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO),
-                  ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO",
-                   pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO),
-                  ("VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO",
-                   pure VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO),
-                  ("VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER",
-                   pure VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER),
-                  ("VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER",
-                   pure VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER),
-                  ("VK_STRUCTURE_TYPE_MEMORY_BARRIER",
-                   pure VK_STRUCTURE_TYPE_MEMORY_BARRIER),
-                  ("VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO),
-                  ("VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO",
-                   pure VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkStructureType") >>
-                      (VkStructureType <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_STRUCTURE_TYPE_APPLICATION_INFO",
+               pure VK_STRUCTURE_TYPE_APPLICATION_INFO),
+              ("VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_SUBMIT_INFO",
+               pure VK_STRUCTURE_TYPE_SUBMIT_INFO),
+              ("VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO",
+               pure VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO),
+              ("VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE",
+               pure VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE),
+              ("VK_STRUCTURE_TYPE_BIND_SPARSE_INFO",
+               pure VK_STRUCTURE_TYPE_BIND_SPARSE_INFO),
+              ("VK_STRUCTURE_TYPE_FENCE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_FENCE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_EVENT_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_EVENT_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO",
+               pure VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO),
+              ("VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET",
+               pure VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET),
+              ("VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET",
+               pure VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET),
+              ("VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO",
+               pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO),
+              ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO",
+               pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO),
+              ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO",
+               pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO),
+              ("VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO",
+               pure VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO),
+              ("VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER",
+               pure VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER),
+              ("VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER",
+               pure VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER),
+              ("VK_STRUCTURE_TYPE_MEMORY_BARRIER",
+               pure VK_STRUCTURE_TYPE_MEMORY_BARRIER),
+              ("VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO),
+              ("VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO",
+               pure VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO)]
+             +++
+             prec 10
+               (expectP (Ident "VkStructureType") >>
+                  (VkStructureType <$> step readPrec)))
 
 pattern VK_STRUCTURE_TYPE_APPLICATION_INFO :: VkStructureType
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/SubgroupFeatureFlags.hs b/src-gen/Graphics/Vulkan/Types/Enum/SubgroupFeatureFlags.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/SubgroupFeatureFlags.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/SubgroupFeatureFlags.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -20,9 +18,7 @@
         VkSubgroupFeatureFlags, VkSubgroupFeatureFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -32,7 +28,7 @@
 
 newtype VkSubgroupFeatureBitmask (a ::
                                     FlagType) = VkSubgroupFeatureBitmask VkFlags
-                                                  deriving (Eq, Ord, Storable, Data, Generic)
+                                                deriving (Eq, Ord, Storable)
 
 type VkSubgroupFeatureFlags = VkSubgroupFeatureBitmask FlagMask
 
@@ -52,61 +48,51 @@
 
 deriving instance FiniteBits (VkSubgroupFeatureBitmask FlagMask)
 
-deriving instance Integral (VkSubgroupFeatureBitmask FlagMask)
-
-deriving instance Num (VkSubgroupFeatureBitmask FlagMask)
-
-deriving instance Bounded (VkSubgroupFeatureBitmask FlagMask)
-
-deriving instance Enum (VkSubgroupFeatureBitmask FlagMask)
-
-deriving instance Real (VkSubgroupFeatureBitmask FlagMask)
-
 instance Show (VkSubgroupFeatureBitmask a) where
-        showsPrec _ VK_SUBGROUP_FEATURE_BASIC_BIT
-          = showString "VK_SUBGROUP_FEATURE_BASIC_BIT"
-        showsPrec _ VK_SUBGROUP_FEATURE_VOTE_BIT
-          = showString "VK_SUBGROUP_FEATURE_VOTE_BIT"
-        showsPrec _ VK_SUBGROUP_FEATURE_ARITHMETIC_BIT
-          = showString "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"
-        showsPrec _ VK_SUBGROUP_FEATURE_BALLOT_BIT
-          = showString "VK_SUBGROUP_FEATURE_BALLOT_BIT"
-        showsPrec _ VK_SUBGROUP_FEATURE_SHUFFLE_BIT
-          = showString "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"
-        showsPrec _ VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
-          = showString "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"
-        showsPrec _ VK_SUBGROUP_FEATURE_CLUSTERED_BIT
-          = showString "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"
-        showsPrec _ VK_SUBGROUP_FEATURE_QUAD_BIT
-          = showString "VK_SUBGROUP_FEATURE_QUAD_BIT"
-        showsPrec p (VkSubgroupFeatureBitmask x)
-          = showParen (p >= 11)
-              (showString "VkSubgroupFeatureBitmask " . showsPrec 11 x)
+    showsPrec _ VK_SUBGROUP_FEATURE_BASIC_BIT
+      = showString "VK_SUBGROUP_FEATURE_BASIC_BIT"
+    showsPrec _ VK_SUBGROUP_FEATURE_VOTE_BIT
+      = showString "VK_SUBGROUP_FEATURE_VOTE_BIT"
+    showsPrec _ VK_SUBGROUP_FEATURE_ARITHMETIC_BIT
+      = showString "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"
+    showsPrec _ VK_SUBGROUP_FEATURE_BALLOT_BIT
+      = showString "VK_SUBGROUP_FEATURE_BALLOT_BIT"
+    showsPrec _ VK_SUBGROUP_FEATURE_SHUFFLE_BIT
+      = showString "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"
+    showsPrec _ VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT
+      = showString "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"
+    showsPrec _ VK_SUBGROUP_FEATURE_CLUSTERED_BIT
+      = showString "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"
+    showsPrec _ VK_SUBGROUP_FEATURE_QUAD_BIT
+      = showString "VK_SUBGROUP_FEATURE_QUAD_BIT"
+    showsPrec p (VkSubgroupFeatureBitmask x)
+      = showParen (p >= 11)
+          (showString "VkSubgroupFeatureBitmask " . showsPrec 11 x)
 
 instance Read (VkSubgroupFeatureBitmask a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SUBGROUP_FEATURE_BASIC_BIT",
-                   pure VK_SUBGROUP_FEATURE_BASIC_BIT),
-                  ("VK_SUBGROUP_FEATURE_VOTE_BIT",
-                   pure VK_SUBGROUP_FEATURE_VOTE_BIT),
-                  ("VK_SUBGROUP_FEATURE_ARITHMETIC_BIT",
-                   pure VK_SUBGROUP_FEATURE_ARITHMETIC_BIT),
-                  ("VK_SUBGROUP_FEATURE_BALLOT_BIT",
-                   pure VK_SUBGROUP_FEATURE_BALLOT_BIT),
-                  ("VK_SUBGROUP_FEATURE_SHUFFLE_BIT",
-                   pure VK_SUBGROUP_FEATURE_SHUFFLE_BIT),
-                  ("VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT",
-                   pure VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT),
-                  ("VK_SUBGROUP_FEATURE_CLUSTERED_BIT",
-                   pure VK_SUBGROUP_FEATURE_CLUSTERED_BIT),
-                  ("VK_SUBGROUP_FEATURE_QUAD_BIT",
-                   pure VK_SUBGROUP_FEATURE_QUAD_BIT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSubgroupFeatureBitmask") >>
-                      (VkSubgroupFeatureBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SUBGROUP_FEATURE_BASIC_BIT",
+               pure VK_SUBGROUP_FEATURE_BASIC_BIT),
+              ("VK_SUBGROUP_FEATURE_VOTE_BIT",
+               pure VK_SUBGROUP_FEATURE_VOTE_BIT),
+              ("VK_SUBGROUP_FEATURE_ARITHMETIC_BIT",
+               pure VK_SUBGROUP_FEATURE_ARITHMETIC_BIT),
+              ("VK_SUBGROUP_FEATURE_BALLOT_BIT",
+               pure VK_SUBGROUP_FEATURE_BALLOT_BIT),
+              ("VK_SUBGROUP_FEATURE_SHUFFLE_BIT",
+               pure VK_SUBGROUP_FEATURE_SHUFFLE_BIT),
+              ("VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT",
+               pure VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT),
+              ("VK_SUBGROUP_FEATURE_CLUSTERED_BIT",
+               pure VK_SUBGROUP_FEATURE_CLUSTERED_BIT),
+              ("VK_SUBGROUP_FEATURE_QUAD_BIT",
+               pure VK_SUBGROUP_FEATURE_QUAD_BIT)]
+             +++
+             prec 10
+               (expectP (Ident "VkSubgroupFeatureBitmask") >>
+                  (VkSubgroupFeatureBitmask <$> step readPrec)))
 
 -- | Basic subgroup operations
 --
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Subpass.hs b/src-gen/Graphics/Vulkan/Types/Enum/Subpass.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Subpass.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Subpass.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -17,9 +15,7 @@
         VkSubpassDescriptionFlags, VkSubpassDescriptionFlagBits)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType, Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -31,28 +27,28 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSubpassContents VkSubpassContents registry at www.khronos.org>
 newtype VkSubpassContents = VkSubpassContents Int32
-                              deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                            deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkSubpassContents where
-        showsPrec _ VK_SUBPASS_CONTENTS_INLINE
-          = showString "VK_SUBPASS_CONTENTS_INLINE"
-        showsPrec _ VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
-          = showString "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"
-        showsPrec p (VkSubpassContents x)
-          = showParen (p >= 11)
-              (showString "VkSubpassContents " . showsPrec 11 x)
+    showsPrec _ VK_SUBPASS_CONTENTS_INLINE
+      = showString "VK_SUBPASS_CONTENTS_INLINE"
+    showsPrec _ VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
+      = showString "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"
+    showsPrec p (VkSubpassContents x)
+      = showParen (p >= 11)
+          (showString "VkSubpassContents " . showsPrec 11 x)
 
 instance Read VkSubpassContents where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SUBPASS_CONTENTS_INLINE", pure VK_SUBPASS_CONTENTS_INLINE),
-                  ("VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS",
-                   pure VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSubpassContents") >>
-                      (VkSubpassContents <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SUBPASS_CONTENTS_INLINE", pure VK_SUBPASS_CONTENTS_INLINE),
+              ("VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS",
+               pure VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS)]
+             +++
+             prec 10
+               (expectP (Ident "VkSubpassContents") >>
+                  (VkSubpassContents <$> step readPrec)))
 
 pattern VK_SUBPASS_CONTENTS_INLINE :: VkSubpassContents
 
@@ -66,7 +62,7 @@
 
 newtype VkSubpassDescriptionBitmask (a ::
                                        FlagType) = VkSubpassDescriptionBitmask VkFlags
-                                                     deriving (Eq, Ord, Storable, Data, Generic)
+                                                   deriving (Eq, Ord, Storable)
 
 type VkSubpassDescriptionFlags =
      VkSubpassDescriptionBitmask FlagMask
@@ -89,25 +85,15 @@
 
 deriving instance FiniteBits (VkSubpassDescriptionBitmask FlagMask)
 
-deriving instance Integral (VkSubpassDescriptionBitmask FlagMask)
-
-deriving instance Num (VkSubpassDescriptionBitmask FlagMask)
-
-deriving instance Bounded (VkSubpassDescriptionBitmask FlagMask)
-
-deriving instance Enum (VkSubpassDescriptionBitmask FlagMask)
-
-deriving instance Real (VkSubpassDescriptionBitmask FlagMask)
-
 instance Show (VkSubpassDescriptionBitmask a) where
-        showsPrec p (VkSubpassDescriptionBitmask x)
-          = showParen (p >= 11)
-              (showString "VkSubpassDescriptionBitmask " . showsPrec 11 x)
+    showsPrec p (VkSubpassDescriptionBitmask x)
+      = showParen (p >= 11)
+          (showString "VkSubpassDescriptionBitmask " . showsPrec 11 x)
 
 instance Read (VkSubpassDescriptionBitmask a) where
-        readPrec
-          = parens
-              (choose [] +++
-                 prec 10
-                   (expectP (Ident "VkSubpassDescriptionBitmask") >>
-                      (VkSubpassDescriptionBitmask <$> step readPrec)))
+    readPrec
+      = parens
+          (choose [] +++
+             prec 10
+               (expectP (Ident "VkSubpassDescriptionBitmask") >>
+                  (VkSubpassDescriptionBitmask <$> step readPrec)))
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/Surface.hs b/src-gen/Graphics/Vulkan/Types/Enum/Surface.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/Surface.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/Surface.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -28,9 +26,7 @@
         VkSurfaceTransformFlagsKHR, VkSurfaceTransformFlagBitsKHR)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -40,7 +36,7 @@
 
 newtype VkSurfaceCounterBitmaskEXT (a ::
                                       FlagType) = VkSurfaceCounterBitmaskEXT VkFlags
-                                                    deriving (Eq, Ord, Storable, Data, Generic)
+                                                  deriving (Eq, Ord, Storable)
 
 type VkSurfaceCounterFlagsEXT = VkSurfaceCounterBitmaskEXT FlagMask
 
@@ -62,33 +58,23 @@
 
 deriving instance FiniteBits (VkSurfaceCounterBitmaskEXT FlagMask)
 
-deriving instance Integral (VkSurfaceCounterBitmaskEXT FlagMask)
-
-deriving instance Num (VkSurfaceCounterBitmaskEXT FlagMask)
-
-deriving instance Bounded (VkSurfaceCounterBitmaskEXT FlagMask)
-
-deriving instance Enum (VkSurfaceCounterBitmaskEXT FlagMask)
-
-deriving instance Real (VkSurfaceCounterBitmaskEXT FlagMask)
-
 instance Show (VkSurfaceCounterBitmaskEXT a) where
-        showsPrec _ VK_SURFACE_COUNTER_VBLANK_EXT
-          = showString "VK_SURFACE_COUNTER_VBLANK_EXT"
-        showsPrec p (VkSurfaceCounterBitmaskEXT x)
-          = showParen (p >= 11)
-              (showString "VkSurfaceCounterBitmaskEXT " . showsPrec 11 x)
+    showsPrec _ VK_SURFACE_COUNTER_VBLANK_EXT
+      = showString "VK_SURFACE_COUNTER_VBLANK_EXT"
+    showsPrec p (VkSurfaceCounterBitmaskEXT x)
+      = showParen (p >= 11)
+          (showString "VkSurfaceCounterBitmaskEXT " . showsPrec 11 x)
 
 instance Read (VkSurfaceCounterBitmaskEXT a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SURFACE_COUNTER_VBLANK_EXT",
-                   pure VK_SURFACE_COUNTER_VBLANK_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSurfaceCounterBitmaskEXT") >>
-                      (VkSurfaceCounterBitmaskEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SURFACE_COUNTER_VBLANK_EXT",
+               pure VK_SURFACE_COUNTER_VBLANK_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkSurfaceCounterBitmaskEXT") >>
+                  (VkSurfaceCounterBitmaskEXT <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_SURFACE_COUNTER_VBLANK_EXT ::
@@ -99,7 +85,7 @@
 
 newtype VkSurfaceTransformBitmaskKHR (a ::
                                         FlagType) = VkSurfaceTransformBitmaskKHR VkFlags
-                                                      deriving (Eq, Ord, Storable, Data, Generic)
+                                                    deriving (Eq, Ord, Storable)
 
 type VkSurfaceTransformFlagsKHR =
      VkSurfaceTransformBitmaskKHR FlagMask
@@ -124,71 +110,61 @@
 deriving instance
          FiniteBits (VkSurfaceTransformBitmaskKHR FlagMask)
 
-deriving instance Integral (VkSurfaceTransformBitmaskKHR FlagMask)
-
-deriving instance Num (VkSurfaceTransformBitmaskKHR FlagMask)
-
-deriving instance Bounded (VkSurfaceTransformBitmaskKHR FlagMask)
-
-deriving instance Enum (VkSurfaceTransformBitmaskKHR FlagMask)
-
-deriving instance Real (VkSurfaceTransformBitmaskKHR FlagMask)
-
 instance Show (VkSurfaceTransformBitmaskKHR a) where
-        showsPrec _ VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
-          = showString "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"
-        showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR
-          = showString "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"
-        showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
-          = showString "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"
-        showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
-          = showString "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"
-        showsPrec _ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR
-          = showString "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"
-        showsPrec _
-          VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR
-          = showString
-              "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"
-        showsPrec _
-          VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR
-          = showString
-              "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"
-        showsPrec _
-          VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR
-          = showString
-              "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"
-        showsPrec _ VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
-          = showString "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"
-        showsPrec p (VkSurfaceTransformBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkSurfaceTransformBitmaskKHR " . showsPrec 11 x)
+    showsPrec _ VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
+      = showString "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"
+    showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR
+      = showString "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"
+    showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
+      = showString "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"
+    showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
+      = showString "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"
+    showsPrec _ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR
+      = showString "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"
+    showsPrec _
+      VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR
+      = showString
+          "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"
+    showsPrec _
+      VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR
+      = showString
+          "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"
+    showsPrec _
+      VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR
+      = showString
+          "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"
+    showsPrec _ VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
+      = showString "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"
+    showsPrec p (VkSurfaceTransformBitmaskKHR x)
+      = showParen (p >= 11)
+          (showString "VkSurfaceTransformBitmaskKHR " . showsPrec 11 x)
 
 instance Read (VkSurfaceTransformBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR),
-                  ("VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR),
-                  ("VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR),
-                  ("VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR),
-                  ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR),
-                  ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR),
-                  ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR),
-                  ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR),
-                  ("VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR",
-                   pure VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSurfaceTransformBitmaskKHR") >>
-                      (VkSurfaceTransformBitmaskKHR <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR),
+              ("VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR),
+              ("VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR),
+              ("VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR),
+              ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR),
+              ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR),
+              ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR),
+              ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR),
+              ("VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR",
+               pure VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR)]
+             +++
+             prec 10
+               (expectP (Ident "VkSurfaceTransformBitmaskKHR") >>
+                  (VkSurfaceTransformBitmaskKHR <$> step readPrec)))
 
 -- | bitpos = @0@
 pattern VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR ::
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/SwapchainCreateFlagsKHR.hs b/src-gen/Graphics/Vulkan/Types/Enum/SwapchainCreateFlagsKHR.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/SwapchainCreateFlagsKHR.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/SwapchainCreateFlagsKHR.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE KindSignatures             #-}
@@ -15,9 +13,7 @@
         VkSwapchainCreateFlagsKHR, VkSwapchainCreateFlagBitsKHR)
        where
 import Data.Bits                       (Bits, FiniteBits)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (FlagBit, FlagMask, FlagType)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags (..))
@@ -27,7 +23,7 @@
 
 newtype VkSwapchainCreateBitmaskKHR (a ::
                                        FlagType) = VkSwapchainCreateBitmaskKHR VkFlags
-                                                     deriving (Eq, Ord, Storable, Data, Generic)
+                                                   deriving (Eq, Ord, Storable)
 
 type VkSwapchainCreateFlagsKHR =
      VkSwapchainCreateBitmaskKHR FlagMask
@@ -50,25 +46,15 @@
 
 deriving instance FiniteBits (VkSwapchainCreateBitmaskKHR FlagMask)
 
-deriving instance Integral (VkSwapchainCreateBitmaskKHR FlagMask)
-
-deriving instance Num (VkSwapchainCreateBitmaskKHR FlagMask)
-
-deriving instance Bounded (VkSwapchainCreateBitmaskKHR FlagMask)
-
-deriving instance Enum (VkSwapchainCreateBitmaskKHR FlagMask)
-
-deriving instance Real (VkSwapchainCreateBitmaskKHR FlagMask)
-
 instance Show (VkSwapchainCreateBitmaskKHR a) where
-        showsPrec p (VkSwapchainCreateBitmaskKHR x)
-          = showParen (p >= 11)
-              (showString "VkSwapchainCreateBitmaskKHR " . showsPrec 11 x)
+    showsPrec p (VkSwapchainCreateBitmaskKHR x)
+      = showParen (p >= 11)
+          (showString "VkSwapchainCreateBitmaskKHR " . showsPrec 11 x)
 
 instance Read (VkSwapchainCreateBitmaskKHR a) where
-        readPrec
-          = parens
-              (choose [] +++
-                 prec 10
-                   (expectP (Ident "VkSwapchainCreateBitmaskKHR") >>
-                      (VkSwapchainCreateBitmaskKHR <$> step readPrec)))
+    readPrec
+      = parens
+          (choose [] +++
+             prec 10
+               (expectP (Ident "VkSwapchainCreateBitmaskKHR") >>
+                  (VkSwapchainCreateBitmaskKHR <$> step readPrec)))
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/SystemAllocationScope.hs b/src-gen/Graphics/Vulkan/Types/Enum/SystemAllocationScope.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/SystemAllocationScope.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/SystemAllocationScope.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -13,9 +11,7 @@
                                 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
                                 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -26,41 +22,41 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSystemAllocationScope VkSystemAllocationScope registry at www.khronos.org>
 newtype VkSystemAllocationScope = VkSystemAllocationScope Int32
-                                    deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                                  deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkSystemAllocationScope where
-        showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND
-          = showString "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"
-        showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT
-          = showString "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"
-        showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_CACHE
-          = showString "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"
-        showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_DEVICE
-          = showString "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"
-        showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
-          = showString "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"
-        showsPrec p (VkSystemAllocationScope x)
-          = showParen (p >= 11)
-              (showString "VkSystemAllocationScope " . showsPrec 11 x)
+    showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND
+      = showString "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"
+    showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT
+      = showString "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"
+    showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_CACHE
+      = showString "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"
+    showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_DEVICE
+      = showString "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"
+    showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
+      = showString "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"
+    showsPrec p (VkSystemAllocationScope x)
+      = showParen (p >= 11)
+          (showString "VkSystemAllocationScope " . showsPrec 11 x)
 
 instance Read VkSystemAllocationScope where
-        readPrec
-          = parens
-              (choose
-                 [("VK_SYSTEM_ALLOCATION_SCOPE_COMMAND",
-                   pure VK_SYSTEM_ALLOCATION_SCOPE_COMMAND),
-                  ("VK_SYSTEM_ALLOCATION_SCOPE_OBJECT",
-                   pure VK_SYSTEM_ALLOCATION_SCOPE_OBJECT),
-                  ("VK_SYSTEM_ALLOCATION_SCOPE_CACHE",
-                   pure VK_SYSTEM_ALLOCATION_SCOPE_CACHE),
-                  ("VK_SYSTEM_ALLOCATION_SCOPE_DEVICE",
-                   pure VK_SYSTEM_ALLOCATION_SCOPE_DEVICE),
-                  ("VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE",
-                   pure VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkSystemAllocationScope") >>
-                      (VkSystemAllocationScope <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_SYSTEM_ALLOCATION_SCOPE_COMMAND",
+               pure VK_SYSTEM_ALLOCATION_SCOPE_COMMAND),
+              ("VK_SYSTEM_ALLOCATION_SCOPE_OBJECT",
+               pure VK_SYSTEM_ALLOCATION_SCOPE_OBJECT),
+              ("VK_SYSTEM_ALLOCATION_SCOPE_CACHE",
+               pure VK_SYSTEM_ALLOCATION_SCOPE_CACHE),
+              ("VK_SYSTEM_ALLOCATION_SCOPE_DEVICE",
+               pure VK_SYSTEM_ALLOCATION_SCOPE_DEVICE),
+              ("VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE",
+               pure VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE)]
+             +++
+             prec 10
+               (expectP (Ident "VkSystemAllocationScope") >>
+                  (VkSystemAllocationScope <$> step readPrec)))
 
 pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND ::
         VkSystemAllocationScope
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/TessellationDomainOrigin.hs b/src-gen/Graphics/Vulkan/Types/Enum/TessellationDomainOrigin.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/TessellationDomainOrigin.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/TessellationDomainOrigin.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -13,9 +11,7 @@
        where
 import Data.Bits                       (Bits, FiniteBits)
 import Data.Coerce                     (coerce)
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Graphics.Vulkan.Types.BaseTypes (VkFlags)
@@ -27,30 +23,29 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkTessellationDomainOrigin VkTessellationDomainOrigin registry at www.khronos.org>
 newtype VkTessellationDomainOrigin = VkTessellationDomainOrigin Int32
-                                       deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                 Generic)
+                                     deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkTessellationDomainOrigin where
-        showsPrec _ VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT
-          = showString "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"
-        showsPrec _ VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
-          = showString "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"
-        showsPrec p (VkTessellationDomainOrigin x)
-          = showParen (p >= 11)
-              (showString "VkTessellationDomainOrigin " . showsPrec 11 x)
+    showsPrec _ VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT
+      = showString "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"
+    showsPrec _ VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT
+      = showString "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"
+    showsPrec p (VkTessellationDomainOrigin x)
+      = showParen (p >= 11)
+          (showString "VkTessellationDomainOrigin " . showsPrec 11 x)
 
 instance Read VkTessellationDomainOrigin where
-        readPrec
-          = parens
-              (choose
-                 [("VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT",
-                   pure VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT),
-                  ("VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT",
-                   pure VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkTessellationDomainOrigin") >>
-                      (VkTessellationDomainOrigin <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT",
+               pure VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT),
+              ("VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT",
+               pure VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT)]
+             +++
+             prec 10
+               (expectP (Ident "VkTessellationDomainOrigin") >>
+                  (VkTessellationDomainOrigin <$> step readPrec)))
 
 pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT ::
         VkTessellationDomainOrigin
@@ -65,13 +60,12 @@
         VkTessellationDomainOrigin 1
 
 newtype VkTessellationDomainOriginKHR = VkTessellationDomainOriginKHR VkFlags
-                                          deriving (Eq, Ord, Num, Bounded, Enum, Integral, Bits,
-                                                    FiniteBits, Storable, Real, Data, Generic)
+                                        deriving (Eq, Ord, Enum, Bits, FiniteBits, Storable)
 
 instance Show VkTessellationDomainOriginKHR where
-        {-# INLINE show #-}
-        show (VkTessellationDomainOriginKHR x) = show x
+    {-# INLINE showsPrec #-}
+    showsPrec = coerce (showsPrec :: Int -> VkFlags -> ShowS)
 
 instance Read VkTessellationDomainOriginKHR where
-        {-# INLINE readsPrec #-}
-        readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
+    {-# INLINE readsPrec #-}
+    readsPrec = coerce (readsPrec :: Int -> ReadS VkFlags)
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/ValidationC.hs b/src-gen/Graphics/Vulkan/Types/Enum/ValidationC.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/ValidationC.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/ValidationC.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -11,9 +9,7 @@
         VkValidationCheckEXT(VkValidationCheckEXT,
                              VK_VALIDATION_CHECK_ALL_EXT, VK_VALIDATION_CHECK_SHADERS_EXT))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -24,26 +20,25 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkValidationCacheHeaderVersionEXT VkValidationCacheHeaderVersionEXT registry at www.khronos.org>
 newtype VkValidationCacheHeaderVersionEXT = VkValidationCacheHeaderVersionEXT Int32
-                                              deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                        Generic)
+                                            deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkValidationCacheHeaderVersionEXT where
-        showsPrec _ VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
-          = showString "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"
-        showsPrec p (VkValidationCacheHeaderVersionEXT x)
-          = showParen (p >= 11)
-              (showString "VkValidationCacheHeaderVersionEXT " . showsPrec 11 x)
+    showsPrec _ VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
+      = showString "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"
+    showsPrec p (VkValidationCacheHeaderVersionEXT x)
+      = showParen (p >= 11)
+          (showString "VkValidationCacheHeaderVersionEXT " . showsPrec 11 x)
 
 instance Read VkValidationCacheHeaderVersionEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT",
-                   pure VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkValidationCacheHeaderVersionEXT") >>
-                      (VkValidationCacheHeaderVersionEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT",
+               pure VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkValidationCacheHeaderVersionEXT") >>
+                  (VkValidationCacheHeaderVersionEXT <$> step readPrec)))
 
 pattern VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT ::
         VkValidationCacheHeaderVersionEXT
@@ -55,28 +50,28 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkValidationCheckEXT VkValidationCheckEXT registry at www.khronos.org>
 newtype VkValidationCheckEXT = VkValidationCheckEXT Int32
-                                 deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                               deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkValidationCheckEXT where
-        showsPrec _ VK_VALIDATION_CHECK_ALL_EXT
-          = showString "VK_VALIDATION_CHECK_ALL_EXT"
-        showsPrec _ VK_VALIDATION_CHECK_SHADERS_EXT
-          = showString "VK_VALIDATION_CHECK_SHADERS_EXT"
-        showsPrec p (VkValidationCheckEXT x)
-          = showParen (p >= 11)
-              (showString "VkValidationCheckEXT " . showsPrec 11 x)
+    showsPrec _ VK_VALIDATION_CHECK_ALL_EXT
+      = showString "VK_VALIDATION_CHECK_ALL_EXT"
+    showsPrec _ VK_VALIDATION_CHECK_SHADERS_EXT
+      = showString "VK_VALIDATION_CHECK_SHADERS_EXT"
+    showsPrec p (VkValidationCheckEXT x)
+      = showParen (p >= 11)
+          (showString "VkValidationCheckEXT " . showsPrec 11 x)
 
 instance Read VkValidationCheckEXT where
-        readPrec
-          = parens
-              (choose
-                 [("VK_VALIDATION_CHECK_ALL_EXT", pure VK_VALIDATION_CHECK_ALL_EXT),
-                  ("VK_VALIDATION_CHECK_SHADERS_EXT",
-                   pure VK_VALIDATION_CHECK_SHADERS_EXT)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkValidationCheckEXT") >>
-                      (VkValidationCheckEXT <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_VALIDATION_CHECK_ALL_EXT", pure VK_VALIDATION_CHECK_ALL_EXT),
+              ("VK_VALIDATION_CHECK_SHADERS_EXT",
+               pure VK_VALIDATION_CHECK_SHADERS_EXT)]
+             +++
+             prec 10
+               (expectP (Ident "VkValidationCheckEXT") >>
+                  (VkValidationCheckEXT <$> step readPrec)))
 
 pattern VK_VALIDATION_CHECK_ALL_EXT :: VkValidationCheckEXT
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/VertexInputRate.hs b/src-gen/Graphics/Vulkan/Types/Enum/VertexInputRate.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/VertexInputRate.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/VertexInputRate.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -9,9 +7,7 @@
        (VkVertexInputRate(VkVertexInputRate, VK_VERTEX_INPUT_RATE_VERTEX,
                           VK_VERTEX_INPUT_RATE_INSTANCE))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -22,28 +18,28 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkVertexInputRate VkVertexInputRate registry at www.khronos.org>
 newtype VkVertexInputRate = VkVertexInputRate Int32
-                              deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data, Generic)
+                            deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkVertexInputRate where
-        showsPrec _ VK_VERTEX_INPUT_RATE_VERTEX
-          = showString "VK_VERTEX_INPUT_RATE_VERTEX"
-        showsPrec _ VK_VERTEX_INPUT_RATE_INSTANCE
-          = showString "VK_VERTEX_INPUT_RATE_INSTANCE"
-        showsPrec p (VkVertexInputRate x)
-          = showParen (p >= 11)
-              (showString "VkVertexInputRate " . showsPrec 11 x)
+    showsPrec _ VK_VERTEX_INPUT_RATE_VERTEX
+      = showString "VK_VERTEX_INPUT_RATE_VERTEX"
+    showsPrec _ VK_VERTEX_INPUT_RATE_INSTANCE
+      = showString "VK_VERTEX_INPUT_RATE_INSTANCE"
+    showsPrec p (VkVertexInputRate x)
+      = showParen (p >= 11)
+          (showString "VkVertexInputRate " . showsPrec 11 x)
 
 instance Read VkVertexInputRate where
-        readPrec
-          = parens
-              (choose
-                 [("VK_VERTEX_INPUT_RATE_VERTEX", pure VK_VERTEX_INPUT_RATE_VERTEX),
-                  ("VK_VERTEX_INPUT_RATE_INSTANCE",
-                   pure VK_VERTEX_INPUT_RATE_INSTANCE)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkVertexInputRate") >>
-                      (VkVertexInputRate <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_VERTEX_INPUT_RATE_VERTEX", pure VK_VERTEX_INPUT_RATE_VERTEX),
+              ("VK_VERTEX_INPUT_RATE_INSTANCE",
+               pure VK_VERTEX_INPUT_RATE_INSTANCE)]
+             +++
+             prec 10
+               (expectP (Ident "VkVertexInputRate") >>
+                  (VkVertexInputRate <$> step readPrec)))
 
 pattern VK_VERTEX_INPUT_RATE_VERTEX :: VkVertexInputRate
 
diff --git a/src-gen/Graphics/Vulkan/Types/Enum/ViewportCoordinateSwizzleNV.hs b/src-gen/Graphics/Vulkan/Types/Enum/ViewportCoordinateSwizzleNV.hs
--- a/src-gen/Graphics/Vulkan/Types/Enum/ViewportCoordinateSwizzleNV.hs
+++ b/src-gen/Graphics/Vulkan/Types/Enum/ViewportCoordinateSwizzleNV.hs
@@ -1,7 +1,5 @@
 {-# OPTIONS_HADDOCK ignore-exports#-}
 {-# LANGUAGE DataKinds                  #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE PatternSynonyms            #-}
 {-# LANGUAGE Strict                     #-}
@@ -16,9 +14,7 @@
                                       VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
                                       VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV))
        where
-import Data.Data                       (Data)
 import Foreign.Storable                (Storable)
-import GHC.Generics                    (Generic)
 import GHC.Read                        (choose, expectP)
 import Graphics.Vulkan.Marshal         (Int32)
 import Text.ParserCombinators.ReadPrec (prec, step, (+++))
@@ -29,54 +25,53 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkViewportCoordinateSwizzleNV VkViewportCoordinateSwizzleNV registry at www.khronos.org>
 newtype VkViewportCoordinateSwizzleNV = VkViewportCoordinateSwizzleNV Int32
-                                          deriving (Eq, Ord, Num, Bounded, Storable, Enum, Data,
-                                                    Generic)
+                                        deriving (Eq, Ord, Enum, Storable)
 
 instance Show VkViewportCoordinateSwizzleNV where
-        showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV
-          = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"
-        showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV
-          = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"
-        showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV
-          = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"
-        showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV
-          = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"
-        showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV
-          = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"
-        showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV
-          = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"
-        showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV
-          = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"
-        showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
-          = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"
-        showsPrec p (VkViewportCoordinateSwizzleNV x)
-          = showParen (p >= 11)
-              (showString "VkViewportCoordinateSwizzleNV " . showsPrec 11 x)
+    showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV
+      = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"
+    showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV
+      = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"
+    showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV
+      = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"
+    showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV
+      = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"
+    showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV
+      = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"
+    showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV
+      = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"
+    showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV
+      = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"
+    showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
+      = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"
+    showsPrec p (VkViewportCoordinateSwizzleNV x)
+      = showParen (p >= 11)
+          (showString "VkViewportCoordinateSwizzleNV " . showsPrec 11 x)
 
 instance Read VkViewportCoordinateSwizzleNV where
-        readPrec
-          = parens
-              (choose
-                 [("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV",
-                   pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV),
-                  ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV",
-                   pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV),
-                  ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV",
-                   pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV),
-                  ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV",
-                   pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV),
-                  ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV",
-                   pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV),
-                  ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV",
-                   pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV),
-                  ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV",
-                   pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV),
-                  ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV",
-                   pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV)]
-                 +++
-                 prec 10
-                   (expectP (Ident "VkViewportCoordinateSwizzleNV") >>
-                      (VkViewportCoordinateSwizzleNV <$> step readPrec)))
+    readPrec
+      = parens
+          (choose
+             [("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV",
+               pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV),
+              ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV",
+               pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV),
+              ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV",
+               pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV),
+              ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV",
+               pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV),
+              ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV",
+               pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV),
+              ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV",
+               pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV),
+              ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV",
+               pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV),
+              ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV",
+               pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV)]
+             +++
+             prec 10
+               (expectP (Ident "VkViewportCoordinateSwizzleNV") >>
+                  (VkViewportCoordinateSwizzleNV <$> step readPrec)))
 
 pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV ::
         VkViewportCoordinateSwizzleNV
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/AcquireNextImageInfoKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/AcquireNextImageInfoKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/AcquireNextImageInfoKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/AcquireNextImageInfoKHR.hsc
@@ -2,20 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.AcquireNextImageInfoKHR
-       (VkAcquireNextImageInfoKHR, VkAcquireNextImageInfoKHR') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkAcquireNextImageInfoKHR) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Handles            (VkFence, VkSemaphore,
                                                  VkSwapchainKHR)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkAcquireNextImageInfoKHR {
 --   >     VkStructureType sType;
@@ -29,288 +25,50 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAcquireNextImageInfoKHR VkAcquireNextImageInfoKHR registry at www.khronos.org>
 type VkAcquireNextImageInfoKHR =
-     VulkanStruct VkAcquireNextImageInfoKHR' -- ' closing tick for hsc2hs
+     VkStruct VkAcquireNextImageInfoKHR' -- ' closing tick for hsc2hs
 
 data VkAcquireNextImageInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkAcquireNextImageInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAcquireNextImageInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAcquireNextImageInfoKHR where
-        sizeOf ~_ = #{size VkAcquireNextImageInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkAcquireNextImageInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkAcquireNextImageInfoKHR where
-        type StructFields VkAcquireNextImageInfoKHR =
-             '["sType", "pNext", "swapchain", "timeout", "semaphore", "fence", -- ' closing tick for hsc2hs
-               "deviceMask"]
-        type CUnionType VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkAcquireNextImageInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkAcquireNextImageInfoKHR where
-        type FieldType "sType" VkAcquireNextImageInfoKHR = VkStructureType
-        type FieldOptional "sType" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkAcquireNextImageInfoKHR =
-             #{offset VkAcquireNextImageInfoKHR, sType}
-        type FieldIsArray "sType" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkAcquireNextImageInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkAcquireNextImageInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkAcquireNextImageInfoKHR where
-        type FieldType "pNext" VkAcquireNextImageInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkAcquireNextImageInfoKHR =
-             #{offset VkAcquireNextImageInfoKHR, pNext}
-        type FieldIsArray "pNext" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkAcquireNextImageInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkAcquireNextImageInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchain" VkAcquireNextImageInfoKHR where
-        type FieldType "swapchain" VkAcquireNextImageInfoKHR =
-             VkSwapchainKHR
-        type FieldOptional "swapchain" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "swapchain" VkAcquireNextImageInfoKHR =
-             #{offset VkAcquireNextImageInfoKHR, swapchain}
-        type FieldIsArray "swapchain" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHR, swapchain}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "swapchain" VkAcquireNextImageInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHR, swapchain})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHR, swapchain}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "swapchain" VkAcquireNextImageInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHR, swapchain}
-
-instance {-# OVERLAPPING #-}
-         HasField "timeout" VkAcquireNextImageInfoKHR where
-        type FieldType "timeout" VkAcquireNextImageInfoKHR = Word64
-        type FieldOptional "timeout" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "timeout" VkAcquireNextImageInfoKHR =
-             #{offset VkAcquireNextImageInfoKHR, timeout}
-        type FieldIsArray "timeout" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHR, timeout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "timeout" VkAcquireNextImageInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHR, timeout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHR, timeout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "timeout" VkAcquireNextImageInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHR, timeout}
-
-instance {-# OVERLAPPING #-}
-         HasField "semaphore" VkAcquireNextImageInfoKHR where
-        type FieldType "semaphore" VkAcquireNextImageInfoKHR = VkSemaphore
-        type FieldOptional "semaphore" VkAcquireNextImageInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "semaphore" VkAcquireNextImageInfoKHR =
-             #{offset VkAcquireNextImageInfoKHR, semaphore}
-        type FieldIsArray "semaphore" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "semaphore" VkAcquireNextImageInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHR, semaphore})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "semaphore" VkAcquireNextImageInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         HasField "fence" VkAcquireNextImageInfoKHR where
-        type FieldType "fence" VkAcquireNextImageInfoKHR = VkFence
-        type FieldOptional "fence" VkAcquireNextImageInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "fence" VkAcquireNextImageInfoKHR =
-             #{offset VkAcquireNextImageInfoKHR, fence}
-        type FieldIsArray "fence" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fence" VkAcquireNextImageInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHR, fence})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fence" VkAcquireNextImageInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceMask" VkAcquireNextImageInfoKHR where
-        type FieldType "deviceMask" VkAcquireNextImageInfoKHR = Word32
-        type FieldOptional "deviceMask" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceMask" VkAcquireNextImageInfoKHR =
-             #{offset VkAcquireNextImageInfoKHR, deviceMask}
-        type FieldIsArray "deviceMask" VkAcquireNextImageInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAcquireNextImageInfoKHR, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceMask" VkAcquireNextImageInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAcquireNextImageInfoKHR, deviceMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAcquireNextImageInfoKHR, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceMask" VkAcquireNextImageInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAcquireNextImageInfoKHR, deviceMask}
-
-instance Show VkAcquireNextImageInfoKHR where
-        showsPrec d x
-          = showString "VkAcquireNextImageInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "swapchain = " .
-                            showsPrec d (getField @"swapchain" x) .
-                              showString ", " .
-                                showString "timeout = " .
-                                  showsPrec d (getField @"timeout" x) .
-                                    showString ", " .
-                                      showString "semaphore = " .
-                                        showsPrec d (getField @"semaphore" x) .
-                                          showString ", " .
-                                            showString "fence = " .
-                                              showsPrec d (getField @"fence" x) .
-                                                showString ", " .
-                                                  showString "deviceMask = " .
-                                                    showsPrec d (getField @"deviceMask" x) .
-                                                      showChar '}'
+    type StructRep VkAcquireNextImageInfoKHR =
+         'StructMeta "VkAcquireNextImageInfoKHR" VkAcquireNextImageInfoKHR -- ' closing tick for hsc2hs
+           #{size VkAcquireNextImageInfoKHR}
+           #{alignment VkAcquireNextImageInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkAcquireNextImageInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkAcquireNextImageInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "swapchain" VkSwapchainKHR 'False 
+                                                           #{offset VkAcquireNextImageInfoKHR, swapchain}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "timeout" Word64 'False 
+                                                 #{offset VkAcquireNextImageInfoKHR, timeout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "semaphore" VkSemaphore 'True 
+                                                       #{offset VkAcquireNextImageInfoKHR, semaphore}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fence" VkFence 'True 
+                                               #{offset VkAcquireNextImageInfoKHR, fence}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceMask" Word32 'False 
+                                                    #{offset VkAcquireNextImageInfoKHR, deviceMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/AllocationCallbacks.hsc b/src-gen/Graphics/Vulkan/Types/Struct/AllocationCallbacks.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/AllocationCallbacks.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/AllocationCallbacks.hsc
@@ -2,14 +2,11 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.AllocationCallbacks
-       (VkAllocationCallbacks, VkAllocationCallbacks') where -- ' closing tick for hsc2hs
-import Foreign.Storable                   (Storable (..))
+       (VkAllocationCallbacks) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Funcpointers (PFN_vkAllocationFunction,
@@ -17,7 +14,6 @@
                                            PFN_vkInternalAllocationNotification,
                                            PFN_vkInternalFreeNotification,
                                            PFN_vkReallocationFunction)
-import System.IO.Unsafe                   (unsafeDupablePerformIO)
 
 -- | > typedef struct VkAllocationCallbacks {
 --   >     void*           pUserData;
@@ -29,257 +25,47 @@
 --   > } VkAllocationCallbacks;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAllocationCallbacks VkAllocationCallbacks registry at www.khronos.org>
-type VkAllocationCallbacks = VulkanStruct VkAllocationCallbacks' -- ' closing tick for hsc2hs
+type VkAllocationCallbacks = VkStruct VkAllocationCallbacks' -- ' closing tick for hsc2hs
 
 data VkAllocationCallbacks' -- ' closing tick for hsc2hs
 
-instance Eq VkAllocationCallbacks where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAllocationCallbacks where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAllocationCallbacks where
-        sizeOf ~_ = #{size VkAllocationCallbacks}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkAllocationCallbacks}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkAllocationCallbacks where
-        type StructFields VkAllocationCallbacks =
-             '["pUserData", "pfnAllocation", "pfnReallocation", "pfnFree", -- ' closing tick for hsc2hs
-               "pfnInternalAllocation", "pfnInternalFree"]
-        type CUnionType VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkAllocationCallbacks = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "pUserData" VkAllocationCallbacks where
-        type FieldType "pUserData" VkAllocationCallbacks = Ptr Void
-        type FieldOptional "pUserData" VkAllocationCallbacks = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pUserData" VkAllocationCallbacks =
-             #{offset VkAllocationCallbacks, pUserData}
-        type FieldIsArray "pUserData" VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAllocationCallbacks, pUserData}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pUserData" VkAllocationCallbacks where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pUserData})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAllocationCallbacks, pUserData}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pUserData" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pUserData}
-
-instance {-# OVERLAPPING #-}
-         HasField "pfnAllocation" VkAllocationCallbacks where
-        type FieldType "pfnAllocation" VkAllocationCallbacks =
-             PFN_vkAllocationFunction
-        type FieldOptional "pfnAllocation" VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pfnAllocation" VkAllocationCallbacks =
-             #{offset VkAllocationCallbacks, pfnAllocation}
-        type FieldIsArray "pfnAllocation" VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAllocationCallbacks, pfnAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pfnAllocation" VkAllocationCallbacks where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pfnAllocation" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "pfnReallocation" VkAllocationCallbacks where
-        type FieldType "pfnReallocation" VkAllocationCallbacks =
-             PFN_vkReallocationFunction
-        type FieldOptional "pfnReallocation" VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pfnReallocation" VkAllocationCallbacks =
-             #{offset VkAllocationCallbacks, pfnReallocation}
-        type FieldIsArray "pfnReallocation" VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAllocationCallbacks, pfnReallocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pfnReallocation" VkAllocationCallbacks where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnReallocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnReallocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pfnReallocation" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnReallocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "pfnFree" VkAllocationCallbacks where
-        type FieldType "pfnFree" VkAllocationCallbacks = PFN_vkFreeFunction
-        type FieldOptional "pfnFree" VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pfnFree" VkAllocationCallbacks =
-             #{offset VkAllocationCallbacks, pfnFree}
-        type FieldIsArray "pfnFree" VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkAllocationCallbacks, pfnFree}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pfnFree" VkAllocationCallbacks where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnFree})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnFree}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pfnFree" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnFree}
-
-instance {-# OVERLAPPING #-}
-         HasField "pfnInternalAllocation" VkAllocationCallbacks where
-        type FieldType "pfnInternalAllocation" VkAllocationCallbacks =
-             PFN_vkInternalAllocationNotification
-        type FieldOptional "pfnInternalAllocation" VkAllocationCallbacks =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pfnInternalAllocation" VkAllocationCallbacks =
-             #{offset VkAllocationCallbacks, pfnInternalAllocation}
-        type FieldIsArray "pfnInternalAllocation" VkAllocationCallbacks =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAllocationCallbacks, pfnInternalAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pfnInternalAllocation" VkAllocationCallbacks where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnInternalAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnInternalAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pfnInternalAllocation" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnInternalAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "pfnInternalFree" VkAllocationCallbacks where
-        type FieldType "pfnInternalFree" VkAllocationCallbacks =
-             PFN_vkInternalFreeNotification
-        type FieldOptional "pfnInternalFree" VkAllocationCallbacks = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pfnInternalFree" VkAllocationCallbacks =
-             #{offset VkAllocationCallbacks, pfnInternalFree}
-        type FieldIsArray "pfnInternalFree" VkAllocationCallbacks = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAllocationCallbacks, pfnInternalFree}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pfnInternalFree" VkAllocationCallbacks where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAllocationCallbacks, pfnInternalFree})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAllocationCallbacks, pfnInternalFree}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pfnInternalFree" VkAllocationCallbacks where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAllocationCallbacks, pfnInternalFree}
-
-instance Show VkAllocationCallbacks where
-        showsPrec d x
-          = showString "VkAllocationCallbacks {" .
-              showString "pUserData = " .
-                showsPrec d (getField @"pUserData" x) .
-                  showString ", " .
-                    showString "pfnAllocation = " .
-                      showsPrec d (getField @"pfnAllocation" x) .
-                        showString ", " .
-                          showString "pfnReallocation = " .
-                            showsPrec d (getField @"pfnReallocation" x) .
-                              showString ", " .
-                                showString "pfnFree = " .
-                                  showsPrec d (getField @"pfnFree" x) .
-                                    showString ", " .
-                                      showString "pfnInternalAllocation = " .
-                                        showsPrec d (getField @"pfnInternalAllocation" x) .
-                                          showString ", " .
-                                            showString "pfnInternalFree = " .
-                                              showsPrec d (getField @"pfnInternalFree" x) .
-                                                showChar '}'
+    type StructRep VkAllocationCallbacks =
+         'StructMeta "VkAllocationCallbacks" VkAllocationCallbacks  -- ' closing tick for hsc2hs
+                                                                   #{size VkAllocationCallbacks}
+           #{alignment VkAllocationCallbacks}
+           '[('FieldMeta "pUserData" (Ptr Void) 'True  -- ' closing tick for hsc2hs
+                                                      #{offset VkAllocationCallbacks, pUserData}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pfnAllocation" PFN_vkAllocationFunction 'False
+                #{offset VkAllocationCallbacks, pfnAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pfnReallocation" PFN_vkReallocationFunction 'False
+                #{offset VkAllocationCallbacks, pfnReallocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pfnFree" PFN_vkFreeFunction 'False 
+                                                             #{offset VkAllocationCallbacks, pfnFree}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pfnInternalAllocation" -- ' closing tick for hsc2hs
+                PFN_vkInternalAllocationNotification
+                'True -- ' closing tick for hsc2hs
+                #{offset VkAllocationCallbacks, pfnInternalAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pfnInternalFree" PFN_vkInternalFreeNotification 'True
+                #{offset VkAllocationCallbacks, pfnInternalFree}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/ApplicationInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/ApplicationInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/ApplicationInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/ApplicationInfo.hsc
@@ -2,18 +2,14 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.ApplicationInfo
-       (VkApplicationInfo, VkApplicationInfo') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkApplicationInfo) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkApplicationInfo {
 --   >     VkStructureType sType;
@@ -26,283 +22,50 @@
 --   > } VkApplicationInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkApplicationInfo VkApplicationInfo registry at www.khronos.org>
-type VkApplicationInfo = VulkanStruct VkApplicationInfo' -- ' closing tick for hsc2hs
+type VkApplicationInfo = VkStruct VkApplicationInfo' -- ' closing tick for hsc2hs
 
 data VkApplicationInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkApplicationInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkApplicationInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkApplicationInfo where
-        sizeOf ~_ = #{size VkApplicationInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkApplicationInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkApplicationInfo where
-        type StructFields VkApplicationInfo =
-             '["sType", "pNext", "pApplicationName", "applicationVersion", -- ' closing tick for hsc2hs
-               "pEngineName", "engineVersion", "apiVersion"]
-        type CUnionType VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkApplicationInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkApplicationInfo
-         where
-        type FieldType "sType" VkApplicationInfo = VkStructureType
-        type FieldOptional "sType" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkApplicationInfo =
-             #{offset VkApplicationInfo, sType}
-        type FieldIsArray "sType" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkApplicationInfo, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkApplicationInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkApplicationInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkApplicationInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkApplicationInfo
-         where
-        type FieldType "pNext" VkApplicationInfo = Ptr Void
-        type FieldOptional "pNext" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkApplicationInfo =
-             #{offset VkApplicationInfo, pNext}
-        type FieldIsArray "pNext" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkApplicationInfo, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkApplicationInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkApplicationInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkApplicationInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pApplicationName" VkApplicationInfo where
-        type FieldType "pApplicationName" VkApplicationInfo = CString
-        type FieldOptional "pApplicationName" VkApplicationInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pApplicationName" VkApplicationInfo =
-             #{offset VkApplicationInfo, pApplicationName}
-        type FieldIsArray "pApplicationName" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkApplicationInfo, pApplicationName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pApplicationName" VkApplicationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pApplicationName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkApplicationInfo, pApplicationName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pApplicationName" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkApplicationInfo, pApplicationName}
-
-instance {-# OVERLAPPING #-}
-         HasField "applicationVersion" VkApplicationInfo where
-        type FieldType "applicationVersion" VkApplicationInfo = Word32
-        type FieldOptional "applicationVersion" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "applicationVersion" VkApplicationInfo =
-             #{offset VkApplicationInfo, applicationVersion}
-        type FieldIsArray "applicationVersion" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkApplicationInfo, applicationVersion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "applicationVersion" VkApplicationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, applicationVersion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkApplicationInfo, applicationVersion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "applicationVersion" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkApplicationInfo, applicationVersion}
-
-instance {-# OVERLAPPING #-}
-         HasField "pEngineName" VkApplicationInfo where
-        type FieldType "pEngineName" VkApplicationInfo = CString
-        type FieldOptional "pEngineName" VkApplicationInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pEngineName" VkApplicationInfo =
-             #{offset VkApplicationInfo, pEngineName}
-        type FieldIsArray "pEngineName" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkApplicationInfo, pEngineName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pEngineName" VkApplicationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, pEngineName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkApplicationInfo, pEngineName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pEngineName" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkApplicationInfo, pEngineName}
-
-instance {-# OVERLAPPING #-}
-         HasField "engineVersion" VkApplicationInfo where
-        type FieldType "engineVersion" VkApplicationInfo = Word32
-        type FieldOptional "engineVersion" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "engineVersion" VkApplicationInfo =
-             #{offset VkApplicationInfo, engineVersion}
-        type FieldIsArray "engineVersion" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkApplicationInfo, engineVersion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "engineVersion" VkApplicationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, engineVersion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkApplicationInfo, engineVersion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "engineVersion" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkApplicationInfo, engineVersion}
-
-instance {-# OVERLAPPING #-}
-         HasField "apiVersion" VkApplicationInfo where
-        type FieldType "apiVersion" VkApplicationInfo = Word32
-        type FieldOptional "apiVersion" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "apiVersion" VkApplicationInfo =
-             #{offset VkApplicationInfo, apiVersion}
-        type FieldIsArray "apiVersion" VkApplicationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkApplicationInfo, apiVersion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "apiVersion" VkApplicationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkApplicationInfo, apiVersion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkApplicationInfo, apiVersion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "apiVersion" VkApplicationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkApplicationInfo, apiVersion}
-
-instance Show VkApplicationInfo where
-        showsPrec d x
-          = showString "VkApplicationInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pApplicationName = " .
-                            showsPrec d (getField @"pApplicationName" x) .
-                              showString ", " .
-                                showString "applicationVersion = " .
-                                  showsPrec d (getField @"applicationVersion" x) .
-                                    showString ", " .
-                                      showString "pEngineName = " .
-                                        showsPrec d (getField @"pEngineName" x) .
-                                          showString ", " .
-                                            showString "engineVersion = " .
-                                              showsPrec d (getField @"engineVersion" x) .
-                                                showString ", " .
-                                                  showString "apiVersion = " .
-                                                    showsPrec d (getField @"apiVersion" x) .
-                                                      showChar '}'
+    type StructRep VkApplicationInfo =
+         'StructMeta "VkApplicationInfo" VkApplicationInfo  -- ' closing tick for hsc2hs
+                                                           #{size VkApplicationInfo}
+           #{alignment VkApplicationInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkApplicationInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkApplicationInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pApplicationName" CString 'True 
+                                                          #{offset VkApplicationInfo, pApplicationName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "applicationVersion" Word32 'False 
+                                                            #{offset VkApplicationInfo, applicationVersion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pEngineName" CString 'True 
+                                                     #{offset VkApplicationInfo, pEngineName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "engineVersion" Word32 'False 
+                                                       #{offset VkApplicationInfo, engineVersion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "apiVersion" Word32 'False 
+                                                    #{offset VkApplicationInfo, apiVersion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Attachment.hsc
@@ -2,17 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Attachment
-       (VkAttachmentDescription, VkAttachmentDescription', -- ' closing tick for hsc2hs
-        VkAttachmentReference, VkAttachmentReference', -- ' closing tick for hsc2hs
-        VkAttachmentSampleLocationsEXT, VkAttachmentSampleLocationsEXT') -- ' closing tick for hsc2hs
+       (VkAttachmentDescription, VkAttachmentReference,
+        VkAttachmentSampleLocationsEXT)
        where
-import Foreign.Storable                            (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Attachment       (VkAttachmentDescriptionFlags,
@@ -22,7 +18,6 @@
 import Graphics.Vulkan.Types.Enum.Image            (VkImageLayout)
 import Graphics.Vulkan.Types.Enum.SampleCountFlags (VkSampleCountFlagBits)
 import Graphics.Vulkan.Types.Struct.SampleLocation (VkSampleLocationsInfoEXT)
-import System.IO.Unsafe                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkAttachmentDescription {
 --   >     VkAttachmentDescriptionFlags flags;
@@ -37,369 +32,63 @@
 --   > } VkAttachmentDescription;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAttachmentDescription VkAttachmentDescription registry at www.khronos.org>
-type VkAttachmentDescription =
-     VulkanStruct VkAttachmentDescription' -- ' closing tick for hsc2hs
+type VkAttachmentDescription = VkStruct VkAttachmentDescription' -- ' closing tick for hsc2hs
 
 data VkAttachmentDescription' -- ' closing tick for hsc2hs
 
-instance Eq VkAttachmentDescription where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAttachmentDescription where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAttachmentDescription where
-        sizeOf ~_ = #{size VkAttachmentDescription}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkAttachmentDescription}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkAttachmentDescription where
-        type StructFields VkAttachmentDescription =
-             '["flags", "format", "samples", "loadOp", "storeOp", -- ' closing tick for hsc2hs
-               "stencilLoadOp", "stencilStoreOp", "initialLayout", "finalLayout"]
-        type CUnionType VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkAttachmentDescription = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkAttachmentDescription where
-        type FieldType "flags" VkAttachmentDescription =
-             VkAttachmentDescriptionFlags
-        type FieldOptional "flags" VkAttachmentDescription = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, flags}
-        type FieldIsArray "flags" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkAttachmentDescription, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkAttachmentDescription where
-        type FieldType "format" VkAttachmentDescription = VkFormat
-        type FieldOptional "format" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, format}
-        type FieldIsArray "format" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkAttachmentDescription, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "samples" VkAttachmentDescription where
-        type FieldType "samples" VkAttachmentDescription =
-             VkSampleCountFlagBits
-        type FieldOptional "samples" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "samples" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, samples}
-        type FieldIsArray "samples" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentDescription, samples}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "samples" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, samples})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, samples}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "samples" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, samples}
-
-instance {-# OVERLAPPING #-}
-         HasField "loadOp" VkAttachmentDescription where
-        type FieldType "loadOp" VkAttachmentDescription =
-             VkAttachmentLoadOp
-        type FieldOptional "loadOp" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "loadOp" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, loadOp}
-        type FieldIsArray "loadOp" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkAttachmentDescription, loadOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "loadOp" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, loadOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, loadOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "loadOp" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, loadOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "storeOp" VkAttachmentDescription where
-        type FieldType "storeOp" VkAttachmentDescription =
-             VkAttachmentStoreOp
-        type FieldOptional "storeOp" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "storeOp" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, storeOp}
-        type FieldIsArray "storeOp" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentDescription, storeOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "storeOp" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, storeOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, storeOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "storeOp" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, storeOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "stencilLoadOp" VkAttachmentDescription where
-        type FieldType "stencilLoadOp" VkAttachmentDescription =
-             VkAttachmentLoadOp
-        type FieldOptional "stencilLoadOp" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "stencilLoadOp" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, stencilLoadOp}
-        type FieldIsArray "stencilLoadOp" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentDescription, stencilLoadOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stencilLoadOp" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, stencilLoadOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, stencilLoadOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stencilLoadOp" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, stencilLoadOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "stencilStoreOp" VkAttachmentDescription where
-        type FieldType "stencilStoreOp" VkAttachmentDescription =
-             VkAttachmentStoreOp
-        type FieldOptional "stencilStoreOp" VkAttachmentDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "stencilStoreOp" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, stencilStoreOp}
-        type FieldIsArray "stencilStoreOp" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentDescription, stencilStoreOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stencilStoreOp" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, stencilStoreOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, stencilStoreOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stencilStoreOp" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, stencilStoreOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "initialLayout" VkAttachmentDescription where
-        type FieldType "initialLayout" VkAttachmentDescription =
-             VkImageLayout
-        type FieldOptional "initialLayout" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "initialLayout" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, initialLayout}
-        type FieldIsArray "initialLayout" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentDescription, initialLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "initialLayout" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, initialLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, initialLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "initialLayout" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, initialLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "finalLayout" VkAttachmentDescription where
-        type FieldType "finalLayout" VkAttachmentDescription =
-             VkImageLayout
-        type FieldOptional "finalLayout" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "finalLayout" VkAttachmentDescription =
-             #{offset VkAttachmentDescription, finalLayout}
-        type FieldIsArray "finalLayout" VkAttachmentDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentDescription, finalLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "finalLayout" VkAttachmentDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentDescription, finalLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentDescription, finalLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "finalLayout" VkAttachmentDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentDescription, finalLayout}
-
-instance Show VkAttachmentDescription where
-        showsPrec d x
-          = showString "VkAttachmentDescription {" .
-              showString "flags = " .
-                showsPrec d (getField @"flags" x) .
-                  showString ", " .
-                    showString "format = " .
-                      showsPrec d (getField @"format" x) .
-                        showString ", " .
-                          showString "samples = " .
-                            showsPrec d (getField @"samples" x) .
-                              showString ", " .
-                                showString "loadOp = " .
-                                  showsPrec d (getField @"loadOp" x) .
-                                    showString ", " .
-                                      showString "storeOp = " .
-                                        showsPrec d (getField @"storeOp" x) .
-                                          showString ", " .
-                                            showString "stencilLoadOp = " .
-                                              showsPrec d (getField @"stencilLoadOp" x) .
-                                                showString ", " .
-                                                  showString "stencilStoreOp = " .
-                                                    showsPrec d (getField @"stencilStoreOp" x) .
-                                                      showString ", " .
-                                                        showString "initialLayout = " .
-                                                          showsPrec d (getField @"initialLayout" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "finalLayout = " .
-                                                                showsPrec d
-                                                                  (getField @"finalLayout" x)
-                                                                  . showChar '}'
+    type StructRep VkAttachmentDescription =
+         'StructMeta "VkAttachmentDescription" VkAttachmentDescription -- ' closing tick for hsc2hs
+           #{size VkAttachmentDescription}
+           #{alignment VkAttachmentDescription}
+           '[('FieldMeta "flags" VkAttachmentDescriptionFlags 'True  -- ' closing tick for hsc2hs
+                                                                    #{offset VkAttachmentDescription, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkAttachmentDescription, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "samples" VkSampleCountFlagBits 'False 
+                                                                #{offset VkAttachmentDescription, samples}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "loadOp" VkAttachmentLoadOp 'False 
+                                                            #{offset VkAttachmentDescription, loadOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "storeOp" VkAttachmentStoreOp 'False 
+                                                              #{offset VkAttachmentDescription, storeOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stencilLoadOp" VkAttachmentLoadOp 'False 
+                                                                   #{offset VkAttachmentDescription, stencilLoadOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stencilStoreOp" VkAttachmentStoreOp 'False 
+                                                                     #{offset VkAttachmentDescription, stencilStoreOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "initialLayout" VkImageLayout 'False 
+                                                              #{offset VkAttachmentDescription, initialLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "finalLayout" VkImageLayout 'False 
+                                                            #{offset VkAttachmentDescription, finalLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkAttachmentReference {
 --   >     uint32_t               attachment;
@@ -407,111 +96,28 @@
 --   > } VkAttachmentReference;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAttachmentReference VkAttachmentReference registry at www.khronos.org>
-type VkAttachmentReference = VulkanStruct VkAttachmentReference' -- ' closing tick for hsc2hs
+type VkAttachmentReference = VkStruct VkAttachmentReference' -- ' closing tick for hsc2hs
 
 data VkAttachmentReference' -- ' closing tick for hsc2hs
 
-instance Eq VkAttachmentReference where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAttachmentReference where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAttachmentReference where
-        sizeOf ~_ = #{size VkAttachmentReference}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkAttachmentReference}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkAttachmentReference where
-        type StructFields VkAttachmentReference = '["attachment", "layout"] -- ' closing tick for hsc2hs
-        type CUnionType VkAttachmentReference = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAttachmentReference = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkAttachmentReference = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "attachment" VkAttachmentReference where
-        type FieldType "attachment" VkAttachmentReference = Word32
-        type FieldOptional "attachment" VkAttachmentReference = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "attachment" VkAttachmentReference =
-             #{offset VkAttachmentReference, attachment}
-        type FieldIsArray "attachment" VkAttachmentReference = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentReference, attachment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "attachment" VkAttachmentReference where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentReference, attachment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentReference, attachment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "attachment" VkAttachmentReference where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentReference, attachment}
-
-instance {-# OVERLAPPING #-}
-         HasField "layout" VkAttachmentReference where
-        type FieldType "layout" VkAttachmentReference = VkImageLayout
-        type FieldOptional "layout" VkAttachmentReference = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layout" VkAttachmentReference =
-             #{offset VkAttachmentReference, layout}
-        type FieldIsArray "layout" VkAttachmentReference = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkAttachmentReference, layout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "layout" VkAttachmentReference where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentReference, layout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentReference, layout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "layout" VkAttachmentReference where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentReference, layout}
-
-instance Show VkAttachmentReference where
-        showsPrec d x
-          = showString "VkAttachmentReference {" .
-              showString "attachment = " .
-                showsPrec d (getField @"attachment" x) .
-                  showString ", " .
-                    showString "layout = " .
-                      showsPrec d (getField @"layout" x) . showChar '}'
+    type StructRep VkAttachmentReference =
+         'StructMeta "VkAttachmentReference" VkAttachmentReference  -- ' closing tick for hsc2hs
+                                                                   #{size VkAttachmentReference}
+           #{alignment VkAttachmentReference}
+           '[('FieldMeta "attachment" Word32 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkAttachmentReference, attachment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "layout" VkImageLayout 'False 
+                                                       #{offset VkAttachmentReference, layout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkAttachmentSampleLocationsEXT {
 --   >     uint32_t                         attachmentIndex;
@@ -520,124 +126,26 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAttachmentSampleLocationsEXT VkAttachmentSampleLocationsEXT registry at www.khronos.org>
 type VkAttachmentSampleLocationsEXT =
-     VulkanStruct VkAttachmentSampleLocationsEXT' -- ' closing tick for hsc2hs
+     VkStruct VkAttachmentSampleLocationsEXT' -- ' closing tick for hsc2hs
 
 data VkAttachmentSampleLocationsEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkAttachmentSampleLocationsEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAttachmentSampleLocationsEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAttachmentSampleLocationsEXT where
-        sizeOf ~_ = #{size VkAttachmentSampleLocationsEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkAttachmentSampleLocationsEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkAttachmentSampleLocationsEXT where
-        type StructFields VkAttachmentSampleLocationsEXT =
-             '["attachmentIndex", "sampleLocationsInfo"] -- ' closing tick for hsc2hs
-        type CUnionType VkAttachmentSampleLocationsEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAttachmentSampleLocationsEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkAttachmentSampleLocationsEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "attachmentIndex" VkAttachmentSampleLocationsEXT where
-        type FieldType "attachmentIndex" VkAttachmentSampleLocationsEXT =
-             Word32
-        type FieldOptional "attachmentIndex" VkAttachmentSampleLocationsEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "attachmentIndex" VkAttachmentSampleLocationsEXT =
-             #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
-        type FieldIsArray "attachmentIndex" VkAttachmentSampleLocationsEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "attachmentIndex" VkAttachmentSampleLocationsEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentSampleLocationsEXT, attachmentIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "attachmentIndex" VkAttachmentSampleLocationsEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationsInfo" VkAttachmentSampleLocationsEXT where
-        type FieldType "sampleLocationsInfo" VkAttachmentSampleLocationsEXT
-             = VkSampleLocationsInfoEXT
-        type FieldOptional "sampleLocationsInfo"
-               VkAttachmentSampleLocationsEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationsInfo"
-               VkAttachmentSampleLocationsEXT
-             =
-             #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
-        type FieldIsArray "sampleLocationsInfo"
-               VkAttachmentSampleLocationsEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationsInfo" VkAttachmentSampleLocationsEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationsInfo" VkAttachmentSampleLocationsEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
-
-instance Show VkAttachmentSampleLocationsEXT where
-        showsPrec d x
-          = showString "VkAttachmentSampleLocationsEXT {" .
-              showString "attachmentIndex = " .
-                showsPrec d (getField @"attachmentIndex" x) .
-                  showString ", " .
-                    showString "sampleLocationsInfo = " .
-                      showsPrec d (getField @"sampleLocationsInfo" x) . showChar '}'
+    type StructRep VkAttachmentSampleLocationsEXT =
+         'StructMeta "VkAttachmentSampleLocationsEXT" -- ' closing tick for hsc2hs
+           VkAttachmentSampleLocationsEXT
+           #{size VkAttachmentSampleLocationsEXT}
+           #{alignment VkAttachmentSampleLocationsEXT}
+           '[('FieldMeta "attachmentIndex" Word32 'False  -- ' closing tick for hsc2hs
+                                                         #{offset VkAttachmentSampleLocationsEXT, attachmentIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationsInfo" VkSampleLocationsInfoEXT 'False
+                #{offset VkAttachmentSampleLocationsEXT, sampleLocationsInfo}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Base.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Base.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Base.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Base.hsc
@@ -2,20 +2,14 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Base
-       (VkBaseInStructure, VkBaseInStructure', VkBaseOutStructure, -- ' closing tick for hsc2hs
-        VkBaseOutStructure') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
+       (VkBaseInStructure, VkBaseOutStructure) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkBaseInStructure {
 --   >     VkStructureType sType;
@@ -23,110 +17,28 @@
 --   > } VkBaseInStructure;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBaseInStructure VkBaseInStructure registry at www.khronos.org>
-type VkBaseInStructure = VulkanStruct VkBaseInStructure' -- ' closing tick for hsc2hs
+type VkBaseInStructure = VkStruct VkBaseInStructure' -- ' closing tick for hsc2hs
 
 data VkBaseInStructure' -- ' closing tick for hsc2hs
 
-instance Eq VkBaseInStructure where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBaseInStructure where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBaseInStructure where
-        sizeOf ~_ = #{size VkBaseInStructure}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBaseInStructure}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkBaseInStructure where
-        type StructFields VkBaseInStructure = '["sType", "pNext"] -- ' closing tick for hsc2hs
-        type CUnionType VkBaseInStructure = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBaseInStructure = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBaseInStructure = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkBaseInStructure
-         where
-        type FieldType "sType" VkBaseInStructure = VkStructureType
-        type FieldOptional "sType" VkBaseInStructure = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBaseInStructure =
-             #{offset VkBaseInStructure, sType}
-        type FieldIsArray "sType" VkBaseInStructure = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBaseInStructure, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkBaseInStructure
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBaseInStructure, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBaseInStructure, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBaseInStructure where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBaseInStructure, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkBaseInStructure
-         where
-        type FieldType "pNext" VkBaseInStructure = Ptr VkBaseInStructure
-        type FieldOptional "pNext" VkBaseInStructure = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBaseInStructure =
-             #{offset VkBaseInStructure, pNext}
-        type FieldIsArray "pNext" VkBaseInStructure = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBaseInStructure, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkBaseInStructure
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBaseInStructure, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBaseInStructure, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBaseInStructure where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBaseInStructure, pNext}
-
-instance Show VkBaseInStructure where
-        showsPrec d x
-          = showString "VkBaseInStructure {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) . showChar '}'
+    type StructRep VkBaseInStructure =
+         'StructMeta "VkBaseInStructure" VkBaseInStructure  -- ' closing tick for hsc2hs
+                                                           #{size VkBaseInStructure}
+           #{alignment VkBaseInStructure}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBaseInStructure, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr VkBaseInStructure) 'False 
+                                                                #{offset VkBaseInStructure, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkBaseOutStructure {
 --   >     VkStructureType sType;
@@ -134,107 +46,25 @@
 --   > } VkBaseOutStructure;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBaseOutStructure VkBaseOutStructure registry at www.khronos.org>
-type VkBaseOutStructure = VulkanStruct VkBaseOutStructure' -- ' closing tick for hsc2hs
+type VkBaseOutStructure = VkStruct VkBaseOutStructure' -- ' closing tick for hsc2hs
 
 data VkBaseOutStructure' -- ' closing tick for hsc2hs
 
-instance Eq VkBaseOutStructure where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBaseOutStructure where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBaseOutStructure where
-        sizeOf ~_ = #{size VkBaseOutStructure}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBaseOutStructure}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkBaseOutStructure where
-        type StructFields VkBaseOutStructure = '["sType", "pNext"] -- ' closing tick for hsc2hs
-        type CUnionType VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBaseOutStructure = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkBaseOutStructure
-         where
-        type FieldType "sType" VkBaseOutStructure = VkStructureType
-        type FieldOptional "sType" VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBaseOutStructure =
-             #{offset VkBaseOutStructure, sType}
-        type FieldIsArray "sType" VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBaseOutStructure, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBaseOutStructure where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBaseOutStructure, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBaseOutStructure, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBaseOutStructure where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBaseOutStructure, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkBaseOutStructure
-         where
-        type FieldType "pNext" VkBaseOutStructure = Ptr VkBaseOutStructure
-        type FieldOptional "pNext" VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBaseOutStructure =
-             #{offset VkBaseOutStructure, pNext}
-        type FieldIsArray "pNext" VkBaseOutStructure = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBaseOutStructure, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBaseOutStructure where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBaseOutStructure, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBaseOutStructure, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBaseOutStructure where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBaseOutStructure, pNext}
-
-instance Show VkBaseOutStructure where
-        showsPrec d x
-          = showString "VkBaseOutStructure {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) . showChar '}'
+    type StructRep VkBaseOutStructure =
+         'StructMeta "VkBaseOutStructure" VkBaseOutStructure  -- ' closing tick for hsc2hs
+                                                             #{size VkBaseOutStructure}
+           #{alignment VkBaseOutStructure}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBaseOutStructure, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr VkBaseOutStructure) 'False 
+                                                                 #{offset VkBaseOutStructure, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Bind.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Bind.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Bind.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Bind.hsc
@@ -2,1860 +2,407 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Bind
-       (VkBindBufferMemoryDeviceGroupInfo,
-        VkBindBufferMemoryDeviceGroupInfo', -- ' closing tick for hsc2hs
-        VkBindBufferMemoryDeviceGroupInfoKHR, VkBindBufferMemoryInfo,
-        VkBindBufferMemoryInfo', VkBindBufferMemoryInfoKHR, -- ' closing tick for hsc2hs
-        VkBindImageMemoryDeviceGroupInfo,
-        VkBindImageMemoryDeviceGroupInfo', -- ' closing tick for hsc2hs
-        VkBindImageMemoryDeviceGroupInfoKHR, VkBindImageMemoryInfo,
-        VkBindImageMemoryInfo', VkBindImageMemoryInfoKHR, -- ' closing tick for hsc2hs
-        VkBindImageMemorySwapchainInfoKHR,
-        VkBindImageMemorySwapchainInfoKHR', VkBindImagePlaneMemoryInfo, -- ' closing tick for hsc2hs
-        VkBindImagePlaneMemoryInfo', VkBindImagePlaneMemoryInfoKHR, -- ' closing tick for hsc2hs
-        VkBindSparseInfo, VkBindSparseInfo') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
-import Graphics.Vulkan.Types.Enum.Image         (VkImageAspectFlagBits)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDeviceMemory,
-                                                 VkImage, VkSemaphore,
-                                                 VkSwapchainKHR)
-import Graphics.Vulkan.Types.Struct.Rect        (VkRect2D)
-import Graphics.Vulkan.Types.Struct.Sparse      (VkSparseBufferMemoryBindInfo,
-                                                 VkSparseImageMemoryBindInfo,
-                                                 VkSparseImageOpaqueMemoryBindInfo)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkBindBufferMemoryDeviceGroupInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         deviceIndexCount;
---   >     const uint32_t*  pDeviceIndices;
---   > } VkBindBufferMemoryDeviceGroupInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfo registry at www.khronos.org>
-type VkBindBufferMemoryDeviceGroupInfo =
-     VulkanStruct VkBindBufferMemoryDeviceGroupInfo' -- ' closing tick for hsc2hs
-
-data VkBindBufferMemoryDeviceGroupInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkBindBufferMemoryDeviceGroupInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindBufferMemoryDeviceGroupInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindBufferMemoryDeviceGroupInfo where
-        sizeOf ~_ = #{size VkBindBufferMemoryDeviceGroupInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBindBufferMemoryDeviceGroupInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBindBufferMemoryDeviceGroupInfo where
-        type StructFields VkBindBufferMemoryDeviceGroupInfo =
-             '["sType", "pNext", "deviceIndexCount", "pDeviceIndices"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindBufferMemoryDeviceGroupInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindBufferMemoryDeviceGroupInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindBufferMemoryDeviceGroupInfo =
-             '[VkBindBufferMemoryInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindBufferMemoryDeviceGroupInfo where
-        type FieldType "sType" VkBindBufferMemoryDeviceGroupInfo =
-             VkStructureType
-        type FieldOptional "sType" VkBindBufferMemoryDeviceGroupInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindBufferMemoryDeviceGroupInfo =
-             #{offset VkBindBufferMemoryDeviceGroupInfo, sType}
-        type FieldIsArray "sType" VkBindBufferMemoryDeviceGroupInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryDeviceGroupInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBindBufferMemoryDeviceGroupInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryDeviceGroupInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryDeviceGroupInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBindBufferMemoryDeviceGroupInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryDeviceGroupInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindBufferMemoryDeviceGroupInfo where
-        type FieldType "pNext" VkBindBufferMemoryDeviceGroupInfo = Ptr Void
-        type FieldOptional "pNext" VkBindBufferMemoryDeviceGroupInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindBufferMemoryDeviceGroupInfo =
-             #{offset VkBindBufferMemoryDeviceGroupInfo, pNext}
-        type FieldIsArray "pNext" VkBindBufferMemoryDeviceGroupInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryDeviceGroupInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBindBufferMemoryDeviceGroupInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryDeviceGroupInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryDeviceGroupInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBindBufferMemoryDeviceGroupInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryDeviceGroupInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceIndexCount" VkBindBufferMemoryDeviceGroupInfo where
-        type FieldType "deviceIndexCount" VkBindBufferMemoryDeviceGroupInfo
-             = Word32
-        type FieldOptional "deviceIndexCount"
-               VkBindBufferMemoryDeviceGroupInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "deviceIndexCount"
-               VkBindBufferMemoryDeviceGroupInfo
-             =
-             #{offset VkBindBufferMemoryDeviceGroupInfo, deviceIndexCount}
-        type FieldIsArray "deviceIndexCount"
-               VkBindBufferMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryDeviceGroupInfo, deviceIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceIndexCount" VkBindBufferMemoryDeviceGroupInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryDeviceGroupInfo, deviceIndexCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryDeviceGroupInfo, deviceIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceIndexCount" VkBindBufferMemoryDeviceGroupInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryDeviceGroupInfo, deviceIndexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDeviceIndices" VkBindBufferMemoryDeviceGroupInfo where
-        type FieldType "pDeviceIndices" VkBindBufferMemoryDeviceGroupInfo =
-             Ptr Word32
-        type FieldOptional "pDeviceIndices"
-               VkBindBufferMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDeviceIndices" VkBindBufferMemoryDeviceGroupInfo
-             =
-             #{offset VkBindBufferMemoryDeviceGroupInfo, pDeviceIndices}
-        type FieldIsArray "pDeviceIndices"
-               VkBindBufferMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryDeviceGroupInfo, pDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDeviceIndices" VkBindBufferMemoryDeviceGroupInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryDeviceGroupInfo, pDeviceIndices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryDeviceGroupInfo, pDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDeviceIndices" VkBindBufferMemoryDeviceGroupInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryDeviceGroupInfo, pDeviceIndices}
-
-instance Show VkBindBufferMemoryDeviceGroupInfo where
-        showsPrec d x
-          = showString "VkBindBufferMemoryDeviceGroupInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "deviceIndexCount = " .
-                            showsPrec d (getField @"deviceIndexCount" x) .
-                              showString ", " .
-                                showString "pDeviceIndices = " .
-                                  showsPrec d (getField @"pDeviceIndices" x) . showChar '}'
-
--- | Alias for `VkBindBufferMemoryDeviceGroupInfo`
-type VkBindBufferMemoryDeviceGroupInfoKHR =
-     VkBindBufferMemoryDeviceGroupInfo
-
--- | > typedef struct VkBindBufferMemoryInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkBuffer                         buffer;
---   >     VkDeviceMemory                   memory;
---   >     VkDeviceSize                     memoryOffset;
---   > } VkBindBufferMemoryInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindBufferMemoryInfo VkBindBufferMemoryInfo registry at www.khronos.org>
-type VkBindBufferMemoryInfo = VulkanStruct VkBindBufferMemoryInfo' -- ' closing tick for hsc2hs
-
-data VkBindBufferMemoryInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkBindBufferMemoryInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindBufferMemoryInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindBufferMemoryInfo where
-        sizeOf ~_ = #{size VkBindBufferMemoryInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBindBufferMemoryInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBindBufferMemoryInfo where
-        type StructFields VkBindBufferMemoryInfo =
-             '["sType", "pNext", "buffer", "memory", "memoryOffset"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindBufferMemoryInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindBufferMemoryInfo where
-        type FieldType "sType" VkBindBufferMemoryInfo = VkStructureType
-        type FieldOptional "sType" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindBufferMemoryInfo =
-             #{offset VkBindBufferMemoryInfo, sType}
-        type FieldIsArray "sType" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindBufferMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBindBufferMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBindBufferMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindBufferMemoryInfo where
-        type FieldType "pNext" VkBindBufferMemoryInfo = Ptr Void
-        type FieldOptional "pNext" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindBufferMemoryInfo =
-             #{offset VkBindBufferMemoryInfo, pNext}
-        type FieldIsArray "pNext" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindBufferMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBindBufferMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBindBufferMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkBindBufferMemoryInfo where
-        type FieldType "buffer" VkBindBufferMemoryInfo = VkBuffer
-        type FieldOptional "buffer" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkBindBufferMemoryInfo =
-             #{offset VkBindBufferMemoryInfo, buffer}
-        type FieldIsArray "buffer" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindBufferMemoryInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkBindBufferMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfo, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkBindBufferMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "memory" VkBindBufferMemoryInfo where
-        type FieldType "memory" VkBindBufferMemoryInfo = VkDeviceMemory
-        type FieldOptional "memory" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkBindBufferMemoryInfo =
-             #{offset VkBindBufferMemoryInfo, memory}
-        type FieldIsArray "memory" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindBufferMemoryInfo, memory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memory" VkBindBufferMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfo, memory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryInfo, memory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memory" VkBindBufferMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfo, memory}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryOffset" VkBindBufferMemoryInfo where
-        type FieldType "memoryOffset" VkBindBufferMemoryInfo = VkDeviceSize
-        type FieldOptional "memoryOffset" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryOffset" VkBindBufferMemoryInfo =
-             #{offset VkBindBufferMemoryInfo, memoryOffset}
-        type FieldIsArray "memoryOffset" VkBindBufferMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindBufferMemoryInfo, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryOffset" VkBindBufferMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindBufferMemoryInfo, memoryOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindBufferMemoryInfo, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryOffset" VkBindBufferMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindBufferMemoryInfo, memoryOffset}
-
-instance Show VkBindBufferMemoryInfo where
-        showsPrec d x
-          = showString "VkBindBufferMemoryInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "buffer = " .
-                            showsPrec d (getField @"buffer" x) .
-                              showString ", " .
-                                showString "memory = " .
-                                  showsPrec d (getField @"memory" x) .
-                                    showString ", " .
-                                      showString "memoryOffset = " .
-                                        showsPrec d (getField @"memoryOffset" x) . showChar '}'
-
--- | Alias for `VkBindBufferMemoryInfo`
-type VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo
-
--- | > typedef struct VkBindImageMemoryDeviceGroupInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         deviceIndexCount;
---   >     const uint32_t*  pDeviceIndices;
---   >     uint32_t         splitInstanceBindRegionCount;
---   >     const VkRect2D*  pSplitInstanceBindRegions;
---   > } VkBindImageMemoryDeviceGroupInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfo registry at www.khronos.org>
-type VkBindImageMemoryDeviceGroupInfo =
-     VulkanStruct VkBindImageMemoryDeviceGroupInfo' -- ' closing tick for hsc2hs
-
-data VkBindImageMemoryDeviceGroupInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkBindImageMemoryDeviceGroupInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindImageMemoryDeviceGroupInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindImageMemoryDeviceGroupInfo where
-        sizeOf ~_ = #{size VkBindImageMemoryDeviceGroupInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBindImageMemoryDeviceGroupInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBindImageMemoryDeviceGroupInfo where
-        type StructFields VkBindImageMemoryDeviceGroupInfo =
-             '["sType", "pNext", "deviceIndexCount", "pDeviceIndices", -- ' closing tick for hsc2hs
-               "splitInstanceBindRegionCount", "pSplitInstanceBindRegions"]
-        type CUnionType VkBindImageMemoryDeviceGroupInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindImageMemoryDeviceGroupInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindImageMemoryDeviceGroupInfo =
-             '[VkBindImageMemoryInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindImageMemoryDeviceGroupInfo where
-        type FieldType "sType" VkBindImageMemoryDeviceGroupInfo =
-             VkStructureType
-        type FieldOptional "sType" VkBindImageMemoryDeviceGroupInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindImageMemoryDeviceGroupInfo =
-             #{offset VkBindImageMemoryDeviceGroupInfo, sType}
-        type FieldIsArray "sType" VkBindImageMemoryDeviceGroupInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBindImageMemoryDeviceGroupInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBindImageMemoryDeviceGroupInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindImageMemoryDeviceGroupInfo where
-        type FieldType "pNext" VkBindImageMemoryDeviceGroupInfo = Ptr Void
-        type FieldOptional "pNext" VkBindImageMemoryDeviceGroupInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindImageMemoryDeviceGroupInfo =
-             #{offset VkBindImageMemoryDeviceGroupInfo, pNext}
-        type FieldIsArray "pNext" VkBindImageMemoryDeviceGroupInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBindImageMemoryDeviceGroupInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBindImageMemoryDeviceGroupInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceIndexCount" VkBindImageMemoryDeviceGroupInfo where
-        type FieldType "deviceIndexCount" VkBindImageMemoryDeviceGroupInfo
-             = Word32
-        type FieldOptional "deviceIndexCount"
-               VkBindImageMemoryDeviceGroupInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "deviceIndexCount"
-               VkBindImageMemoryDeviceGroupInfo
-             =
-             #{offset VkBindImageMemoryDeviceGroupInfo, deviceIndexCount}
-        type FieldIsArray "deviceIndexCount"
-               VkBindImageMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfo, deviceIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceIndexCount" VkBindImageMemoryDeviceGroupInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfo, deviceIndexCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, deviceIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceIndexCount" VkBindImageMemoryDeviceGroupInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, deviceIndexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDeviceIndices" VkBindImageMemoryDeviceGroupInfo where
-        type FieldType "pDeviceIndices" VkBindImageMemoryDeviceGroupInfo =
-             Ptr Word32
-        type FieldOptional "pDeviceIndices"
-               VkBindImageMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDeviceIndices" VkBindImageMemoryDeviceGroupInfo
-             =
-             #{offset VkBindImageMemoryDeviceGroupInfo, pDeviceIndices}
-        type FieldIsArray "pDeviceIndices" VkBindImageMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfo, pDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDeviceIndices" VkBindImageMemoryDeviceGroupInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfo, pDeviceIndices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, pDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDeviceIndices" VkBindImageMemoryDeviceGroupInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, pDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         HasField "splitInstanceBindRegionCount"
-           VkBindImageMemoryDeviceGroupInfo
-         where
-        type FieldType "splitInstanceBindRegionCount"
-               VkBindImageMemoryDeviceGroupInfo
-             = Word32
-        type FieldOptional "splitInstanceBindRegionCount"
-               VkBindImageMemoryDeviceGroupInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "splitInstanceBindRegionCount"
-               VkBindImageMemoryDeviceGroupInfo
-             =
-             #{offset VkBindImageMemoryDeviceGroupInfo, splitInstanceBindRegionCount}
-        type FieldIsArray "splitInstanceBindRegionCount"
-               VkBindImageMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfo, splitInstanceBindRegionCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "splitInstanceBindRegionCount"
-           VkBindImageMemoryDeviceGroupInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfo, splitInstanceBindRegionCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, splitInstanceBindRegionCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "splitInstanceBindRegionCount"
-           VkBindImageMemoryDeviceGroupInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, splitInstanceBindRegionCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSplitInstanceBindRegions"
-           VkBindImageMemoryDeviceGroupInfo
-         where
-        type FieldType "pSplitInstanceBindRegions"
-               VkBindImageMemoryDeviceGroupInfo
-             = Ptr VkRect2D
-        type FieldOptional "pSplitInstanceBindRegions"
-               VkBindImageMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSplitInstanceBindRegions"
-               VkBindImageMemoryDeviceGroupInfo
-             =
-             #{offset VkBindImageMemoryDeviceGroupInfo, pSplitInstanceBindRegions}
-        type FieldIsArray "pSplitInstanceBindRegions"
-               VkBindImageMemoryDeviceGroupInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryDeviceGroupInfo, pSplitInstanceBindRegions}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSplitInstanceBindRegions"
-           VkBindImageMemoryDeviceGroupInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryDeviceGroupInfo, pSplitInstanceBindRegions})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, pSplitInstanceBindRegions}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSplitInstanceBindRegions"
-           VkBindImageMemoryDeviceGroupInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryDeviceGroupInfo, pSplitInstanceBindRegions}
-
-instance Show VkBindImageMemoryDeviceGroupInfo where
-        showsPrec d x
-          = showString "VkBindImageMemoryDeviceGroupInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "deviceIndexCount = " .
-                            showsPrec d (getField @"deviceIndexCount" x) .
-                              showString ", " .
-                                showString "pDeviceIndices = " .
-                                  showsPrec d (getField @"pDeviceIndices" x) .
-                                    showString ", " .
-                                      showString "splitInstanceBindRegionCount = " .
-                                        showsPrec d (getField @"splitInstanceBindRegionCount" x) .
-                                          showString ", " .
-                                            showString "pSplitInstanceBindRegions = " .
-                                              showsPrec d (getField @"pSplitInstanceBindRegions" x)
-                                                . showChar '}'
-
--- | Alias for `VkBindImageMemoryDeviceGroupInfo`
-type VkBindImageMemoryDeviceGroupInfoKHR =
-     VkBindImageMemoryDeviceGroupInfo
-
--- | > typedef struct VkBindImageMemoryInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkImage                          image;
---   >     VkDeviceMemory                   memory;
---   >     VkDeviceSize                     memoryOffset;
---   > } VkBindImageMemoryInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindImageMemoryInfo VkBindImageMemoryInfo registry at www.khronos.org>
-type VkBindImageMemoryInfo = VulkanStruct VkBindImageMemoryInfo' -- ' closing tick for hsc2hs
-
-data VkBindImageMemoryInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkBindImageMemoryInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindImageMemoryInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindImageMemoryInfo where
-        sizeOf ~_ = #{size VkBindImageMemoryInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBindImageMemoryInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBindImageMemoryInfo where
-        type StructFields VkBindImageMemoryInfo =
-             '["sType", "pNext", "image", "memory", "memoryOffset"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindImageMemoryInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkBindImageMemoryInfo
-         where
-        type FieldType "sType" VkBindImageMemoryInfo = VkStructureType
-        type FieldOptional "sType" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindImageMemoryInfo =
-             #{offset VkBindImageMemoryInfo, sType}
-        type FieldIsArray "sType" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindImageMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBindImageMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBindImageMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkBindImageMemoryInfo
-         where
-        type FieldType "pNext" VkBindImageMemoryInfo = Ptr Void
-        type FieldOptional "pNext" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindImageMemoryInfo =
-             #{offset VkBindImageMemoryInfo, pNext}
-        type FieldIsArray "pNext" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindImageMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBindImageMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBindImageMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "image" VkBindImageMemoryInfo
-         where
-        type FieldType "image" VkBindImageMemoryInfo = VkImage
-        type FieldOptional "image" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkBindImageMemoryInfo =
-             #{offset VkBindImageMemoryInfo, image}
-        type FieldIsArray "image" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindImageMemoryInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkBindImageMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfo, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkBindImageMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryInfo, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "memory" VkBindImageMemoryInfo where
-        type FieldType "memory" VkBindImageMemoryInfo = VkDeviceMemory
-        type FieldOptional "memory" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkBindImageMemoryInfo =
-             #{offset VkBindImageMemoryInfo, memory}
-        type FieldIsArray "memory" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindImageMemoryInfo, memory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memory" VkBindImageMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfo, memory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryInfo, memory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memory" VkBindImageMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryInfo, memory}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryOffset" VkBindImageMemoryInfo where
-        type FieldType "memoryOffset" VkBindImageMemoryInfo = VkDeviceSize
-        type FieldOptional "memoryOffset" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryOffset" VkBindImageMemoryInfo =
-             #{offset VkBindImageMemoryInfo, memoryOffset}
-        type FieldIsArray "memoryOffset" VkBindImageMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemoryInfo, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryOffset" VkBindImageMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemoryInfo, memoryOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemoryInfo, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryOffset" VkBindImageMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemoryInfo, memoryOffset}
-
-instance Show VkBindImageMemoryInfo where
-        showsPrec d x
-          = showString "VkBindImageMemoryInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "image = " .
-                            showsPrec d (getField @"image" x) .
-                              showString ", " .
-                                showString "memory = " .
-                                  showsPrec d (getField @"memory" x) .
-                                    showString ", " .
-                                      showString "memoryOffset = " .
-                                        showsPrec d (getField @"memoryOffset" x) . showChar '}'
-
--- | Alias for `VkBindImageMemoryInfo`
-type VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo
-
--- | > typedef struct VkBindImageMemorySwapchainInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSwapchainKHR swapchain;
---   >     uint32_t                         imageIndex;
---   > } VkBindImageMemorySwapchainInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindImageMemorySwapchainInfoKHR VkBindImageMemorySwapchainInfoKHR registry at www.khronos.org>
-type VkBindImageMemorySwapchainInfoKHR =
-     VulkanStruct VkBindImageMemorySwapchainInfoKHR' -- ' closing tick for hsc2hs
-
-data VkBindImageMemorySwapchainInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkBindImageMemorySwapchainInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindImageMemorySwapchainInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindImageMemorySwapchainInfoKHR where
-        sizeOf ~_ = #{size VkBindImageMemorySwapchainInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBindImageMemorySwapchainInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBindImageMemorySwapchainInfoKHR where
-        type StructFields VkBindImageMemorySwapchainInfoKHR =
-             '["sType", "pNext", "swapchain", "imageIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindImageMemorySwapchainInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindImageMemorySwapchainInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindImageMemorySwapchainInfoKHR =
-             '[VkBindImageMemoryInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindImageMemorySwapchainInfoKHR where
-        type FieldType "sType" VkBindImageMemorySwapchainInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkBindImageMemorySwapchainInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindImageMemorySwapchainInfoKHR =
-             #{offset VkBindImageMemorySwapchainInfoKHR, sType}
-        type FieldIsArray "sType" VkBindImageMemorySwapchainInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemorySwapchainInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBindImageMemorySwapchainInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemorySwapchainInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemorySwapchainInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBindImageMemorySwapchainInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemorySwapchainInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindImageMemorySwapchainInfoKHR where
-        type FieldType "pNext" VkBindImageMemorySwapchainInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkBindImageMemorySwapchainInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindImageMemorySwapchainInfoKHR =
-             #{offset VkBindImageMemorySwapchainInfoKHR, pNext}
-        type FieldIsArray "pNext" VkBindImageMemorySwapchainInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemorySwapchainInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBindImageMemorySwapchainInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemorySwapchainInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemorySwapchainInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBindImageMemorySwapchainInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemorySwapchainInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchain" VkBindImageMemorySwapchainInfoKHR where
-        type FieldType "swapchain" VkBindImageMemorySwapchainInfoKHR =
-             VkSwapchainKHR
-        type FieldOptional "swapchain" VkBindImageMemorySwapchainInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "swapchain" VkBindImageMemorySwapchainInfoKHR =
-             #{offset VkBindImageMemorySwapchainInfoKHR, swapchain}
-        type FieldIsArray "swapchain" VkBindImageMemorySwapchainInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemorySwapchainInfoKHR, swapchain}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "swapchain" VkBindImageMemorySwapchainInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemorySwapchainInfoKHR, swapchain})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemorySwapchainInfoKHR, swapchain}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "swapchain" VkBindImageMemorySwapchainInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemorySwapchainInfoKHR, swapchain}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageIndex" VkBindImageMemorySwapchainInfoKHR where
-        type FieldType "imageIndex" VkBindImageMemorySwapchainInfoKHR =
-             Word32
-        type FieldOptional "imageIndex" VkBindImageMemorySwapchainInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageIndex" VkBindImageMemorySwapchainInfoKHR =
-             #{offset VkBindImageMemorySwapchainInfoKHR, imageIndex}
-        type FieldIsArray "imageIndex" VkBindImageMemorySwapchainInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImageMemorySwapchainInfoKHR, imageIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageIndex" VkBindImageMemorySwapchainInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImageMemorySwapchainInfoKHR, imageIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImageMemorySwapchainInfoKHR, imageIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageIndex" VkBindImageMemorySwapchainInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImageMemorySwapchainInfoKHR, imageIndex}
-
-instance Show VkBindImageMemorySwapchainInfoKHR where
-        showsPrec d x
-          = showString "VkBindImageMemorySwapchainInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "swapchain = " .
-                            showsPrec d (getField @"swapchain" x) .
-                              showString ", " .
-                                showString "imageIndex = " .
-                                  showsPrec d (getField @"imageIndex" x) . showChar '}'
-
--- | > typedef struct VkBindImagePlaneMemoryInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkImageAspectFlagBits            planeAspect;
---   > } VkBindImagePlaneMemoryInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfo registry at www.khronos.org>
-type VkBindImagePlaneMemoryInfo =
-     VulkanStruct VkBindImagePlaneMemoryInfo' -- ' closing tick for hsc2hs
-
-data VkBindImagePlaneMemoryInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkBindImagePlaneMemoryInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindImagePlaneMemoryInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindImagePlaneMemoryInfo where
-        sizeOf ~_ = #{size VkBindImagePlaneMemoryInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBindImagePlaneMemoryInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBindImagePlaneMemoryInfo where
-        type StructFields VkBindImagePlaneMemoryInfo =
-             '["sType", "pNext", "planeAspect"] -- ' closing tick for hsc2hs
-        type CUnionType VkBindImagePlaneMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindImagePlaneMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindImagePlaneMemoryInfo =
-             '[VkBindImageMemoryInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBindImagePlaneMemoryInfo where
-        type FieldType "sType" VkBindImagePlaneMemoryInfo = VkStructureType
-        type FieldOptional "sType" VkBindImagePlaneMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindImagePlaneMemoryInfo =
-             #{offset VkBindImagePlaneMemoryInfo, sType}
-        type FieldIsArray "sType" VkBindImagePlaneMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImagePlaneMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBindImagePlaneMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImagePlaneMemoryInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImagePlaneMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBindImagePlaneMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImagePlaneMemoryInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBindImagePlaneMemoryInfo where
-        type FieldType "pNext" VkBindImagePlaneMemoryInfo = Ptr Void
-        type FieldOptional "pNext" VkBindImagePlaneMemoryInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindImagePlaneMemoryInfo =
-             #{offset VkBindImagePlaneMemoryInfo, pNext}
-        type FieldIsArray "pNext" VkBindImagePlaneMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImagePlaneMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBindImagePlaneMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImagePlaneMemoryInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImagePlaneMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBindImagePlaneMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImagePlaneMemoryInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "planeAspect" VkBindImagePlaneMemoryInfo where
-        type FieldType "planeAspect" VkBindImagePlaneMemoryInfo =
-             VkImageAspectFlagBits
-        type FieldOptional "planeAspect" VkBindImagePlaneMemoryInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "planeAspect" VkBindImagePlaneMemoryInfo =
-             #{offset VkBindImagePlaneMemoryInfo, planeAspect}
-        type FieldIsArray "planeAspect" VkBindImagePlaneMemoryInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindImagePlaneMemoryInfo, planeAspect}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "planeAspect" VkBindImagePlaneMemoryInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindImagePlaneMemoryInfo, planeAspect})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindImagePlaneMemoryInfo, planeAspect}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "planeAspect" VkBindImagePlaneMemoryInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindImagePlaneMemoryInfo, planeAspect}
-
-instance Show VkBindImagePlaneMemoryInfo where
-        showsPrec d x
-          = showString "VkBindImagePlaneMemoryInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "planeAspect = " .
-                            showsPrec d (getField @"planeAspect" x) . showChar '}'
-
--- | Alias for `VkBindImagePlaneMemoryInfo`
-type VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo
-
--- | > typedef struct VkBindSparseInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     uint32_t               waitSemaphoreCount;
---   >     const VkSemaphore*     pWaitSemaphores;
---   >     uint32_t               bufferBindCount;
---   >     const VkSparseBufferMemoryBindInfo* pBufferBinds;
---   >     uint32_t               imageOpaqueBindCount;
---   >     const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
---   >     uint32_t               imageBindCount;
---   >     const VkSparseImageMemoryBindInfo* pImageBinds;
---   >     uint32_t               signalSemaphoreCount;
---   >     const VkSemaphore*     pSignalSemaphores;
---   > } VkBindSparseInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindSparseInfo VkBindSparseInfo registry at www.khronos.org>
-type VkBindSparseInfo = VulkanStruct VkBindSparseInfo' -- ' closing tick for hsc2hs
-
-data VkBindSparseInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkBindSparseInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBindSparseInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBindSparseInfo where
-        sizeOf ~_ = #{size VkBindSparseInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBindSparseInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBindSparseInfo where
-        type StructFields VkBindSparseInfo =
-             '["sType", "pNext", "waitSemaphoreCount", "pWaitSemaphores", -- ' closing tick for hsc2hs
-               "bufferBindCount", "pBufferBinds", "imageOpaqueBindCount",
-               "pImageOpaqueBinds", "imageBindCount", "pImageBinds",
-               "signalSemaphoreCount", "pSignalSemaphores"]
-        type CUnionType VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBindSparseInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkBindSparseInfo
-         where
-        type FieldType "sType" VkBindSparseInfo = VkStructureType
-        type FieldOptional "sType" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, sType}
-        type FieldIsArray "sType" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindSparseInfo, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkBindSparseInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, sType}
-
-instance {-# OVERLAPPING #-} CanWriteField "sType" VkBindSparseInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkBindSparseInfo
-         where
-        type FieldType "pNext" VkBindSparseInfo = Ptr Void
-        type FieldOptional "pNext" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, pNext}
-        type FieldIsArray "pNext" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindSparseInfo, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkBindSparseInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, pNext}
-
-instance {-# OVERLAPPING #-} CanWriteField "pNext" VkBindSparseInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "waitSemaphoreCount" VkBindSparseInfo where
-        type FieldType "waitSemaphoreCount" VkBindSparseInfo = Word32
-        type FieldOptional "waitSemaphoreCount" VkBindSparseInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "waitSemaphoreCount" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, waitSemaphoreCount}
-        type FieldIsArray "waitSemaphoreCount" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindSparseInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "waitSemaphoreCount" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, waitSemaphoreCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "waitSemaphoreCount" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pWaitSemaphores" VkBindSparseInfo where
-        type FieldType "pWaitSemaphores" VkBindSparseInfo = Ptr VkSemaphore
-        type FieldOptional "pWaitSemaphores" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pWaitSemaphores" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, pWaitSemaphores}
-        type FieldIsArray "pWaitSemaphores" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindSparseInfo, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pWaitSemaphores" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pWaitSemaphores})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pWaitSemaphores" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         HasField "bufferBindCount" VkBindSparseInfo where
-        type FieldType "bufferBindCount" VkBindSparseInfo = Word32
-        type FieldOptional "bufferBindCount" VkBindSparseInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "bufferBindCount" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, bufferBindCount}
-        type FieldIsArray "bufferBindCount" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindSparseInfo, bufferBindCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bufferBindCount" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, bufferBindCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, bufferBindCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bufferBindCount" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, bufferBindCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pBufferBinds" VkBindSparseInfo where
-        type FieldType "pBufferBinds" VkBindSparseInfo =
-             Ptr VkSparseBufferMemoryBindInfo
-        type FieldOptional "pBufferBinds" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pBufferBinds" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, pBufferBinds}
-        type FieldIsArray "pBufferBinds" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindSparseInfo, pBufferBinds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pBufferBinds" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pBufferBinds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, pBufferBinds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pBufferBinds" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, pBufferBinds}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageOpaqueBindCount" VkBindSparseInfo where
-        type FieldType "imageOpaqueBindCount" VkBindSparseInfo = Word32
-        type FieldOptional "imageOpaqueBindCount" VkBindSparseInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "imageOpaqueBindCount" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, imageOpaqueBindCount}
-        type FieldIsArray "imageOpaqueBindCount" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindSparseInfo, imageOpaqueBindCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageOpaqueBindCount" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, imageOpaqueBindCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, imageOpaqueBindCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageOpaqueBindCount" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, imageOpaqueBindCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pImageOpaqueBinds" VkBindSparseInfo where
-        type FieldType "pImageOpaqueBinds" VkBindSparseInfo =
-             Ptr VkSparseImageOpaqueMemoryBindInfo
-        type FieldOptional "pImageOpaqueBinds" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pImageOpaqueBinds" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, pImageOpaqueBinds}
-        type FieldIsArray "pImageOpaqueBinds" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindSparseInfo, pImageOpaqueBinds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pImageOpaqueBinds" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pImageOpaqueBinds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, pImageOpaqueBinds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pImageOpaqueBinds" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, pImageOpaqueBinds}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageBindCount" VkBindSparseInfo where
-        type FieldType "imageBindCount" VkBindSparseInfo = Word32
-        type FieldOptional "imageBindCount" VkBindSparseInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "imageBindCount" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, imageBindCount}
-        type FieldIsArray "imageBindCount" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindSparseInfo, imageBindCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageBindCount" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, imageBindCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, imageBindCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageBindCount" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, imageBindCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pImageBinds" VkBindSparseInfo where
-        type FieldType "pImageBinds" VkBindSparseInfo =
-             Ptr VkSparseImageMemoryBindInfo
-        type FieldOptional "pImageBinds" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pImageBinds" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, pImageBinds}
-        type FieldIsArray "pImageBinds" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBindSparseInfo, pImageBinds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pImageBinds" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pImageBinds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, pImageBinds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pImageBinds" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, pImageBinds}
-
-instance {-# OVERLAPPING #-}
-         HasField "signalSemaphoreCount" VkBindSparseInfo where
-        type FieldType "signalSemaphoreCount" VkBindSparseInfo = Word32
-        type FieldOptional "signalSemaphoreCount" VkBindSparseInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "signalSemaphoreCount" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, signalSemaphoreCount}
-        type FieldIsArray "signalSemaphoreCount" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindSparseInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "signalSemaphoreCount" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, signalSemaphoreCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "signalSemaphoreCount" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSignalSemaphores" VkBindSparseInfo where
-        type FieldType "pSignalSemaphores" VkBindSparseInfo =
-             Ptr VkSemaphore
-        type FieldOptional "pSignalSemaphores" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSignalSemaphores" VkBindSparseInfo =
-             #{offset VkBindSparseInfo, pSignalSemaphores}
-        type FieldIsArray "pSignalSemaphores" VkBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBindSparseInfo, pSignalSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSignalSemaphores" VkBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBindSparseInfo, pSignalSemaphores})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBindSparseInfo, pSignalSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSignalSemaphores" VkBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBindSparseInfo, pSignalSemaphores}
-
-instance Show VkBindSparseInfo where
-        showsPrec d x
-          = showString "VkBindSparseInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "waitSemaphoreCount = " .
-                            showsPrec d (getField @"waitSemaphoreCount" x) .
-                              showString ", " .
-                                showString "pWaitSemaphores = " .
-                                  showsPrec d (getField @"pWaitSemaphores" x) .
-                                    showString ", " .
-                                      showString "bufferBindCount = " .
-                                        showsPrec d (getField @"bufferBindCount" x) .
-                                          showString ", " .
-                                            showString "pBufferBinds = " .
-                                              showsPrec d (getField @"pBufferBinds" x) .
-                                                showString ", " .
-                                                  showString "imageOpaqueBindCount = " .
-                                                    showsPrec d (getField @"imageOpaqueBindCount" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "pImageOpaqueBinds = " .
-                                                          showsPrec d
-                                                            (getField @"pImageOpaqueBinds" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "imageBindCount = " .
-                                                                showsPrec d
-                                                                  (getField @"imageBindCount" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "pImageBinds = " .
-                                                                      showsPrec d
-                                                                        (getField @"pImageBinds" x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "signalSemaphoreCount = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"signalSemaphoreCount"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "pSignalSemaphores = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"pSignalSemaphores"
-                                                                                       x)
-                                                                                    . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Bind
+       (VkBindBufferMemoryDeviceGroupInfo,
+        VkBindBufferMemoryDeviceGroupInfoKHR, VkBindBufferMemoryInfo,
+        VkBindBufferMemoryInfoKHR, VkBindImageMemoryDeviceGroupInfo,
+        VkBindImageMemoryDeviceGroupInfoKHR, VkBindImageMemoryInfo,
+        VkBindImageMemoryInfoKHR, VkBindImageMemorySwapchainInfoKHR,
+        VkBindImagePlaneMemoryInfo, VkBindImagePlaneMemoryInfoKHR,
+        VkBindSparseInfo)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
+import Graphics.Vulkan.Types.Enum.Image         (VkImageAspectFlagBits)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDeviceMemory,
+                                                 VkImage, VkSemaphore,
+                                                 VkSwapchainKHR)
+import Graphics.Vulkan.Types.Struct.Rect        (VkRect2D)
+import Graphics.Vulkan.Types.Struct.Sparse      (VkSparseBufferMemoryBindInfo,
+                                                 VkSparseImageMemoryBindInfo,
+                                                 VkSparseImageOpaqueMemoryBindInfo)
+
+-- | > typedef struct VkBindBufferMemoryDeviceGroupInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t         deviceIndexCount;
+--   >     const uint32_t*  pDeviceIndices;
+--   > } VkBindBufferMemoryDeviceGroupInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfo registry at www.khronos.org>
+type VkBindBufferMemoryDeviceGroupInfo =
+     VkStruct VkBindBufferMemoryDeviceGroupInfo' -- ' closing tick for hsc2hs
+
+data VkBindBufferMemoryDeviceGroupInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBindBufferMemoryDeviceGroupInfo where
+    type StructRep VkBindBufferMemoryDeviceGroupInfo =
+         'StructMeta "VkBindBufferMemoryDeviceGroupInfo" -- ' closing tick for hsc2hs
+           VkBindBufferMemoryDeviceGroupInfo
+           #{size VkBindBufferMemoryDeviceGroupInfo}
+           #{alignment VkBindBufferMemoryDeviceGroupInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBindBufferMemoryDeviceGroupInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBindBufferMemoryDeviceGroupInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceIndexCount" Word32 'True 
+                                                         #{offset VkBindBufferMemoryDeviceGroupInfo, deviceIndexCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDeviceIndices" (Ptr Word32) 'False 
+                                                              #{offset VkBindBufferMemoryDeviceGroupInfo, pDeviceIndices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkBindBufferMemoryInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkBindBufferMemoryDeviceGroupInfo`
+type VkBindBufferMemoryDeviceGroupInfoKHR =
+     VkBindBufferMemoryDeviceGroupInfo
+
+-- | > typedef struct VkBindBufferMemoryInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkBuffer                         buffer;
+--   >     VkDeviceMemory                   memory;
+--   >     VkDeviceSize                     memoryOffset;
+--   > } VkBindBufferMemoryInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindBufferMemoryInfo VkBindBufferMemoryInfo registry at www.khronos.org>
+type VkBindBufferMemoryInfo = VkStruct VkBindBufferMemoryInfo' -- ' closing tick for hsc2hs
+
+data VkBindBufferMemoryInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBindBufferMemoryInfo where
+    type StructRep VkBindBufferMemoryInfo =
+         'StructMeta "VkBindBufferMemoryInfo" VkBindBufferMemoryInfo -- ' closing tick for hsc2hs
+           #{size VkBindBufferMemoryInfo}
+           #{alignment VkBindBufferMemoryInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBindBufferMemoryInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBindBufferMemoryInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'False 
+                                                  #{offset VkBindBufferMemoryInfo, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memory" VkDeviceMemory 'False 
+                                                        #{offset VkBindBufferMemoryInfo, memory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryOffset" VkDeviceSize 'False 
+                                                            #{offset VkBindBufferMemoryInfo, memoryOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkBindBufferMemoryInfo`
+type VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo
+
+-- | > typedef struct VkBindImageMemoryDeviceGroupInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t         deviceIndexCount;
+--   >     const uint32_t*  pDeviceIndices;
+--   >     uint32_t         splitInstanceBindRegionCount;
+--   >     const VkRect2D*  pSplitInstanceBindRegions;
+--   > } VkBindImageMemoryDeviceGroupInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfo registry at www.khronos.org>
+type VkBindImageMemoryDeviceGroupInfo =
+     VkStruct VkBindImageMemoryDeviceGroupInfo' -- ' closing tick for hsc2hs
+
+data VkBindImageMemoryDeviceGroupInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBindImageMemoryDeviceGroupInfo where
+    type StructRep VkBindImageMemoryDeviceGroupInfo =
+         'StructMeta "VkBindImageMemoryDeviceGroupInfo" -- ' closing tick for hsc2hs
+           VkBindImageMemoryDeviceGroupInfo
+           #{size VkBindImageMemoryDeviceGroupInfo}
+           #{alignment VkBindImageMemoryDeviceGroupInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBindImageMemoryDeviceGroupInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBindImageMemoryDeviceGroupInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceIndexCount" Word32 'True 
+                                                         #{offset VkBindImageMemoryDeviceGroupInfo, deviceIndexCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDeviceIndices" (Ptr Word32) 'False 
+                                                              #{offset VkBindImageMemoryDeviceGroupInfo, pDeviceIndices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "splitInstanceBindRegionCount" Word32 'True 
+                                                                     #{offset VkBindImageMemoryDeviceGroupInfo, splitInstanceBindRegionCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSplitInstanceBindRegions" (Ptr VkRect2D) 'False
+                #{offset VkBindImageMemoryDeviceGroupInfo, pSplitInstanceBindRegions}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkBindImageMemoryInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkBindImageMemoryDeviceGroupInfo`
+type VkBindImageMemoryDeviceGroupInfoKHR =
+     VkBindImageMemoryDeviceGroupInfo
+
+-- | > typedef struct VkBindImageMemoryInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkImage                          image;
+--   >     VkDeviceMemory                   memory;
+--   >     VkDeviceSize                     memoryOffset;
+--   > } VkBindImageMemoryInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindImageMemoryInfo VkBindImageMemoryInfo registry at www.khronos.org>
+type VkBindImageMemoryInfo = VkStruct VkBindImageMemoryInfo' -- ' closing tick for hsc2hs
+
+data VkBindImageMemoryInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBindImageMemoryInfo where
+    type StructRep VkBindImageMemoryInfo =
+         'StructMeta "VkBindImageMemoryInfo" VkBindImageMemoryInfo  -- ' closing tick for hsc2hs
+                                                                   #{size VkBindImageMemoryInfo}
+           #{alignment VkBindImageMemoryInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBindImageMemoryInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBindImageMemoryInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "image" VkImage 'False 
+                                                #{offset VkBindImageMemoryInfo, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memory" VkDeviceMemory 'False 
+                                                        #{offset VkBindImageMemoryInfo, memory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryOffset" VkDeviceSize 'False 
+                                                            #{offset VkBindImageMemoryInfo, memoryOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkBindImageMemoryInfo`
+type VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo
+
+-- | > typedef struct VkBindImageMemorySwapchainInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSwapchainKHR swapchain;
+--   >     uint32_t                         imageIndex;
+--   > } VkBindImageMemorySwapchainInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindImageMemorySwapchainInfoKHR VkBindImageMemorySwapchainInfoKHR registry at www.khronos.org>
+type VkBindImageMemorySwapchainInfoKHR =
+     VkStruct VkBindImageMemorySwapchainInfoKHR' -- ' closing tick for hsc2hs
+
+data VkBindImageMemorySwapchainInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBindImageMemorySwapchainInfoKHR where
+    type StructRep VkBindImageMemorySwapchainInfoKHR =
+         'StructMeta "VkBindImageMemorySwapchainInfoKHR" -- ' closing tick for hsc2hs
+           VkBindImageMemorySwapchainInfoKHR
+           #{size VkBindImageMemorySwapchainInfoKHR}
+           #{alignment VkBindImageMemorySwapchainInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBindImageMemorySwapchainInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBindImageMemorySwapchainInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "swapchain" VkSwapchainKHR 'False 
+                                                           #{offset VkBindImageMemorySwapchainInfoKHR, swapchain}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageIndex" Word32 'False 
+                                                    #{offset VkBindImageMemorySwapchainInfoKHR, imageIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkBindImageMemoryInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkBindImagePlaneMemoryInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkImageAspectFlagBits            planeAspect;
+--   > } VkBindImagePlaneMemoryInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfo registry at www.khronos.org>
+type VkBindImagePlaneMemoryInfo =
+     VkStruct VkBindImagePlaneMemoryInfo' -- ' closing tick for hsc2hs
+
+data VkBindImagePlaneMemoryInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBindImagePlaneMemoryInfo where
+    type StructRep VkBindImagePlaneMemoryInfo =
+         'StructMeta "VkBindImagePlaneMemoryInfo" VkBindImagePlaneMemoryInfo -- ' closing tick for hsc2hs
+           #{size VkBindImagePlaneMemoryInfo}
+           #{alignment VkBindImagePlaneMemoryInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBindImagePlaneMemoryInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBindImagePlaneMemoryInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "planeAspect" VkImageAspectFlagBits 'False 
+                                                                    #{offset VkBindImagePlaneMemoryInfo, planeAspect}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkBindImageMemoryInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkBindImagePlaneMemoryInfo`
+type VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo
+
+-- | > typedef struct VkBindSparseInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     uint32_t               waitSemaphoreCount;
+--   >     const VkSemaphore*     pWaitSemaphores;
+--   >     uint32_t               bufferBindCount;
+--   >     const VkSparseBufferMemoryBindInfo* pBufferBinds;
+--   >     uint32_t               imageOpaqueBindCount;
+--   >     const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
+--   >     uint32_t               imageBindCount;
+--   >     const VkSparseImageMemoryBindInfo* pImageBinds;
+--   >     uint32_t               signalSemaphoreCount;
+--   >     const VkSemaphore*     pSignalSemaphores;
+--   > } VkBindSparseInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBindSparseInfo VkBindSparseInfo registry at www.khronos.org>
+type VkBindSparseInfo = VkStruct VkBindSparseInfo' -- ' closing tick for hsc2hs
+
+data VkBindSparseInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBindSparseInfo where
+    type StructRep VkBindSparseInfo =
+         'StructMeta "VkBindSparseInfo" VkBindSparseInfo  -- ' closing tick for hsc2hs
+                                                         #{size VkBindSparseInfo}
+           #{alignment VkBindSparseInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBindSparseInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBindSparseInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "waitSemaphoreCount" Word32 'True 
+                                                           #{offset VkBindSparseInfo, waitSemaphoreCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pWaitSemaphores" (Ptr VkSemaphore) 'False 
+                                                                    #{offset VkBindSparseInfo, pWaitSemaphores}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bufferBindCount" Word32 'True 
+                                                        #{offset VkBindSparseInfo, bufferBindCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pBufferBinds" (Ptr VkSparseBufferMemoryBindInfo) -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkBindSparseInfo, pBufferBinds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageOpaqueBindCount" Word32 'True 
+                                                             #{offset VkBindSparseInfo, imageOpaqueBindCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pImageOpaqueBinds" -- ' closing tick for hsc2hs
+                (Ptr VkSparseImageOpaqueMemoryBindInfo)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkBindSparseInfo, pImageOpaqueBinds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageBindCount" Word32 'True 
+                                                       #{offset VkBindSparseInfo, imageBindCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pImageBinds" (Ptr VkSparseImageMemoryBindInfo) 'False
+                #{offset VkBindSparseInfo, pImageBinds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "signalSemaphoreCount" Word32 'True 
+                                                             #{offset VkBindSparseInfo, signalSemaphoreCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSignalSemaphores" (Ptr VkSemaphore) 'False 
+                                                                      #{offset VkBindSparseInfo, pSignalSemaphores}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Buffer.hsc
@@ -2,1583 +2,349 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Buffer
-       (VkBufferCopy, VkBufferCopy', VkBufferCreateInfo, -- ' closing tick for hsc2hs
-        VkBufferCreateInfo', VkBufferImageCopy, VkBufferImageCopy',
-        VkBufferMemoryBarrier, VkBufferMemoryBarrier', -- ' closing tick for hsc2hs
-        VkBufferMemoryRequirementsInfo2, VkBufferMemoryRequirementsInfo2', -- ' closing tick for hsc2hs
-        VkBufferMemoryRequirementsInfo2KHR, VkBufferViewCreateInfo,
-        VkBufferViewCreateInfo') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
-import Graphics.Vulkan.Types.Bitmasks           (VkBufferViewCreateFlags)
-import Graphics.Vulkan.Types.Enum.AccessFlags   (VkAccessFlags)
-import Graphics.Vulkan.Types.Enum.Buffer        (VkBufferCreateFlags,
-                                                 VkBufferUsageFlags)
-import Graphics.Vulkan.Types.Enum.Format        (VkFormat)
-import Graphics.Vulkan.Types.Enum.SharingMode   (VkSharingMode)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkBuffer)
-import Graphics.Vulkan.Types.Struct.Extent      (VkExtent3D)
-import Graphics.Vulkan.Types.Struct.Image       (VkImageSubresourceLayers)
-import Graphics.Vulkan.Types.Struct.Offset      (VkOffset3D)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkBufferCopy {
---   >     VkDeviceSize           srcOffset;
---   >     VkDeviceSize           dstOffset;
---   >     VkDeviceSize           size;
---   > } VkBufferCopy;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferCopy VkBufferCopy registry at www.khronos.org>
-type VkBufferCopy = VulkanStruct VkBufferCopy' -- ' closing tick for hsc2hs
-
-data VkBufferCopy' -- ' closing tick for hsc2hs
-
-instance Eq VkBufferCopy where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBufferCopy where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBufferCopy where
-        sizeOf ~_ = #{size VkBufferCopy}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBufferCopy}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBufferCopy where
-        type StructFields VkBufferCopy =
-             '["srcOffset", "dstOffset", "size"] -- ' closing tick for hsc2hs
-        type CUnionType VkBufferCopy = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBufferCopy = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBufferCopy = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "srcOffset" VkBufferCopy
-         where
-        type FieldType "srcOffset" VkBufferCopy = VkDeviceSize
-        type FieldOptional "srcOffset" VkBufferCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcOffset" VkBufferCopy =
-             #{offset VkBufferCopy, srcOffset}
-        type FieldIsArray "srcOffset" VkBufferCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCopy, srcOffset}
-
-instance {-# OVERLAPPING #-} CanReadField "srcOffset" VkBufferCopy
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, srcOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCopy, srcOffset}
-
-instance {-# OVERLAPPING #-} CanWriteField "srcOffset" VkBufferCopy
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCopy, srcOffset}
-
-instance {-# OVERLAPPING #-} HasField "dstOffset" VkBufferCopy
-         where
-        type FieldType "dstOffset" VkBufferCopy = VkDeviceSize
-        type FieldOptional "dstOffset" VkBufferCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstOffset" VkBufferCopy =
-             #{offset VkBufferCopy, dstOffset}
-        type FieldIsArray "dstOffset" VkBufferCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCopy, dstOffset}
-
-instance {-# OVERLAPPING #-} CanReadField "dstOffset" VkBufferCopy
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, dstOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCopy, dstOffset}
-
-instance {-# OVERLAPPING #-} CanWriteField "dstOffset" VkBufferCopy
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCopy, dstOffset}
-
-instance {-# OVERLAPPING #-} HasField "size" VkBufferCopy where
-        type FieldType "size" VkBufferCopy = VkDeviceSize
-        type FieldOptional "size" VkBufferCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkBufferCopy =
-             #{offset VkBufferCopy, size}
-        type FieldIsArray "size" VkBufferCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCopy, size}
-
-instance {-# OVERLAPPING #-} CanReadField "size" VkBufferCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCopy, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCopy, size}
-
-instance {-# OVERLAPPING #-} CanWriteField "size" VkBufferCopy
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCopy, size}
-
-instance Show VkBufferCopy where
-        showsPrec d x
-          = showString "VkBufferCopy {" .
-              showString "srcOffset = " .
-                showsPrec d (getField @"srcOffset" x) .
-                  showString ", " .
-                    showString "dstOffset = " .
-                      showsPrec d (getField @"dstOffset" x) .
-                        showString ", " .
-                          showString "size = " .
-                            showsPrec d (getField @"size" x) . showChar '}'
-
--- | > typedef struct VkBufferCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkBufferCreateFlags    flags;
---   >     VkDeviceSize           size;
---   >     VkBufferUsageFlags     usage;
---   >     VkSharingMode          sharingMode;
---   >     uint32_t               queueFamilyIndexCount;
---   >     const uint32_t*        pQueueFamilyIndices;
---   > } VkBufferCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferCreateInfo VkBufferCreateInfo registry at www.khronos.org>
-type VkBufferCreateInfo = VulkanStruct VkBufferCreateInfo' -- ' closing tick for hsc2hs
-
-data VkBufferCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkBufferCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBufferCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBufferCreateInfo where
-        sizeOf ~_ = #{size VkBufferCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBufferCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBufferCreateInfo where
-        type StructFields VkBufferCreateInfo =
-             '["sType", "pNext", "flags", "size", "usage", "sharingMode", -- ' closing tick for hsc2hs
-               "queueFamilyIndexCount", "pQueueFamilyIndices"]
-        type CUnionType VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBufferCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkBufferCreateInfo
-         where
-        type FieldType "sType" VkBufferCreateInfo = VkStructureType
-        type FieldOptional "sType" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBufferCreateInfo =
-             #{offset VkBufferCreateInfo, sType}
-        type FieldIsArray "sType" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkBufferCreateInfo
-         where
-        type FieldType "pNext" VkBufferCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBufferCreateInfo =
-             #{offset VkBufferCreateInfo, pNext}
-        type FieldIsArray "pNext" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkBufferCreateInfo
-         where
-        type FieldType "flags" VkBufferCreateInfo = VkBufferCreateFlags
-        type FieldOptional "flags" VkBufferCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkBufferCreateInfo =
-             #{offset VkBufferCreateInfo, flags}
-        type FieldIsArray "flags" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCreateInfo, flags}
-
-instance {-# OVERLAPPING #-} HasField "size" VkBufferCreateInfo
-         where
-        type FieldType "size" VkBufferCreateInfo = VkDeviceSize
-        type FieldOptional "size" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkBufferCreateInfo =
-             #{offset VkBufferCreateInfo, size}
-        type FieldIsArray "size" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCreateInfo, size}
-
-instance {-# OVERLAPPING #-} CanReadField "size" VkBufferCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCreateInfo, size}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "size" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCreateInfo, size}
-
-instance {-# OVERLAPPING #-} HasField "usage" VkBufferCreateInfo
-         where
-        type FieldType "usage" VkBufferCreateInfo = VkBufferUsageFlags
-        type FieldOptional "usage" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkBufferCreateInfo =
-             #{offset VkBufferCreateInfo, usage}
-        type FieldIsArray "usage" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCreateInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "usage" VkBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, usage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCreateInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "usage" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCreateInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "sharingMode" VkBufferCreateInfo where
-        type FieldType "sharingMode" VkBufferCreateInfo = VkSharingMode
-        type FieldOptional "sharingMode" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sharingMode" VkBufferCreateInfo =
-             #{offset VkBufferCreateInfo, sharingMode}
-        type FieldIsArray "sharingMode" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferCreateInfo, sharingMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sharingMode" VkBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, sharingMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCreateInfo, sharingMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sharingMode" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCreateInfo, sharingMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFamilyIndexCount" VkBufferCreateInfo where
-        type FieldType "queueFamilyIndexCount" VkBufferCreateInfo = Word32
-        type FieldOptional "queueFamilyIndexCount" VkBufferCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "queueFamilyIndexCount" VkBufferCreateInfo =
-             #{offset VkBufferCreateInfo, queueFamilyIndexCount}
-        type FieldIsArray "queueFamilyIndexCount" VkBufferCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferCreateInfo, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueFamilyIndexCount" VkBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, queueFamilyIndexCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCreateInfo, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueFamilyIndexCount" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCreateInfo, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pQueueFamilyIndices" VkBufferCreateInfo where
-        type FieldType "pQueueFamilyIndices" VkBufferCreateInfo =
-             Ptr Word32
-        type FieldOptional "pQueueFamilyIndices" VkBufferCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pQueueFamilyIndices" VkBufferCreateInfo =
-             #{offset VkBufferCreateInfo, pQueueFamilyIndices}
-        type FieldIsArray "pQueueFamilyIndices" VkBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferCreateInfo, pQueueFamilyIndices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pQueueFamilyIndices" VkBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferCreateInfo, pQueueFamilyIndices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferCreateInfo, pQueueFamilyIndices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pQueueFamilyIndices" VkBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferCreateInfo, pQueueFamilyIndices}
-
-instance Show VkBufferCreateInfo where
-        showsPrec d x
-          = showString "VkBufferCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "size = " .
-                                  showsPrec d (getField @"size" x) .
-                                    showString ", " .
-                                      showString "usage = " .
-                                        showsPrec d (getField @"usage" x) .
-                                          showString ", " .
-                                            showString "sharingMode = " .
-                                              showsPrec d (getField @"sharingMode" x) .
-                                                showString ", " .
-                                                  showString "queueFamilyIndexCount = " .
-                                                    showsPrec d
-                                                      (getField @"queueFamilyIndexCount" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "pQueueFamilyIndices = " .
-                                                          showsPrec d
-                                                            (getField @"pQueueFamilyIndices" x)
-                                                            . showChar '}'
-
--- | > typedef struct VkBufferImageCopy {
---   >     VkDeviceSize           bufferOffset;
---   >     uint32_t               bufferRowLength;
---   >     uint32_t               bufferImageHeight;
---   >     VkImageSubresourceLayers imageSubresource;
---   >     VkOffset3D             imageOffset;
---   >     VkExtent3D             imageExtent;
---   > } VkBufferImageCopy;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferImageCopy VkBufferImageCopy registry at www.khronos.org>
-type VkBufferImageCopy = VulkanStruct VkBufferImageCopy' -- ' closing tick for hsc2hs
-
-data VkBufferImageCopy' -- ' closing tick for hsc2hs
-
-instance Eq VkBufferImageCopy where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBufferImageCopy where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBufferImageCopy where
-        sizeOf ~_ = #{size VkBufferImageCopy}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBufferImageCopy}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBufferImageCopy where
-        type StructFields VkBufferImageCopy =
-             '["bufferOffset", "bufferRowLength", "bufferImageHeight", -- ' closing tick for hsc2hs
-               "imageSubresource", "imageOffset", "imageExtent"]
-        type CUnionType VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBufferImageCopy = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "bufferOffset" VkBufferImageCopy where
-        type FieldType "bufferOffset" VkBufferImageCopy = VkDeviceSize
-        type FieldOptional "bufferOffset" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "bufferOffset" VkBufferImageCopy =
-             #{offset VkBufferImageCopy, bufferOffset}
-        type FieldIsArray "bufferOffset" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferImageCopy, bufferOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bufferOffset" VkBufferImageCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferImageCopy, bufferOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bufferOffset" VkBufferImageCopy where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferImageCopy, bufferOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "bufferRowLength" VkBufferImageCopy where
-        type FieldType "bufferRowLength" VkBufferImageCopy = Word32
-        type FieldOptional "bufferRowLength" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "bufferRowLength" VkBufferImageCopy =
-             #{offset VkBufferImageCopy, bufferRowLength}
-        type FieldIsArray "bufferRowLength" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferImageCopy, bufferRowLength}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bufferRowLength" VkBufferImageCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferRowLength})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferImageCopy, bufferRowLength}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bufferRowLength" VkBufferImageCopy where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferImageCopy, bufferRowLength}
-
-instance {-# OVERLAPPING #-}
-         HasField "bufferImageHeight" VkBufferImageCopy where
-        type FieldType "bufferImageHeight" VkBufferImageCopy = Word32
-        type FieldOptional "bufferImageHeight" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "bufferImageHeight" VkBufferImageCopy =
-             #{offset VkBufferImageCopy, bufferImageHeight}
-        type FieldIsArray "bufferImageHeight" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferImageCopy, bufferImageHeight}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bufferImageHeight" VkBufferImageCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, bufferImageHeight})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferImageCopy, bufferImageHeight}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bufferImageHeight" VkBufferImageCopy where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferImageCopy, bufferImageHeight}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageSubresource" VkBufferImageCopy where
-        type FieldType "imageSubresource" VkBufferImageCopy =
-             VkImageSubresourceLayers
-        type FieldOptional "imageSubresource" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageSubresource" VkBufferImageCopy =
-             #{offset VkBufferImageCopy, imageSubresource}
-        type FieldIsArray "imageSubresource" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferImageCopy, imageSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageSubresource" VkBufferImageCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageSubresource})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferImageCopy, imageSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageSubresource" VkBufferImageCopy where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferImageCopy, imageSubresource}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageOffset" VkBufferImageCopy where
-        type FieldType "imageOffset" VkBufferImageCopy = VkOffset3D
-        type FieldOptional "imageOffset" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageOffset" VkBufferImageCopy =
-             #{offset VkBufferImageCopy, imageOffset}
-        type FieldIsArray "imageOffset" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferImageCopy, imageOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageOffset" VkBufferImageCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferImageCopy, imageOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageOffset" VkBufferImageCopy where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferImageCopy, imageOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageExtent" VkBufferImageCopy where
-        type FieldType "imageExtent" VkBufferImageCopy = VkExtent3D
-        type FieldOptional "imageExtent" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageExtent" VkBufferImageCopy =
-             #{offset VkBufferImageCopy, imageExtent}
-        type FieldIsArray "imageExtent" VkBufferImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferImageCopy, imageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageExtent" VkBufferImageCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferImageCopy, imageExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferImageCopy, imageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageExtent" VkBufferImageCopy where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferImageCopy, imageExtent}
-
-instance Show VkBufferImageCopy where
-        showsPrec d x
-          = showString "VkBufferImageCopy {" .
-              showString "bufferOffset = " .
-                showsPrec d (getField @"bufferOffset" x) .
-                  showString ", " .
-                    showString "bufferRowLength = " .
-                      showsPrec d (getField @"bufferRowLength" x) .
-                        showString ", " .
-                          showString "bufferImageHeight = " .
-                            showsPrec d (getField @"bufferImageHeight" x) .
-                              showString ", " .
-                                showString "imageSubresource = " .
-                                  showsPrec d (getField @"imageSubresource" x) .
-                                    showString ", " .
-                                      showString "imageOffset = " .
-                                        showsPrec d (getField @"imageOffset" x) .
-                                          showString ", " .
-                                            showString "imageExtent = " .
-                                              showsPrec d (getField @"imageExtent" x) . showChar '}'
-
--- | > typedef struct VkBufferMemoryBarrier {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkAccessFlags          srcAccessMask;
---   >     VkAccessFlags          dstAccessMask;
---   >     uint32_t               srcQueueFamilyIndex;
---   >     uint32_t               dstQueueFamilyIndex;
---   >     VkBuffer               buffer;
---   >     VkDeviceSize           offset;
---   >     VkDeviceSize           size;
---   > } VkBufferMemoryBarrier;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferMemoryBarrier VkBufferMemoryBarrier registry at www.khronos.org>
-type VkBufferMemoryBarrier = VulkanStruct VkBufferMemoryBarrier' -- ' closing tick for hsc2hs
-
-data VkBufferMemoryBarrier' -- ' closing tick for hsc2hs
-
-instance Eq VkBufferMemoryBarrier where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBufferMemoryBarrier where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBufferMemoryBarrier where
-        sizeOf ~_ = #{size VkBufferMemoryBarrier}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBufferMemoryBarrier}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBufferMemoryBarrier where
-        type StructFields VkBufferMemoryBarrier =
-             '["sType", "pNext", "srcAccessMask", "dstAccessMask", -- ' closing tick for hsc2hs
-               "srcQueueFamilyIndex", "dstQueueFamilyIndex", "buffer", "offset",
-               "size"]
-        type CUnionType VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBufferMemoryBarrier = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkBufferMemoryBarrier
-         where
-        type FieldType "sType" VkBufferMemoryBarrier = VkStructureType
-        type FieldOptional "sType" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, sType}
-        type FieldIsArray "sType" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkBufferMemoryBarrier
-         where
-        type FieldType "pNext" VkBufferMemoryBarrier = Ptr Void
-        type FieldOptional "pNext" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, pNext}
-        type FieldIsArray "pNext" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcAccessMask" VkBufferMemoryBarrier where
-        type FieldType "srcAccessMask" VkBufferMemoryBarrier =
-             VkAccessFlags
-        type FieldOptional "srcAccessMask" VkBufferMemoryBarrier = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "srcAccessMask" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, srcAccessMask}
-        type FieldIsArray "srcAccessMask" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcAccessMask" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, srcAccessMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcAccessMask" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstAccessMask" VkBufferMemoryBarrier where
-        type FieldType "dstAccessMask" VkBufferMemoryBarrier =
-             VkAccessFlags
-        type FieldOptional "dstAccessMask" VkBufferMemoryBarrier = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dstAccessMask" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, dstAccessMask}
-        type FieldIsArray "dstAccessMask" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryBarrier, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstAccessMask" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, dstAccessMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstAccessMask" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcQueueFamilyIndex" VkBufferMemoryBarrier where
-        type FieldType "srcQueueFamilyIndex" VkBufferMemoryBarrier = Word32
-        type FieldOptional "srcQueueFamilyIndex" VkBufferMemoryBarrier =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcQueueFamilyIndex" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
-        type FieldIsArray "srcQueueFamilyIndex" VkBufferMemoryBarrier =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcQueueFamilyIndex" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcQueueFamilyIndex" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstQueueFamilyIndex" VkBufferMemoryBarrier where
-        type FieldType "dstQueueFamilyIndex" VkBufferMemoryBarrier = Word32
-        type FieldOptional "dstQueueFamilyIndex" VkBufferMemoryBarrier =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstQueueFamilyIndex" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
-        type FieldIsArray "dstQueueFamilyIndex" VkBufferMemoryBarrier =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstQueueFamilyIndex" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstQueueFamilyIndex" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkBufferMemoryBarrier where
-        type FieldType "buffer" VkBufferMemoryBarrier = VkBuffer
-        type FieldOptional "buffer" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, buffer}
-        type FieldIsArray "buffer" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferMemoryBarrier, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkBufferMemoryBarrier where
-        type FieldType "offset" VkBufferMemoryBarrier = VkDeviceSize
-        type FieldOptional "offset" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, offset}
-        type FieldIsArray "offset" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferMemoryBarrier, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, offset}
-
-instance {-# OVERLAPPING #-} HasField "size" VkBufferMemoryBarrier
-         where
-        type FieldType "size" VkBufferMemoryBarrier = VkDeviceSize
-        type FieldOptional "size" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkBufferMemoryBarrier =
-             #{offset VkBufferMemoryBarrier, size}
-        type FieldIsArray "size" VkBufferMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferMemoryBarrier, size}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "size" VkBufferMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryBarrier, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryBarrier, size}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "size" VkBufferMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryBarrier, size}
-
-instance Show VkBufferMemoryBarrier where
-        showsPrec d x
-          = showString "VkBufferMemoryBarrier {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "srcAccessMask = " .
-                            showsPrec d (getField @"srcAccessMask" x) .
-                              showString ", " .
-                                showString "dstAccessMask = " .
-                                  showsPrec d (getField @"dstAccessMask" x) .
-                                    showString ", " .
-                                      showString "srcQueueFamilyIndex = " .
-                                        showsPrec d (getField @"srcQueueFamilyIndex" x) .
-                                          showString ", " .
-                                            showString "dstQueueFamilyIndex = " .
-                                              showsPrec d (getField @"dstQueueFamilyIndex" x) .
-                                                showString ", " .
-                                                  showString "buffer = " .
-                                                    showsPrec d (getField @"buffer" x) .
-                                                      showString ", " .
-                                                        showString "offset = " .
-                                                          showsPrec d (getField @"offset" x) .
-                                                            showString ", " .
-                                                              showString "size = " .
-                                                                showsPrec d (getField @"size" x) .
-                                                                  showChar '}'
-
--- | > typedef struct VkBufferMemoryRequirementsInfo2 {
---   >     VkStructureType sType;
---   >     const void*                                                          pNext;
---   >     VkBuffer                                                             buffer;
---   > } VkBufferMemoryRequirementsInfo2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2 registry at www.khronos.org>
-type VkBufferMemoryRequirementsInfo2 =
-     VulkanStruct VkBufferMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
-
-data VkBufferMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
-
-instance Eq VkBufferMemoryRequirementsInfo2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBufferMemoryRequirementsInfo2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBufferMemoryRequirementsInfo2 where
-        sizeOf ~_ = #{size VkBufferMemoryRequirementsInfo2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkBufferMemoryRequirementsInfo2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBufferMemoryRequirementsInfo2 where
-        type StructFields VkBufferMemoryRequirementsInfo2 =
-             '["sType", "pNext", "buffer"] -- ' closing tick for hsc2hs
-        type CUnionType VkBufferMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBufferMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBufferMemoryRequirementsInfo2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBufferMemoryRequirementsInfo2 where
-        type FieldType "sType" VkBufferMemoryRequirementsInfo2 =
-             VkStructureType
-        type FieldOptional "sType" VkBufferMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBufferMemoryRequirementsInfo2 =
-             #{offset VkBufferMemoryRequirementsInfo2, sType}
-        type FieldIsArray "sType" VkBufferMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBufferMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryRequirementsInfo2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBufferMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBufferMemoryRequirementsInfo2 where
-        type FieldType "pNext" VkBufferMemoryRequirementsInfo2 = Ptr Void
-        type FieldOptional "pNext" VkBufferMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBufferMemoryRequirementsInfo2 =
-             #{offset VkBufferMemoryRequirementsInfo2, pNext}
-        type FieldIsArray "pNext" VkBufferMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBufferMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryRequirementsInfo2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBufferMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkBufferMemoryRequirementsInfo2 where
-        type FieldType "buffer" VkBufferMemoryRequirementsInfo2 = VkBuffer
-        type FieldOptional "buffer" VkBufferMemoryRequirementsInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkBufferMemoryRequirementsInfo2 =
-             #{offset VkBufferMemoryRequirementsInfo2, buffer}
-        type FieldIsArray "buffer" VkBufferMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkBufferMemoryRequirementsInfo2, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkBufferMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferMemoryRequirementsInfo2, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferMemoryRequirementsInfo2, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkBufferMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferMemoryRequirementsInfo2, buffer}
-
-instance Show VkBufferMemoryRequirementsInfo2 where
-        showsPrec d x
-          = showString "VkBufferMemoryRequirementsInfo2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "buffer = " .
-                            showsPrec d (getField @"buffer" x) . showChar '}'
-
--- | Alias for `VkBufferMemoryRequirementsInfo2`
-type VkBufferMemoryRequirementsInfo2KHR =
-     VkBufferMemoryRequirementsInfo2
-
--- | > typedef struct VkBufferViewCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkBufferViewCreateFlagsflags;
---   >     VkBuffer               buffer;
---   >     VkFormat               format;
---   >     VkDeviceSize           offset;
---   >     VkDeviceSize           range;
---   > } VkBufferViewCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferViewCreateInfo VkBufferViewCreateInfo registry at www.khronos.org>
-type VkBufferViewCreateInfo = VulkanStruct VkBufferViewCreateInfo' -- ' closing tick for hsc2hs
-
-data VkBufferViewCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkBufferViewCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkBufferViewCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkBufferViewCreateInfo where
-        sizeOf ~_ = #{size VkBufferViewCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkBufferViewCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkBufferViewCreateInfo where
-        type StructFields VkBufferViewCreateInfo =
-             '["sType", "pNext", "flags", "buffer", "format", "offset", "range"] -- ' closing tick for hsc2hs
-        type CUnionType VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkBufferViewCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkBufferViewCreateInfo where
-        type FieldType "sType" VkBufferViewCreateInfo = VkStructureType
-        type FieldOptional "sType" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkBufferViewCreateInfo =
-             #{offset VkBufferViewCreateInfo, sType}
-        type FieldIsArray "sType" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferViewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkBufferViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkBufferViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkBufferViewCreateInfo where
-        type FieldType "pNext" VkBufferViewCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkBufferViewCreateInfo =
-             #{offset VkBufferViewCreateInfo, pNext}
-        type FieldIsArray "pNext" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferViewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkBufferViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkBufferViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkBufferViewCreateInfo where
-        type FieldType "flags" VkBufferViewCreateInfo =
-             VkBufferViewCreateFlags
-        type FieldOptional "flags" VkBufferViewCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkBufferViewCreateInfo =
-             #{offset VkBufferViewCreateInfo, flags}
-        type FieldIsArray "flags" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferViewCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkBufferViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkBufferViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkBufferViewCreateInfo where
-        type FieldType "buffer" VkBufferViewCreateInfo = VkBuffer
-        type FieldOptional "buffer" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkBufferViewCreateInfo =
-             #{offset VkBufferViewCreateInfo, buffer}
-        type FieldIsArray "buffer" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferViewCreateInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkBufferViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkBufferViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkBufferViewCreateInfo where
-        type FieldType "format" VkBufferViewCreateInfo = VkFormat
-        type FieldOptional "format" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkBufferViewCreateInfo =
-             #{offset VkBufferViewCreateInfo, format}
-        type FieldIsArray "format" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferViewCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkBufferViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkBufferViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkBufferViewCreateInfo where
-        type FieldType "offset" VkBufferViewCreateInfo = VkDeviceSize
-        type FieldOptional "offset" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkBufferViewCreateInfo =
-             #{offset VkBufferViewCreateInfo, offset}
-        type FieldIsArray "offset" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferViewCreateInfo, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkBufferViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkBufferViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, offset}
-
-instance {-# OVERLAPPING #-}
-         HasField "range" VkBufferViewCreateInfo where
-        type FieldType "range" VkBufferViewCreateInfo = VkDeviceSize
-        type FieldOptional "range" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "range" VkBufferViewCreateInfo =
-             #{offset VkBufferViewCreateInfo, range}
-        type FieldIsArray "range" VkBufferViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkBufferViewCreateInfo, range}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "range" VkBufferViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkBufferViewCreateInfo, range})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkBufferViewCreateInfo, range}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "range" VkBufferViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkBufferViewCreateInfo, range}
-
-instance Show VkBufferViewCreateInfo where
-        showsPrec d x
-          = showString "VkBufferViewCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "buffer = " .
-                                  showsPrec d (getField @"buffer" x) .
-                                    showString ", " .
-                                      showString "format = " .
-                                        showsPrec d (getField @"format" x) .
-                                          showString ", " .
-                                            showString "offset = " .
-                                              showsPrec d (getField @"offset" x) .
-                                                showString ", " .
-                                                  showString "range = " .
-                                                    showsPrec d (getField @"range" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Buffer
+       (VkBufferCopy, VkBufferCreateInfo, VkBufferImageCopy,
+        VkBufferMemoryBarrier, VkBufferMemoryRequirementsInfo2,
+        VkBufferMemoryRequirementsInfo2KHR, VkBufferViewCreateInfo)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
+import Graphics.Vulkan.Types.Bitmasks           (VkBufferViewCreateFlags)
+import Graphics.Vulkan.Types.Enum.AccessFlags   (VkAccessFlags)
+import Graphics.Vulkan.Types.Enum.Buffer        (VkBufferCreateFlags,
+                                                 VkBufferUsageFlags)
+import Graphics.Vulkan.Types.Enum.Format        (VkFormat)
+import Graphics.Vulkan.Types.Enum.SharingMode   (VkSharingMode)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkBuffer)
+import Graphics.Vulkan.Types.Struct.Extent      (VkExtent3D)
+import Graphics.Vulkan.Types.Struct.Image       (VkImageSubresourceLayers)
+import Graphics.Vulkan.Types.Struct.Offset      (VkOffset3D)
+
+-- | > typedef struct VkBufferCopy {
+--   >     VkDeviceSize           srcOffset;
+--   >     VkDeviceSize           dstOffset;
+--   >     VkDeviceSize           size;
+--   > } VkBufferCopy;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferCopy VkBufferCopy registry at www.khronos.org>
+type VkBufferCopy = VkStruct VkBufferCopy' -- ' closing tick for hsc2hs
+
+data VkBufferCopy' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBufferCopy where
+    type StructRep VkBufferCopy =
+         'StructMeta "VkBufferCopy" VkBufferCopy  -- ' closing tick for hsc2hs
+                                                 #{size VkBufferCopy}
+           #{alignment VkBufferCopy}
+           '[('FieldMeta "srcOffset" VkDeviceSize 'False  -- ' closing tick for hsc2hs
+                                                         #{offset VkBufferCopy, srcOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstOffset" VkDeviceSize 'False 
+                                                         #{offset VkBufferCopy, dstOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "size" VkDeviceSize 'False 
+                                                    #{offset VkBufferCopy, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkBufferCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkBufferCreateFlags    flags;
+--   >     VkDeviceSize           size;
+--   >     VkBufferUsageFlags     usage;
+--   >     VkSharingMode          sharingMode;
+--   >     uint32_t               queueFamilyIndexCount;
+--   >     const uint32_t*        pQueueFamilyIndices;
+--   > } VkBufferCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferCreateInfo VkBufferCreateInfo registry at www.khronos.org>
+type VkBufferCreateInfo = VkStruct VkBufferCreateInfo' -- ' closing tick for hsc2hs
+
+data VkBufferCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBufferCreateInfo where
+    type StructRep VkBufferCreateInfo =
+         'StructMeta "VkBufferCreateInfo" VkBufferCreateInfo  -- ' closing tick for hsc2hs
+                                                             #{size VkBufferCreateInfo}
+           #{alignment VkBufferCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBufferCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBufferCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkBufferCreateFlags 'True 
+                                                           #{offset VkBufferCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "size" VkDeviceSize 'False 
+                                                    #{offset VkBufferCreateInfo, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "usage" VkBufferUsageFlags 'False 
+                                                           #{offset VkBufferCreateInfo, usage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sharingMode" VkSharingMode 'False 
+                                                            #{offset VkBufferCreateInfo, sharingMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueFamilyIndexCount" Word32 'True 
+                                                              #{offset VkBufferCreateInfo, queueFamilyIndexCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pQueueFamilyIndices" (Ptr Word32) 'False 
+                                                                   #{offset VkBufferCreateInfo, pQueueFamilyIndices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkBufferImageCopy {
+--   >     VkDeviceSize           bufferOffset;
+--   >     uint32_t               bufferRowLength;
+--   >     uint32_t               bufferImageHeight;
+--   >     VkImageSubresourceLayers imageSubresource;
+--   >     VkOffset3D             imageOffset;
+--   >     VkExtent3D             imageExtent;
+--   > } VkBufferImageCopy;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferImageCopy VkBufferImageCopy registry at www.khronos.org>
+type VkBufferImageCopy = VkStruct VkBufferImageCopy' -- ' closing tick for hsc2hs
+
+data VkBufferImageCopy' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBufferImageCopy where
+    type StructRep VkBufferImageCopy =
+         'StructMeta "VkBufferImageCopy" VkBufferImageCopy  -- ' closing tick for hsc2hs
+                                                           #{size VkBufferImageCopy}
+           #{alignment VkBufferImageCopy}
+           '[('FieldMeta "bufferOffset" VkDeviceSize 'False  -- ' closing tick for hsc2hs
+                                                            #{offset VkBufferImageCopy, bufferOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bufferRowLength" Word32 'False 
+                                                         #{offset VkBufferImageCopy, bufferRowLength}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bufferImageHeight" Word32 'False 
+                                                           #{offset VkBufferImageCopy, bufferImageHeight}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageSubresource" VkImageSubresourceLayers 'False
+                #{offset VkBufferImageCopy, imageSubresource}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageOffset" VkOffset3D 'False 
+                                                         #{offset VkBufferImageCopy, imageOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageExtent" VkExtent3D 'False 
+                                                         #{offset VkBufferImageCopy, imageExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkBufferMemoryBarrier {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkAccessFlags          srcAccessMask;
+--   >     VkAccessFlags          dstAccessMask;
+--   >     uint32_t               srcQueueFamilyIndex;
+--   >     uint32_t               dstQueueFamilyIndex;
+--   >     VkBuffer               buffer;
+--   >     VkDeviceSize           offset;
+--   >     VkDeviceSize           size;
+--   > } VkBufferMemoryBarrier;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferMemoryBarrier VkBufferMemoryBarrier registry at www.khronos.org>
+type VkBufferMemoryBarrier = VkStruct VkBufferMemoryBarrier' -- ' closing tick for hsc2hs
+
+data VkBufferMemoryBarrier' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBufferMemoryBarrier where
+    type StructRep VkBufferMemoryBarrier =
+         'StructMeta "VkBufferMemoryBarrier" VkBufferMemoryBarrier  -- ' closing tick for hsc2hs
+                                                                   #{size VkBufferMemoryBarrier}
+           #{alignment VkBufferMemoryBarrier}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBufferMemoryBarrier, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBufferMemoryBarrier, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcAccessMask" VkAccessFlags 'True 
+                                                             #{offset VkBufferMemoryBarrier, srcAccessMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstAccessMask" VkAccessFlags 'True 
+                                                             #{offset VkBufferMemoryBarrier, dstAccessMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcQueueFamilyIndex" Word32 'False 
+                                                             #{offset VkBufferMemoryBarrier, srcQueueFamilyIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstQueueFamilyIndex" Word32 'False 
+                                                             #{offset VkBufferMemoryBarrier, dstQueueFamilyIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'False 
+                                                  #{offset VkBufferMemoryBarrier, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" VkDeviceSize 'False 
+                                                      #{offset VkBufferMemoryBarrier, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "size" VkDeviceSize 'False 
+                                                    #{offset VkBufferMemoryBarrier, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkBufferMemoryRequirementsInfo2 {
+--   >     VkStructureType sType;
+--   >     const void*                                                          pNext;
+--   >     VkBuffer                                                             buffer;
+--   > } VkBufferMemoryRequirementsInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2 registry at www.khronos.org>
+type VkBufferMemoryRequirementsInfo2 =
+     VkStruct VkBufferMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
+
+data VkBufferMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBufferMemoryRequirementsInfo2 where
+    type StructRep VkBufferMemoryRequirementsInfo2 =
+         'StructMeta "VkBufferMemoryRequirementsInfo2" -- ' closing tick for hsc2hs
+           VkBufferMemoryRequirementsInfo2
+           #{size VkBufferMemoryRequirementsInfo2}
+           #{alignment VkBufferMemoryRequirementsInfo2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBufferMemoryRequirementsInfo2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBufferMemoryRequirementsInfo2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'False 
+                                                  #{offset VkBufferMemoryRequirementsInfo2, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkBufferMemoryRequirementsInfo2`
+type VkBufferMemoryRequirementsInfo2KHR =
+     VkBufferMemoryRequirementsInfo2
+
+-- | > typedef struct VkBufferViewCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkBufferViewCreateFlagsflags;
+--   >     VkBuffer               buffer;
+--   >     VkFormat               format;
+--   >     VkDeviceSize           offset;
+--   >     VkDeviceSize           range;
+--   > } VkBufferViewCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkBufferViewCreateInfo VkBufferViewCreateInfo registry at www.khronos.org>
+type VkBufferViewCreateInfo = VkStruct VkBufferViewCreateInfo' -- ' closing tick for hsc2hs
+
+data VkBufferViewCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkBufferViewCreateInfo where
+    type StructRep VkBufferViewCreateInfo =
+         'StructMeta "VkBufferViewCreateInfo" VkBufferViewCreateInfo -- ' closing tick for hsc2hs
+           #{size VkBufferViewCreateInfo}
+           #{alignment VkBufferViewCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkBufferViewCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkBufferViewCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkBufferViewCreateFlags 'True 
+                                                               #{offset VkBufferViewCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'False 
+                                                  #{offset VkBufferViewCreateInfo, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkBufferViewCreateInfo, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" VkDeviceSize 'False 
+                                                      #{offset VkBufferViewCreateInfo, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "range" VkDeviceSize 'False 
+                                                     #{offset VkBufferViewCreateInfo, range}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Clear.hsc
@@ -1,28 +1,18 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.Clear
-       (VkClearAttachment, VkClearAttachment', VkClearColorValue, -- ' closing tick for hsc2hs
-        VkClearColorValue', VkClearDepthStencilValue, -- ' closing tick for hsc2hs
-        VkClearDepthStencilValue', VkClearRect, VkClearRect', VkClearValue,
-        VkClearValue') -- ' closing tick for hsc2hs
+       (VkClearAttachment, VkClearColorValue, VkClearDepthStencilValue,
+        VkClearRect, VkClearValue)
        where
-import Foreign.Storable                  (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Image  (VkImageAspectFlags)
 import Graphics.Vulkan.Types.Struct.Rect (VkRect2D)
-import System.IO.Unsafe                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkClearAttachment {
 --   >     VkImageAspectFlags     aspectMask;
@@ -31,146 +21,33 @@
 --   > } VkClearAttachment;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkClearAttachment VkClearAttachment registry at www.khronos.org>
-type VkClearAttachment = VulkanStruct VkClearAttachment' -- ' closing tick for hsc2hs
+type VkClearAttachment = VkStruct VkClearAttachment' -- ' closing tick for hsc2hs
 
 data VkClearAttachment' -- ' closing tick for hsc2hs
 
-instance Eq VkClearAttachment where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkClearAttachment where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkClearAttachment where
-        sizeOf ~_ = #{size VkClearAttachment}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkClearAttachment}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkClearAttachment where
-        type StructFields VkClearAttachment =
-             '["aspectMask", "colorAttachment", "clearValue"] -- ' closing tick for hsc2hs
-        type CUnionType VkClearAttachment = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkClearAttachment = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkClearAttachment = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectMask" VkClearAttachment where
-        type FieldType "aspectMask" VkClearAttachment = VkImageAspectFlags
-        type FieldOptional "aspectMask" VkClearAttachment = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "aspectMask" VkClearAttachment =
-             #{offset VkClearAttachment, aspectMask}
-        type FieldIsArray "aspectMask" VkClearAttachment = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearAttachment, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "aspectMask" VkClearAttachment where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, aspectMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearAttachment, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "aspectMask" VkClearAttachment where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearAttachment, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "colorAttachment" VkClearAttachment where
-        type FieldType "colorAttachment" VkClearAttachment = Word32
-        type FieldOptional "colorAttachment" VkClearAttachment = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "colorAttachment" VkClearAttachment =
-             #{offset VkClearAttachment, colorAttachment}
-        type FieldIsArray "colorAttachment" VkClearAttachment = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkClearAttachment, colorAttachment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "colorAttachment" VkClearAttachment where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, colorAttachment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearAttachment, colorAttachment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "colorAttachment" VkClearAttachment where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearAttachment, colorAttachment}
-
-instance {-# OVERLAPPING #-}
-         HasField "clearValue" VkClearAttachment where
-        type FieldType "clearValue" VkClearAttachment = VkClearValue
-        type FieldOptional "clearValue" VkClearAttachment = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "clearValue" VkClearAttachment =
-             #{offset VkClearAttachment, clearValue}
-        type FieldIsArray "clearValue" VkClearAttachment = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearAttachment, clearValue}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "clearValue" VkClearAttachment where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearAttachment, clearValue})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearAttachment, clearValue}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "clearValue" VkClearAttachment where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearAttachment, clearValue}
-
-instance Show VkClearAttachment where
-        showsPrec d x
-          = showString "VkClearAttachment {" .
-              showString "aspectMask = " .
-                showsPrec d (getField @"aspectMask" x) .
-                  showString ", " .
-                    showString "colorAttachment = " .
-                      showsPrec d (getField @"colorAttachment" x) .
-                        showString ", " .
-                          showString "clearValue = " .
-                            showsPrec d (getField @"clearValue" x) . showChar '}'
+    type StructRep VkClearAttachment =
+         'StructMeta "VkClearAttachment" VkClearAttachment  -- ' closing tick for hsc2hs
+                                                           #{size VkClearAttachment}
+           #{alignment VkClearAttachment}
+           '[('FieldMeta "aspectMask" VkImageAspectFlags 'False  -- ' closing tick for hsc2hs
+                                                                #{offset VkClearAttachment, aspectMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "colorAttachment" Word32 'False 
+                                                         #{offset VkClearAttachment, colorAttachment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "clearValue" VkClearValue 'False 
+                                                          #{offset VkClearAttachment, clearValue}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | // Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
 --
@@ -181,213 +58,35 @@
 --   > } VkClearColorValue;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkClearColorValue VkClearColorValue registry at www.khronos.org>
-type VkClearColorValue = VulkanStruct VkClearColorValue' -- ' closing tick for hsc2hs
+type VkClearColorValue = VkStruct VkClearColorValue' -- ' closing tick for hsc2hs
 
 data VkClearColorValue' -- ' closing tick for hsc2hs
 
-instance Eq VkClearColorValue where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkClearColorValue where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkClearColorValue where
-        sizeOf ~_ = #{size VkClearColorValue}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkClearColorValue}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkClearColorValue where
-        type StructFields VkClearColorValue =
-             '["float32", "int32", "uint32"] -- ' closing tick for hsc2hs
-        type CUnionType VkClearColorValue = 'True -- ' closing tick for hsc2hs
-        type ReturnedOnly VkClearColorValue = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkClearColorValue = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "float32" VkClearColorValue
-         where
-        type FieldType "float32" VkClearColorValue =
-             #{type float}
-        type FieldOptional "float32" VkClearColorValue = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "float32" VkClearColorValue =
-             #{offset VkClearColorValue, float32}
-        type FieldIsArray "float32" VkClearColorValue = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearColorValue, float32}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "float32" VkClearColorValue where
-        type FieldArrayLength "float32" VkClearColorValue = 4
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 4
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkClearColorValue, float32} +
-                      sizeOf (undefined :: #{type float}) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkClearColorValue, float32} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "float32" VkClearColorValue where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkClearColorValue, float32} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-} HasField "int32" VkClearColorValue
-         where
-        type FieldType "int32" VkClearColorValue = Int32
-        type FieldOptional "int32" VkClearColorValue = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "int32" VkClearColorValue =
-             #{offset VkClearColorValue, int32}
-        type FieldIsArray "int32" VkClearColorValue = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearColorValue, int32}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "int32" VkClearColorValue where
-        type FieldArrayLength "int32" VkClearColorValue = 4
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 4
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkClearColorValue, int32} +
-                      sizeOf (undefined :: Int32) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkClearColorValue, int32} +
-                 sizeOf (undefined :: Int32) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "int32" VkClearColorValue where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkClearColorValue, int32} +
-                 sizeOf (undefined :: Int32) * i)
-
-instance {-# OVERLAPPING #-} HasField "uint32" VkClearColorValue
-         where
-        type FieldType "uint32" VkClearColorValue = Word32
-        type FieldOptional "uint32" VkClearColorValue = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "uint32" VkClearColorValue =
-             #{offset VkClearColorValue, uint32}
-        type FieldIsArray "uint32" VkClearColorValue = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearColorValue, uint32}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "uint32" VkClearColorValue where
-        type FieldArrayLength "uint32" VkClearColorValue = 4
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 4
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkClearColorValue, uint32} +
-                      sizeOf (undefined :: Word32) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkClearColorValue, uint32} +
-                 sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "uint32" VkClearColorValue where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkClearColorValue, uint32} +
-                 sizeOf (undefined :: Word32) * i)
-
-instance Show VkClearColorValue where
-        showsPrec d x
-          = showString "VkClearColorValue {" .
-              (showString "float32 = [" .
-                 showsPrec d
-                   (let s = sizeOf
-                              (undefined :: FieldType "float32" VkClearColorValue)
-                        o = fieldOffset @"float32" @VkClearColorValue
-                        f i
-                          = peekByteOff (unsafePtr x) i ::
-                              IO (FieldType "float32" VkClearColorValue)
-                      in
-                      unsafeDupablePerformIO . mapM f $
-                        map (\ i -> o + i * s) [0 .. 4 - 1])
-                   . showChar ']')
-                .
-                showString ", " .
-                  (showString "int32 = [" .
-                     showsPrec d
-                       (let s = sizeOf (undefined :: FieldType "int32" VkClearColorValue)
-                            o = fieldOffset @"int32" @VkClearColorValue
-                            f i
-                              = peekByteOff (unsafePtr x) i ::
-                                  IO (FieldType "int32" VkClearColorValue)
-                          in
-                          unsafeDupablePerformIO . mapM f $
-                            map (\ i -> o + i * s) [0 .. 4 - 1])
-                       . showChar ']')
-                    .
-                    showString ", " .
-                      (showString "uint32 = [" .
-                         showsPrec d
-                           (let s = sizeOf (undefined :: FieldType "uint32" VkClearColorValue)
-                                o = fieldOffset @"uint32" @VkClearColorValue
-                                f i
-                                  = peekByteOff (unsafePtr x) i ::
-                                      IO (FieldType "uint32" VkClearColorValue)
-                              in
-                              unsafeDupablePerformIO . mapM f $
-                                map (\ i -> o + i * s) [0 .. 4 - 1])
-                           . showChar ']')
-                        . showChar '}'
+    type StructRep VkClearColorValue =
+         'StructMeta "VkClearColorValue" VkClearColorValue  -- ' closing tick for hsc2hs
+                                                           #{size VkClearColorValue}
+           #{alignment VkClearColorValue}
+           '[('FieldMeta "float32" (
+                                    #{type float}
+                                    ) 'False -- ' closing tick for hsc2hs
+                #{offset VkClearColorValue, float32}
+                4
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "int32" Int32 'False 
+                                              #{offset VkClearColorValue, int32}
+                4
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "uint32" Word32 'False 
+                                                #{offset VkClearColorValue, uint32}
+                4
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkClearDepthStencilValue {
 --   >     float                  depth;
@@ -395,113 +94,30 @@
 --   > } VkClearDepthStencilValue;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkClearDepthStencilValue VkClearDepthStencilValue registry at www.khronos.org>
-type VkClearDepthStencilValue =
-     VulkanStruct VkClearDepthStencilValue' -- ' closing tick for hsc2hs
+type VkClearDepthStencilValue = VkStruct VkClearDepthStencilValue' -- ' closing tick for hsc2hs
 
 data VkClearDepthStencilValue' -- ' closing tick for hsc2hs
 
-instance Eq VkClearDepthStencilValue where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkClearDepthStencilValue where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkClearDepthStencilValue where
-        sizeOf ~_ = #{size VkClearDepthStencilValue}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkClearDepthStencilValue}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkClearDepthStencilValue where
-        type StructFields VkClearDepthStencilValue = '["depth", "stencil"] -- ' closing tick for hsc2hs
-        type CUnionType VkClearDepthStencilValue = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkClearDepthStencilValue = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkClearDepthStencilValue = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "depth" VkClearDepthStencilValue where
-        type FieldType "depth" VkClearDepthStencilValue =
-             #{type float}
-        type FieldOptional "depth" VkClearDepthStencilValue = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depth" VkClearDepthStencilValue =
-             #{offset VkClearDepthStencilValue, depth}
-        type FieldIsArray "depth" VkClearDepthStencilValue = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearDepthStencilValue, depth}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depth" VkClearDepthStencilValue where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearDepthStencilValue, depth})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearDepthStencilValue, depth}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depth" VkClearDepthStencilValue where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearDepthStencilValue, depth}
-
-instance {-# OVERLAPPING #-}
-         HasField "stencil" VkClearDepthStencilValue where
-        type FieldType "stencil" VkClearDepthStencilValue = Word32
-        type FieldOptional "stencil" VkClearDepthStencilValue = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "stencil" VkClearDepthStencilValue =
-             #{offset VkClearDepthStencilValue, stencil}
-        type FieldIsArray "stencil" VkClearDepthStencilValue = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkClearDepthStencilValue, stencil}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stencil" VkClearDepthStencilValue where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearDepthStencilValue, stencil})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearDepthStencilValue, stencil}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stencil" VkClearDepthStencilValue where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearDepthStencilValue, stencil}
-
-instance Show VkClearDepthStencilValue where
-        showsPrec d x
-          = showString "VkClearDepthStencilValue {" .
-              showString "depth = " .
-                showsPrec d (getField @"depth" x) .
-                  showString ", " .
-                    showString "stencil = " .
-                      showsPrec d (getField @"stencil" x) . showChar '}'
+    type StructRep VkClearDepthStencilValue =
+         'StructMeta "VkClearDepthStencilValue" VkClearDepthStencilValue -- ' closing tick for hsc2hs
+           #{size VkClearDepthStencilValue}
+           #{alignment VkClearDepthStencilValue}
+           '[('FieldMeta "depth" (
+                                  #{type float}
+                                  ) 'False  -- ' closing tick for hsc2hs
+                                           #{offset VkClearDepthStencilValue, depth}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stencil" Word32 'False 
+                                                 #{offset VkClearDepthStencilValue, stencil}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkClearRect {
 --   >     VkRect2D       rect;
@@ -510,141 +126,33 @@
 --   > } VkClearRect;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkClearRect VkClearRect registry at www.khronos.org>
-type VkClearRect = VulkanStruct VkClearRect' -- ' closing tick for hsc2hs
+type VkClearRect = VkStruct VkClearRect' -- ' closing tick for hsc2hs
 
 data VkClearRect' -- ' closing tick for hsc2hs
 
-instance Eq VkClearRect where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkClearRect where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkClearRect where
-        sizeOf ~_ = #{size VkClearRect}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkClearRect}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkClearRect where
-        type StructFields VkClearRect =
-             '["rect", "baseArrayLayer", "layerCount"] -- ' closing tick for hsc2hs
-        type CUnionType VkClearRect = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkClearRect = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkClearRect = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "rect" VkClearRect where
-        type FieldType "rect" VkClearRect = VkRect2D
-        type FieldOptional "rect" VkClearRect = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "rect" VkClearRect =
-             #{offset VkClearRect, rect}
-        type FieldIsArray "rect" VkClearRect = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearRect, rect}
-
-instance {-# OVERLAPPING #-} CanReadField "rect" VkClearRect where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearRect, rect})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkClearRect, rect}
-
-instance {-# OVERLAPPING #-} CanWriteField "rect" VkClearRect where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearRect, rect}
-
-instance {-# OVERLAPPING #-} HasField "baseArrayLayer" VkClearRect
-         where
-        type FieldType "baseArrayLayer" VkClearRect = Word32
-        type FieldOptional "baseArrayLayer" VkClearRect = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "baseArrayLayer" VkClearRect =
-             #{offset VkClearRect, baseArrayLayer}
-        type FieldIsArray "baseArrayLayer" VkClearRect = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearRect, baseArrayLayer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "baseArrayLayer" VkClearRect where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearRect, baseArrayLayer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearRect, baseArrayLayer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "baseArrayLayer" VkClearRect where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearRect, baseArrayLayer}
-
-instance {-# OVERLAPPING #-} HasField "layerCount" VkClearRect
-         where
-        type FieldType "layerCount" VkClearRect = Word32
-        type FieldOptional "layerCount" VkClearRect = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layerCount" VkClearRect =
-             #{offset VkClearRect, layerCount}
-        type FieldIsArray "layerCount" VkClearRect = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearRect, layerCount}
-
-instance {-# OVERLAPPING #-} CanReadField "layerCount" VkClearRect
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearRect, layerCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearRect, layerCount}
-
-instance {-# OVERLAPPING #-} CanWriteField "layerCount" VkClearRect
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearRect, layerCount}
-
-instance Show VkClearRect where
-        showsPrec d x
-          = showString "VkClearRect {" .
-              showString "rect = " .
-                showsPrec d (getField @"rect" x) .
-                  showString ", " .
-                    showString "baseArrayLayer = " .
-                      showsPrec d (getField @"baseArrayLayer" x) .
-                        showString ", " .
-                          showString "layerCount = " .
-                            showsPrec d (getField @"layerCount" x) . showChar '}'
+    type StructRep VkClearRect =
+         'StructMeta "VkClearRect" VkClearRect  -- ' closing tick for hsc2hs
+                                               #{size VkClearRect}
+           #{alignment VkClearRect}
+           '[('FieldMeta "rect" VkRect2D 'False  -- ' closing tick for hsc2hs
+                                                #{offset VkClearRect, rect}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "baseArrayLayer" Word32 'False 
+                                                        #{offset VkClearRect, baseArrayLayer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "layerCount" Word32 'False 
+                                                    #{offset VkClearRect, layerCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | // Union allowing specification of color or depth and stencil values. Actual value selected is based on attachment being cleared.
 --
@@ -654,107 +162,25 @@
 --   > } VkClearValue;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkClearValue VkClearValue registry at www.khronos.org>
-type VkClearValue = VulkanStruct VkClearValue' -- ' closing tick for hsc2hs
+type VkClearValue = VkStruct VkClearValue' -- ' closing tick for hsc2hs
 
 data VkClearValue' -- ' closing tick for hsc2hs
 
-instance Eq VkClearValue where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkClearValue where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkClearValue where
-        sizeOf ~_ = #{size VkClearValue}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkClearValue}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkClearValue where
-        type StructFields VkClearValue = '["color", "depthStencil"] -- ' closing tick for hsc2hs
-        type CUnionType VkClearValue = 'True -- ' closing tick for hsc2hs
-        type ReturnedOnly VkClearValue = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkClearValue = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "color" VkClearValue where
-        type FieldType "color" VkClearValue = VkClearColorValue
-        type FieldOptional "color" VkClearValue = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "color" VkClearValue =
-             #{offset VkClearValue, color}
-        type FieldIsArray "color" VkClearValue = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearValue, color}
-
-instance {-# OVERLAPPING #-} CanReadField "color" VkClearValue
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearValue, color})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearValue, color}
-
-instance {-# OVERLAPPING #-} CanWriteField "color" VkClearValue
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearValue, color}
-
-instance {-# OVERLAPPING #-} HasField "depthStencil" VkClearValue
-         where
-        type FieldType "depthStencil" VkClearValue =
-             VkClearDepthStencilValue
-        type FieldOptional "depthStencil" VkClearValue = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthStencil" VkClearValue =
-             #{offset VkClearValue, depthStencil}
-        type FieldIsArray "depthStencil" VkClearValue = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkClearValue, depthStencil}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthStencil" VkClearValue where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkClearValue, depthStencil})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkClearValue, depthStencil}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthStencil" VkClearValue where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkClearValue, depthStencil}
-
-instance Show VkClearValue where
-        showsPrec d x
-          = showString "VkClearValue {" .
-              showString "color = " .
-                showsPrec d (getField @"color" x) .
-                  showString ", " .
-                    showString "depthStencil = " .
-                      showsPrec d (getField @"depthStencil" x) . showChar '}'
+    type StructRep VkClearValue =
+         'StructMeta "VkClearValue" VkClearValue  -- ' closing tick for hsc2hs
+                                                 #{size VkClearValue}
+           #{alignment VkClearValue}
+           '[('FieldMeta "color" VkClearColorValue 'False  -- ' closing tick for hsc2hs
+                                                          #{offset VkClearValue, color}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthStencil" VkClearDepthStencilValue 'False
+                #{offset VkClearValue, depthStencil}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Cmd.hsc
@@ -2,17 +2,12 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Cmd
-       (VkCmdProcessCommandsInfoNVX, VkCmdProcessCommandsInfoNVX', -- ' closing tick for hsc2hs
-        VkCmdReserveSpaceForCommandsInfoNVX,
-        VkCmdReserveSpaceForCommandsInfoNVX') -- ' closing tick for hsc2hs
+       (VkCmdProcessCommandsInfoNVX, VkCmdReserveSpaceForCommandsInfoNVX)
        where
-import Foreign.Storable                              (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.BaseTypes               (VkDeviceSize)
@@ -20,7 +15,6 @@
 import Graphics.Vulkan.Types.Handles                 (VkBuffer, VkCommandBuffer, VkIndirectCommandsLayoutNVX,
                                                       VkObjectTableNVX)
 import Graphics.Vulkan.Types.Struct.IndirectCommands (VkIndirectCommandsTokenNVX)
-import System.IO.Unsafe                              (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCmdProcessCommandsInfoNVX {
 --   >     VkStructureType sType;
@@ -39,569 +33,82 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCmdProcessCommandsInfoNVX VkCmdProcessCommandsInfoNVX registry at www.khronos.org>
 type VkCmdProcessCommandsInfoNVX =
-     VulkanStruct VkCmdProcessCommandsInfoNVX' -- ' closing tick for hsc2hs
+     VkStruct VkCmdProcessCommandsInfoNVX' -- ' closing tick for hsc2hs
 
 data VkCmdProcessCommandsInfoNVX' -- ' closing tick for hsc2hs
 
-instance Eq VkCmdProcessCommandsInfoNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkCmdProcessCommandsInfoNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkCmdProcessCommandsInfoNVX where
-        sizeOf ~_ = #{size VkCmdProcessCommandsInfoNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkCmdProcessCommandsInfoNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkCmdProcessCommandsInfoNVX where
-        type StructFields VkCmdProcessCommandsInfoNVX =
-             '["sType", "pNext", "objectTable", "indirectCommandsLayout", -- ' closing tick for hsc2hs
-               "indirectCommandsTokenCount", "pIndirectCommandsTokens",
-               "maxSequencesCount", "targetCommandBuffer", "sequencesCountBuffer",
-               "sequencesCountOffset", "sequencesIndexBuffer",
-               "sequencesIndexOffset"]
-        type CUnionType VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkCmdProcessCommandsInfoNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkCmdProcessCommandsInfoNVX where
-        type FieldType "sType" VkCmdProcessCommandsInfoNVX =
-             VkStructureType
-        type FieldOptional "sType" VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkCmdProcessCommandsInfoNVX =
-             #{offset VkCmdProcessCommandsInfoNVX, sType}
-        type FieldIsArray "sType" VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkCmdProcessCommandsInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkCmdProcessCommandsInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkCmdProcessCommandsInfoNVX where
-        type FieldType "pNext" VkCmdProcessCommandsInfoNVX = Ptr Void
-        type FieldOptional "pNext" VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkCmdProcessCommandsInfoNVX =
-             #{offset VkCmdProcessCommandsInfoNVX, pNext}
-        type FieldIsArray "pNext" VkCmdProcessCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkCmdProcessCommandsInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkCmdProcessCommandsInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectTable" VkCmdProcessCommandsInfoNVX where
-        type FieldType "objectTable" VkCmdProcessCommandsInfoNVX =
-             VkObjectTableNVX
-        type FieldOptional "objectTable" VkCmdProcessCommandsInfoNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectTable" VkCmdProcessCommandsInfoNVX =
-             #{offset VkCmdProcessCommandsInfoNVX, objectTable}
-        type FieldIsArray "objectTable" VkCmdProcessCommandsInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, objectTable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectTable" VkCmdProcessCommandsInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, objectTable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, objectTable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectTable" VkCmdProcessCommandsInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, objectTable}
-
-instance {-# OVERLAPPING #-}
-         HasField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX where
-        type FieldType "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX
-             = VkIndirectCommandsLayoutNVX
-        type FieldOptional "indirectCommandsLayout"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "indirectCommandsLayout"
-               VkCmdProcessCommandsInfoNVX
-             =
-             #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
-        type FieldIsArray "indirectCommandsLayout"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "indirectCommandsLayout" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "indirectCommandsTokenCount" VkCmdProcessCommandsInfoNVX
-         where
-        type FieldType "indirectCommandsTokenCount"
-               VkCmdProcessCommandsInfoNVX
-             = Word32
-        type FieldOptional "indirectCommandsTokenCount"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "indirectCommandsTokenCount"
-               VkCmdProcessCommandsInfoNVX
-             =
-             #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
-        type FieldIsArray "indirectCommandsTokenCount"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "indirectCommandsTokenCount"
-           VkCmdProcessCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "indirectCommandsTokenCount"
+    type StructRep VkCmdProcessCommandsInfoNVX =
+         'StructMeta "VkCmdProcessCommandsInfoNVX" -- ' closing tick for hsc2hs
            VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
-         where
-        type FieldType "pIndirectCommandsTokens"
-               VkCmdProcessCommandsInfoNVX
-             = Ptr VkIndirectCommandsTokenNVX
-        type FieldOptional "pIndirectCommandsTokens"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pIndirectCommandsTokens"
-               VkCmdProcessCommandsInfoNVX
-             =
-             #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
-        type FieldIsArray "pIndirectCommandsTokens"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pIndirectCommandsTokens" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
-        type FieldType "maxSequencesCount" VkCmdProcessCommandsInfoNVX =
-             Word32
-        type FieldOptional "maxSequencesCount" VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSequencesCount" VkCmdProcessCommandsInfoNVX =
-             #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
-        type FieldIsArray "maxSequencesCount" VkCmdProcessCommandsInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSequencesCount" VkCmdProcessCommandsInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX where
-        type FieldType "targetCommandBuffer" VkCmdProcessCommandsInfoNVX =
-             VkCommandBuffer
-        type FieldOptional "targetCommandBuffer"
-               VkCmdProcessCommandsInfoNVX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
-             =
-             #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
-        type FieldIsArray "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "targetCommandBuffer" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX where
-        type FieldType "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX =
-             VkBuffer
-        type FieldOptional "sequencesCountBuffer"
-               VkCmdProcessCommandsInfoNVX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX
-             =
-             #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
-        type FieldIsArray "sequencesCountBuffer"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sequencesCountBuffer" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX where
-        type FieldType "sequencesCountOffset" VkCmdProcessCommandsInfoNVX =
-             VkDeviceSize
-        type FieldOptional "sequencesCountOffset"
-               VkCmdProcessCommandsInfoNVX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sequencesCountOffset" VkCmdProcessCommandsInfoNVX
-             =
-             #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
-        type FieldIsArray "sequencesCountOffset"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sequencesCountOffset" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX where
-        type FieldType "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX =
-             VkBuffer
-        type FieldOptional "sequencesIndexBuffer"
-               VkCmdProcessCommandsInfoNVX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX
-             =
-             #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
-        type FieldIsArray "sequencesIndexBuffer"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sequencesIndexBuffer" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX where
-        type FieldType "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX =
-             VkDeviceSize
-        type FieldOptional "sequencesIndexOffset"
-               VkCmdProcessCommandsInfoNVX
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX
-             =
-             #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
-        type FieldIsArray "sequencesIndexOffset"
-               VkCmdProcessCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sequencesIndexOffset" VkCmdProcessCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
-
-instance Show VkCmdProcessCommandsInfoNVX where
-        showsPrec d x
-          = showString "VkCmdProcessCommandsInfoNVX {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "objectTable = " .
-                            showsPrec d (getField @"objectTable" x) .
-                              showString ", " .
-                                showString "indirectCommandsLayout = " .
-                                  showsPrec d (getField @"indirectCommandsLayout" x) .
-                                    showString ", " .
-                                      showString "indirectCommandsTokenCount = " .
-                                        showsPrec d (getField @"indirectCommandsTokenCount" x) .
-                                          showString ", " .
-                                            showString "pIndirectCommandsTokens = " .
-                                              showsPrec d (getField @"pIndirectCommandsTokens" x) .
-                                                showString ", " .
-                                                  showString "maxSequencesCount = " .
-                                                    showsPrec d (getField @"maxSequencesCount" x) .
-                                                      showString ", " .
-                                                        showString "targetCommandBuffer = " .
-                                                          showsPrec d
-                                                            (getField @"targetCommandBuffer" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "sequencesCountBuffer = " .
-                                                                showsPrec d
-                                                                  (getField @"sequencesCountBuffer"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "sequencesCountOffset = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"sequencesCountOffset"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "sequencesIndexBuffer = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"sequencesIndexBuffer"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "sequencesIndexOffset = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"sequencesIndexOffset"
-                                                                                       x)
-                                                                                    . showChar '}'
+           #{size VkCmdProcessCommandsInfoNVX}
+           #{alignment VkCmdProcessCommandsInfoNVX}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkCmdProcessCommandsInfoNVX, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkCmdProcessCommandsInfoNVX, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectTable" VkObjectTableNVX 'False 
+                                                               #{offset VkCmdProcessCommandsInfoNVX, objectTable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "indirectCommandsLayout" VkIndirectCommandsLayoutNVX -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "indirectCommandsTokenCount" Word32 'False 
+                                                                    #{offset VkCmdProcessCommandsInfoNVX, indirectCommandsTokenCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pIndirectCommandsTokens" -- ' closing tick for hsc2hs
+                (Ptr VkIndirectCommandsTokenNVX)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkCmdProcessCommandsInfoNVX, pIndirectCommandsTokens}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSequencesCount" Word32 'False 
+                                                           #{offset VkCmdProcessCommandsInfoNVX, maxSequencesCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "targetCommandBuffer" VkCommandBuffer 'True 
+                                                                     #{offset VkCmdProcessCommandsInfoNVX, targetCommandBuffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sequencesCountBuffer" VkBuffer 'True 
+                                                               #{offset VkCmdProcessCommandsInfoNVX, sequencesCountBuffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sequencesCountOffset" VkDeviceSize 'True 
+                                                                   #{offset VkCmdProcessCommandsInfoNVX, sequencesCountOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sequencesIndexBuffer" VkBuffer 'True 
+                                                               #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexBuffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sequencesIndexOffset" VkDeviceSize 'True 
+                                                                   #{offset VkCmdProcessCommandsInfoNVX, sequencesIndexOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkCmdReserveSpaceForCommandsInfoNVX {
 --   >     VkStructureType sType;
@@ -613,257 +120,42 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCmdReserveSpaceForCommandsInfoNVX VkCmdReserveSpaceForCommandsInfoNVX registry at www.khronos.org>
 type VkCmdReserveSpaceForCommandsInfoNVX =
-     VulkanStruct VkCmdReserveSpaceForCommandsInfoNVX' -- ' closing tick for hsc2hs
+     VkStruct VkCmdReserveSpaceForCommandsInfoNVX' -- ' closing tick for hsc2hs
 
 data VkCmdReserveSpaceForCommandsInfoNVX' -- ' closing tick for hsc2hs
 
-instance Eq VkCmdReserveSpaceForCommandsInfoNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkCmdReserveSpaceForCommandsInfoNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkCmdReserveSpaceForCommandsInfoNVX where
-        sizeOf ~_ = #{size VkCmdReserveSpaceForCommandsInfoNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkCmdReserveSpaceForCommandsInfoNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkCmdReserveSpaceForCommandsInfoNVX where
-        type StructFields VkCmdReserveSpaceForCommandsInfoNVX =
-             '["sType", "pNext", "objectTable", "indirectCommandsLayout", -- ' closing tick for hsc2hs
-               "maxSequencesCount"]
-        type CUnionType VkCmdReserveSpaceForCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkCmdReserveSpaceForCommandsInfoNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkCmdReserveSpaceForCommandsInfoNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkCmdReserveSpaceForCommandsInfoNVX where
-        type FieldType "sType" VkCmdReserveSpaceForCommandsInfoNVX =
-             VkStructureType
-        type FieldOptional "sType" VkCmdReserveSpaceForCommandsInfoNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkCmdReserveSpaceForCommandsInfoNVX =
-             #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
-        type FieldIsArray "sType" VkCmdReserveSpaceForCommandsInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkCmdReserveSpaceForCommandsInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkCmdReserveSpaceForCommandsInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkCmdReserveSpaceForCommandsInfoNVX where
-        type FieldType "pNext" VkCmdReserveSpaceForCommandsInfoNVX =
-             Ptr Void
-        type FieldOptional "pNext" VkCmdReserveSpaceForCommandsInfoNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkCmdReserveSpaceForCommandsInfoNVX =
-             #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
-        type FieldIsArray "pNext" VkCmdReserveSpaceForCommandsInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkCmdReserveSpaceForCommandsInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkCmdReserveSpaceForCommandsInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX where
-        type FieldType "objectTable" VkCmdReserveSpaceForCommandsInfoNVX =
-             VkObjectTableNVX
-        type FieldOptional "objectTable"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
-             =
-             #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
-        type FieldIsArray "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectTable" VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
-
-instance {-# OVERLAPPING #-}
-         HasField "indirectCommandsLayout"
-           VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        type FieldType "indirectCommandsLayout"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             = VkIndirectCommandsLayoutNVX
-        type FieldOptional "indirectCommandsLayout"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "indirectCommandsLayout"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             =
-             #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
-        type FieldIsArray "indirectCommandsLayout"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "indirectCommandsLayout"
-           VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "indirectCommandsLayout"
-           VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSequencesCount" VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        type FieldType "maxSequencesCount"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             = Word32
-        type FieldOptional "maxSequencesCount"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSequencesCount"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             =
-             #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
-        type FieldIsArray "maxSequencesCount"
-               VkCmdReserveSpaceForCommandsInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSequencesCount"
-           VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSequencesCount"
+    type StructRep VkCmdReserveSpaceForCommandsInfoNVX =
+         'StructMeta "VkCmdReserveSpaceForCommandsInfoNVX" -- ' closing tick for hsc2hs
            VkCmdReserveSpaceForCommandsInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
-
-instance Show VkCmdReserveSpaceForCommandsInfoNVX where
-        showsPrec d x
-          = showString "VkCmdReserveSpaceForCommandsInfoNVX {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "objectTable = " .
-                            showsPrec d (getField @"objectTable" x) .
-                              showString ", " .
-                                showString "indirectCommandsLayout = " .
-                                  showsPrec d (getField @"indirectCommandsLayout" x) .
-                                    showString ", " .
-                                      showString "maxSequencesCount = " .
-                                        showsPrec d (getField @"maxSequencesCount" x) . showChar '}'
+           #{size VkCmdReserveSpaceForCommandsInfoNVX}
+           #{alignment VkCmdReserveSpaceForCommandsInfoNVX}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkCmdReserveSpaceForCommandsInfoNVX, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkCmdReserveSpaceForCommandsInfoNVX, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectTable" VkObjectTableNVX 'False 
+                                                               #{offset VkCmdReserveSpaceForCommandsInfoNVX, objectTable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "indirectCommandsLayout" VkIndirectCommandsLayoutNVX -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkCmdReserveSpaceForCommandsInfoNVX, indirectCommandsLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSequencesCount" Word32 'False 
+                                                           #{offset VkCmdReserveSpaceForCommandsInfoNVX, maxSequencesCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Command.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Command.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Command.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Command.hsc
@@ -2,1001 +2,221 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Command
-       (VkCommandBufferAllocateInfo, VkCommandBufferAllocateInfo', -- ' closing tick for hsc2hs
-        VkCommandBufferBeginInfo, VkCommandBufferBeginInfo', -- ' closing tick for hsc2hs
-        VkCommandBufferInheritanceInfo, VkCommandBufferInheritanceInfo', -- ' closing tick for hsc2hs
-        VkCommandPoolCreateInfo, VkCommandPoolCreateInfo') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes          (VkBool32)
-import Graphics.Vulkan.Types.Enum.Command       (VkCommandBufferLevel,
-                                                 VkCommandBufferUsageFlags,
-                                                 VkCommandPoolCreateFlags)
-import Graphics.Vulkan.Types.Enum.Query         (VkQueryControlFlags,
-                                                 VkQueryPipelineStatisticFlags)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkCommandPool, VkFramebuffer,
-                                                 VkRenderPass)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkCommandBufferAllocateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkCommandPool          commandPool;
---   >     VkCommandBufferLevel   level;
---   >     uint32_t               commandBufferCount;
---   > } VkCommandBufferAllocateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandBufferAllocateInfo VkCommandBufferAllocateInfo registry at www.khronos.org>
-type VkCommandBufferAllocateInfo =
-     VulkanStruct VkCommandBufferAllocateInfo' -- ' closing tick for hsc2hs
-
-data VkCommandBufferAllocateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkCommandBufferAllocateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkCommandBufferAllocateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkCommandBufferAllocateInfo where
-        sizeOf ~_ = #{size VkCommandBufferAllocateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkCommandBufferAllocateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkCommandBufferAllocateInfo where
-        type StructFields VkCommandBufferAllocateInfo =
-             '["sType", "pNext", "commandPool", "level", "commandBufferCount"] -- ' closing tick for hsc2hs
-        type CUnionType VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkCommandBufferAllocateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkCommandBufferAllocateInfo where
-        type FieldType "sType" VkCommandBufferAllocateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkCommandBufferAllocateInfo =
-             #{offset VkCommandBufferAllocateInfo, sType}
-        type FieldIsArray "sType" VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkCommandBufferAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkCommandBufferAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkCommandBufferAllocateInfo where
-        type FieldType "pNext" VkCommandBufferAllocateInfo = Ptr Void
-        type FieldOptional "pNext" VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkCommandBufferAllocateInfo =
-             #{offset VkCommandBufferAllocateInfo, pNext}
-        type FieldIsArray "pNext" VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkCommandBufferAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkCommandBufferAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "commandPool" VkCommandBufferAllocateInfo where
-        type FieldType "commandPool" VkCommandBufferAllocateInfo =
-             VkCommandPool
-        type FieldOptional "commandPool" VkCommandBufferAllocateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "commandPool" VkCommandBufferAllocateInfo =
-             #{offset VkCommandBufferAllocateInfo, commandPool}
-        type FieldIsArray "commandPool" VkCommandBufferAllocateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferAllocateInfo, commandPool}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "commandPool" VkCommandBufferAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, commandPool})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, commandPool}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "commandPool" VkCommandBufferAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, commandPool}
-
-instance {-# OVERLAPPING #-}
-         HasField "level" VkCommandBufferAllocateInfo where
-        type FieldType "level" VkCommandBufferAllocateInfo =
-             VkCommandBufferLevel
-        type FieldOptional "level" VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "level" VkCommandBufferAllocateInfo =
-             #{offset VkCommandBufferAllocateInfo, level}
-        type FieldIsArray "level" VkCommandBufferAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferAllocateInfo, level}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "level" VkCommandBufferAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, level})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, level}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "level" VkCommandBufferAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, level}
-
-instance {-# OVERLAPPING #-}
-         HasField "commandBufferCount" VkCommandBufferAllocateInfo where
-        type FieldType "commandBufferCount" VkCommandBufferAllocateInfo =
-             Word32
-        type FieldOptional "commandBufferCount" VkCommandBufferAllocateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "commandBufferCount" VkCommandBufferAllocateInfo =
-             #{offset VkCommandBufferAllocateInfo, commandBufferCount}
-        type FieldIsArray "commandBufferCount" VkCommandBufferAllocateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferAllocateInfo, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "commandBufferCount" VkCommandBufferAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferAllocateInfo, commandBufferCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferAllocateInfo, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "commandBufferCount" VkCommandBufferAllocateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferAllocateInfo, commandBufferCount}
-
-instance Show VkCommandBufferAllocateInfo where
-        showsPrec d x
-          = showString "VkCommandBufferAllocateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "commandPool = " .
-                            showsPrec d (getField @"commandPool" x) .
-                              showString ", " .
-                                showString "level = " .
-                                  showsPrec d (getField @"level" x) .
-                                    showString ", " .
-                                      showString "commandBufferCount = " .
-                                        showsPrec d (getField @"commandBufferCount" x) .
-                                          showChar '}'
-
--- | > typedef struct VkCommandBufferBeginInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkCommandBufferUsageFlags  flags;
---   >     const VkCommandBufferInheritanceInfo*       pInheritanceInfo;
---   > } VkCommandBufferBeginInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandBufferBeginInfo VkCommandBufferBeginInfo registry at www.khronos.org>
-type VkCommandBufferBeginInfo =
-     VulkanStruct VkCommandBufferBeginInfo' -- ' closing tick for hsc2hs
-
-data VkCommandBufferBeginInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkCommandBufferBeginInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkCommandBufferBeginInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkCommandBufferBeginInfo where
-        sizeOf ~_ = #{size VkCommandBufferBeginInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkCommandBufferBeginInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkCommandBufferBeginInfo where
-        type StructFields VkCommandBufferBeginInfo =
-             '["sType", "pNext", "flags", "pInheritanceInfo"] -- ' closing tick for hsc2hs
-        type CUnionType VkCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkCommandBufferBeginInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkCommandBufferBeginInfo where
-        type FieldType "sType" VkCommandBufferBeginInfo = VkStructureType
-        type FieldOptional "sType" VkCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkCommandBufferBeginInfo =
-             #{offset VkCommandBufferBeginInfo, sType}
-        type FieldIsArray "sType" VkCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCommandBufferBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkCommandBufferBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkCommandBufferBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkCommandBufferBeginInfo where
-        type FieldType "pNext" VkCommandBufferBeginInfo = Ptr Void
-        type FieldOptional "pNext" VkCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkCommandBufferBeginInfo =
-             #{offset VkCommandBufferBeginInfo, pNext}
-        type FieldIsArray "pNext" VkCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCommandBufferBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkCommandBufferBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkCommandBufferBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkCommandBufferBeginInfo where
-        type FieldType "flags" VkCommandBufferBeginInfo =
-             VkCommandBufferUsageFlags
-        type FieldOptional "flags" VkCommandBufferBeginInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkCommandBufferBeginInfo =
-             #{offset VkCommandBufferBeginInfo, flags}
-        type FieldIsArray "flags" VkCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCommandBufferBeginInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkCommandBufferBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferBeginInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkCommandBufferBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferBeginInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pInheritanceInfo" VkCommandBufferBeginInfo where
-        type FieldType "pInheritanceInfo" VkCommandBufferBeginInfo =
-             Ptr VkCommandBufferInheritanceInfo
-        type FieldOptional "pInheritanceInfo" VkCommandBufferBeginInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pInheritanceInfo" VkCommandBufferBeginInfo =
-             #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
-        type FieldIsArray "pInheritanceInfo" VkCommandBufferBeginInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pInheritanceInfo" VkCommandBufferBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferBeginInfo, pInheritanceInfo})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pInheritanceInfo" VkCommandBufferBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
-
-instance Show VkCommandBufferBeginInfo where
-        showsPrec d x
-          = showString "VkCommandBufferBeginInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "pInheritanceInfo = " .
-                                  showsPrec d (getField @"pInheritanceInfo" x) . showChar '}'
-
--- | > typedef struct VkCommandBufferInheritanceInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkRenderPass    renderPass;
---   >     uint32_t               subpass;
---   >     VkFramebuffer   framebuffer;
---   >     VkBool32               occlusionQueryEnable;
---   >     VkQueryControlFlags    queryFlags;
---   >     VkQueryPipelineStatisticFlags pipelineStatistics;
---   > } VkCommandBufferInheritanceInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandBufferInheritanceInfo VkCommandBufferInheritanceInfo registry at www.khronos.org>
-type VkCommandBufferInheritanceInfo =
-     VulkanStruct VkCommandBufferInheritanceInfo' -- ' closing tick for hsc2hs
-
-data VkCommandBufferInheritanceInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkCommandBufferInheritanceInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkCommandBufferInheritanceInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkCommandBufferInheritanceInfo where
-        sizeOf ~_ = #{size VkCommandBufferInheritanceInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkCommandBufferInheritanceInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkCommandBufferInheritanceInfo where
-        type StructFields VkCommandBufferInheritanceInfo =
-             '["sType", "pNext", "renderPass", "subpass", "framebuffer", -- ' closing tick for hsc2hs
-               "occlusionQueryEnable", "queryFlags", "pipelineStatistics"]
-        type CUnionType VkCommandBufferInheritanceInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkCommandBufferInheritanceInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkCommandBufferInheritanceInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkCommandBufferInheritanceInfo where
-        type FieldType "sType" VkCommandBufferInheritanceInfo =
-             VkStructureType
-        type FieldOptional "sType" VkCommandBufferInheritanceInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkCommandBufferInheritanceInfo =
-             #{offset VkCommandBufferInheritanceInfo, sType}
-        type FieldIsArray "sType" VkCommandBufferInheritanceInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferInheritanceInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkCommandBufferInheritanceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkCommandBufferInheritanceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkCommandBufferInheritanceInfo where
-        type FieldType "pNext" VkCommandBufferInheritanceInfo = Ptr Void
-        type FieldOptional "pNext" VkCommandBufferInheritanceInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkCommandBufferInheritanceInfo =
-             #{offset VkCommandBufferInheritanceInfo, pNext}
-        type FieldIsArray "pNext" VkCommandBufferInheritanceInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferInheritanceInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkCommandBufferInheritanceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkCommandBufferInheritanceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "renderPass" VkCommandBufferInheritanceInfo where
-        type FieldType "renderPass" VkCommandBufferInheritanceInfo =
-             VkRenderPass
-        type FieldOptional "renderPass" VkCommandBufferInheritanceInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "renderPass" VkCommandBufferInheritanceInfo =
-             #{offset VkCommandBufferInheritanceInfo, renderPass}
-        type FieldIsArray "renderPass" VkCommandBufferInheritanceInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferInheritanceInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "renderPass" VkCommandBufferInheritanceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, renderPass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "renderPass" VkCommandBufferInheritanceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         HasField "subpass" VkCommandBufferInheritanceInfo where
-        type FieldType "subpass" VkCommandBufferInheritanceInfo = Word32
-        type FieldOptional "subpass" VkCommandBufferInheritanceInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "subpass" VkCommandBufferInheritanceInfo =
-             #{offset VkCommandBufferInheritanceInfo, subpass}
-        type FieldIsArray "subpass" VkCommandBufferInheritanceInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferInheritanceInfo, subpass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subpass" VkCommandBufferInheritanceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, subpass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, subpass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subpass" VkCommandBufferInheritanceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, subpass}
-
-instance {-# OVERLAPPING #-}
-         HasField "framebuffer" VkCommandBufferInheritanceInfo where
-        type FieldType "framebuffer" VkCommandBufferInheritanceInfo =
-             VkFramebuffer
-        type FieldOptional "framebuffer" VkCommandBufferInheritanceInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "framebuffer" VkCommandBufferInheritanceInfo =
-             #{offset VkCommandBufferInheritanceInfo, framebuffer}
-        type FieldIsArray "framebuffer" VkCommandBufferInheritanceInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferInheritanceInfo, framebuffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "framebuffer" VkCommandBufferInheritanceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, framebuffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, framebuffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "framebuffer" VkCommandBufferInheritanceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, framebuffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "occlusionQueryEnable" VkCommandBufferInheritanceInfo
-         where
-        type FieldType "occlusionQueryEnable"
-               VkCommandBufferInheritanceInfo
-             = VkBool32
-        type FieldOptional "occlusionQueryEnable"
-               VkCommandBufferInheritanceInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "occlusionQueryEnable"
-               VkCommandBufferInheritanceInfo
-             =
-             #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
-        type FieldIsArray "occlusionQueryEnable"
-               VkCommandBufferInheritanceInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "occlusionQueryEnable" VkCommandBufferInheritanceInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "occlusionQueryEnable" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "queryFlags" VkCommandBufferInheritanceInfo where
-        type FieldType "queryFlags" VkCommandBufferInheritanceInfo =
-             VkQueryControlFlags
-        type FieldOptional "queryFlags" VkCommandBufferInheritanceInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "queryFlags" VkCommandBufferInheritanceInfo =
-             #{offset VkCommandBufferInheritanceInfo, queryFlags}
-        type FieldIsArray "queryFlags" VkCommandBufferInheritanceInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferInheritanceInfo, queryFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queryFlags" VkCommandBufferInheritanceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, queryFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, queryFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queryFlags" VkCommandBufferInheritanceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, queryFlags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineStatistics" VkCommandBufferInheritanceInfo where
-        type FieldType "pipelineStatistics" VkCommandBufferInheritanceInfo
-             = VkQueryPipelineStatisticFlags
-        type FieldOptional "pipelineStatistics"
-               VkCommandBufferInheritanceInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineStatistics"
-               VkCommandBufferInheritanceInfo
-             =
-             #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
-        type FieldIsArray "pipelineStatistics"
-               VkCommandBufferInheritanceInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineStatistics" VkCommandBufferInheritanceInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandBufferInheritanceInfo, pipelineStatistics})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineStatistics" VkCommandBufferInheritanceInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
-
-instance Show VkCommandBufferInheritanceInfo where
-        showsPrec d x
-          = showString "VkCommandBufferInheritanceInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "renderPass = " .
-                            showsPrec d (getField @"renderPass" x) .
-                              showString ", " .
-                                showString "subpass = " .
-                                  showsPrec d (getField @"subpass" x) .
-                                    showString ", " .
-                                      showString "framebuffer = " .
-                                        showsPrec d (getField @"framebuffer" x) .
-                                          showString ", " .
-                                            showString "occlusionQueryEnable = " .
-                                              showsPrec d (getField @"occlusionQueryEnable" x) .
-                                                showString ", " .
-                                                  showString "queryFlags = " .
-                                                    showsPrec d (getField @"queryFlags" x) .
-                                                      showString ", " .
-                                                        showString "pipelineStatistics = " .
-                                                          showsPrec d
-                                                            (getField @"pipelineStatistics" x)
-                                                            . showChar '}'
-
--- | > typedef struct VkCommandPoolCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkCommandPoolCreateFlags   flags;
---   >     uint32_t               queueFamilyIndex;
---   > } VkCommandPoolCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandPoolCreateInfo VkCommandPoolCreateInfo registry at www.khronos.org>
-type VkCommandPoolCreateInfo =
-     VulkanStruct VkCommandPoolCreateInfo' -- ' closing tick for hsc2hs
-
-data VkCommandPoolCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkCommandPoolCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkCommandPoolCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkCommandPoolCreateInfo where
-        sizeOf ~_ = #{size VkCommandPoolCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkCommandPoolCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkCommandPoolCreateInfo where
-        type StructFields VkCommandPoolCreateInfo =
-             '["sType", "pNext", "flags", "queueFamilyIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkCommandPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkCommandPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkCommandPoolCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkCommandPoolCreateInfo where
-        type FieldType "sType" VkCommandPoolCreateInfo = VkStructureType
-        type FieldOptional "sType" VkCommandPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkCommandPoolCreateInfo =
-             #{offset VkCommandPoolCreateInfo, sType}
-        type FieldIsArray "sType" VkCommandPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCommandPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkCommandPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkCommandPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkCommandPoolCreateInfo where
-        type FieldType "pNext" VkCommandPoolCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkCommandPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkCommandPoolCreateInfo =
-             #{offset VkCommandPoolCreateInfo, pNext}
-        type FieldIsArray "pNext" VkCommandPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCommandPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkCommandPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkCommandPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkCommandPoolCreateInfo where
-        type FieldType "flags" VkCommandPoolCreateInfo =
-             VkCommandPoolCreateFlags
-        type FieldOptional "flags" VkCommandPoolCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkCommandPoolCreateInfo =
-             #{offset VkCommandPoolCreateInfo, flags}
-        type FieldIsArray "flags" VkCommandPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCommandPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkCommandPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkCommandPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFamilyIndex" VkCommandPoolCreateInfo where
-        type FieldType "queueFamilyIndex" VkCommandPoolCreateInfo = Word32
-        type FieldOptional "queueFamilyIndex" VkCommandPoolCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueFamilyIndex" VkCommandPoolCreateInfo =
-             #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
-        type FieldIsArray "queueFamilyIndex" VkCommandPoolCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueFamilyIndex" VkCommandPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCommandPoolCreateInfo, queueFamilyIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueFamilyIndex" VkCommandPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
-
-instance Show VkCommandPoolCreateInfo where
-        showsPrec d x
-          = showString "VkCommandPoolCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "queueFamilyIndex = " .
-                                  showsPrec d (getField @"queueFamilyIndex" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Command
+       (VkCommandBufferAllocateInfo, VkCommandBufferBeginInfo,
+        VkCommandBufferInheritanceInfo, VkCommandPoolCreateInfo)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes          (VkBool32)
+import Graphics.Vulkan.Types.Enum.Command       (VkCommandBufferLevel,
+                                                 VkCommandBufferUsageFlags,
+                                                 VkCommandPoolCreateFlags)
+import Graphics.Vulkan.Types.Enum.Query         (VkQueryControlFlags,
+                                                 VkQueryPipelineStatisticFlags)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkCommandPool, VkFramebuffer,
+                                                 VkRenderPass)
+
+-- | > typedef struct VkCommandBufferAllocateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkCommandPool          commandPool;
+--   >     VkCommandBufferLevel   level;
+--   >     uint32_t               commandBufferCount;
+--   > } VkCommandBufferAllocateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandBufferAllocateInfo VkCommandBufferAllocateInfo registry at www.khronos.org>
+type VkCommandBufferAllocateInfo =
+     VkStruct VkCommandBufferAllocateInfo' -- ' closing tick for hsc2hs
+
+data VkCommandBufferAllocateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkCommandBufferAllocateInfo where
+    type StructRep VkCommandBufferAllocateInfo =
+         'StructMeta "VkCommandBufferAllocateInfo" -- ' closing tick for hsc2hs
+           VkCommandBufferAllocateInfo
+           #{size VkCommandBufferAllocateInfo}
+           #{alignment VkCommandBufferAllocateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkCommandBufferAllocateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkCommandBufferAllocateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "commandPool" VkCommandPool 'False 
+                                                            #{offset VkCommandBufferAllocateInfo, commandPool}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "level" VkCommandBufferLevel 'False 
+                                                             #{offset VkCommandBufferAllocateInfo, level}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "commandBufferCount" Word32 'False 
+                                                            #{offset VkCommandBufferAllocateInfo, commandBufferCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkCommandBufferBeginInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkCommandBufferUsageFlags  flags;
+--   >     const VkCommandBufferInheritanceInfo*       pInheritanceInfo;
+--   > } VkCommandBufferBeginInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandBufferBeginInfo VkCommandBufferBeginInfo registry at www.khronos.org>
+type VkCommandBufferBeginInfo = VkStruct VkCommandBufferBeginInfo' -- ' closing tick for hsc2hs
+
+data VkCommandBufferBeginInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkCommandBufferBeginInfo where
+    type StructRep VkCommandBufferBeginInfo =
+         'StructMeta "VkCommandBufferBeginInfo" VkCommandBufferBeginInfo -- ' closing tick for hsc2hs
+           #{size VkCommandBufferBeginInfo}
+           #{alignment VkCommandBufferBeginInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkCommandBufferBeginInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkCommandBufferBeginInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkCommandBufferUsageFlags 'True 
+                                                                 #{offset VkCommandBufferBeginInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pInheritanceInfo" (Ptr VkCommandBufferInheritanceInfo) -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkCommandBufferBeginInfo, pInheritanceInfo}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkCommandBufferInheritanceInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkRenderPass    renderPass;
+--   >     uint32_t               subpass;
+--   >     VkFramebuffer   framebuffer;
+--   >     VkBool32               occlusionQueryEnable;
+--   >     VkQueryControlFlags    queryFlags;
+--   >     VkQueryPipelineStatisticFlags pipelineStatistics;
+--   > } VkCommandBufferInheritanceInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandBufferInheritanceInfo VkCommandBufferInheritanceInfo registry at www.khronos.org>
+type VkCommandBufferInheritanceInfo =
+     VkStruct VkCommandBufferInheritanceInfo' -- ' closing tick for hsc2hs
+
+data VkCommandBufferInheritanceInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkCommandBufferInheritanceInfo where
+    type StructRep VkCommandBufferInheritanceInfo =
+         'StructMeta "VkCommandBufferInheritanceInfo" -- ' closing tick for hsc2hs
+           VkCommandBufferInheritanceInfo
+           #{size VkCommandBufferInheritanceInfo}
+           #{alignment VkCommandBufferInheritanceInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkCommandBufferInheritanceInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkCommandBufferInheritanceInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "renderPass" VkRenderPass 'True 
+                                                         #{offset VkCommandBufferInheritanceInfo, renderPass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subpass" Word32 'False 
+                                                 #{offset VkCommandBufferInheritanceInfo, subpass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "framebuffer" VkFramebuffer 'True 
+                                                           #{offset VkCommandBufferInheritanceInfo, framebuffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "occlusionQueryEnable" VkBool32 'False 
+                                                                #{offset VkCommandBufferInheritanceInfo, occlusionQueryEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queryFlags" VkQueryControlFlags 'True 
+                                                                #{offset VkCommandBufferInheritanceInfo, queryFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineStatistics" VkQueryPipelineStatisticFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkCommandBufferInheritanceInfo, pipelineStatistics}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkCommandPoolCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkCommandPoolCreateFlags   flags;
+--   >     uint32_t               queueFamilyIndex;
+--   > } VkCommandPoolCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCommandPoolCreateInfo VkCommandPoolCreateInfo registry at www.khronos.org>
+type VkCommandPoolCreateInfo = VkStruct VkCommandPoolCreateInfo' -- ' closing tick for hsc2hs
+
+data VkCommandPoolCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkCommandPoolCreateInfo where
+    type StructRep VkCommandPoolCreateInfo =
+         'StructMeta "VkCommandPoolCreateInfo" VkCommandPoolCreateInfo -- ' closing tick for hsc2hs
+           #{size VkCommandPoolCreateInfo}
+           #{alignment VkCommandPoolCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkCommandPoolCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkCommandPoolCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkCommandPoolCreateFlags 'True 
+                                                                #{offset VkCommandPoolCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueFamilyIndex" Word32 'False 
+                                                          #{offset VkCommandPoolCreateInfo, queueFamilyIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/ComponentMapping.hsc b/src-gen/Graphics/Vulkan/Types/Struct/ComponentMapping.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/ComponentMapping.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/ComponentMapping.hsc
@@ -2,18 +2,14 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.ComponentMapping
-       (VkComponentMapping, VkComponentMapping') where -- ' closing tick for hsc2hs
-import Foreign.Storable                            (Storable (..))
+       (VkComponentMapping) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.ComponentSwizzle (VkComponentSwizzle)
-import System.IO.Unsafe                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkComponentMapping {
 --   >     VkComponentSwizzle r;
@@ -23,170 +19,35 @@
 --   > } VkComponentMapping;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkComponentMapping VkComponentMapping registry at www.khronos.org>
-type VkComponentMapping = VulkanStruct VkComponentMapping' -- ' closing tick for hsc2hs
+type VkComponentMapping = VkStruct VkComponentMapping' -- ' closing tick for hsc2hs
 
 data VkComponentMapping' -- ' closing tick for hsc2hs
 
-instance Eq VkComponentMapping where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkComponentMapping where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkComponentMapping where
-        sizeOf ~_ = #{size VkComponentMapping}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkComponentMapping}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkComponentMapping where
-        type StructFields VkComponentMapping = '["r", "g", "b", "a"] -- ' closing tick for hsc2hs
-        type CUnionType VkComponentMapping = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkComponentMapping = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkComponentMapping = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "r" VkComponentMapping where
-        type FieldType "r" VkComponentMapping = VkComponentSwizzle
-        type FieldOptional "r" VkComponentMapping = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "r" VkComponentMapping =
-             #{offset VkComponentMapping, r}
-        type FieldIsArray "r" VkComponentMapping = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkComponentMapping, r}
-
-instance {-# OVERLAPPING #-} CanReadField "r" VkComponentMapping
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, r})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComponentMapping, r}
-
-instance {-# OVERLAPPING #-} CanWriteField "r" VkComponentMapping
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComponentMapping, r}
-
-instance {-# OVERLAPPING #-} HasField "g" VkComponentMapping where
-        type FieldType "g" VkComponentMapping = VkComponentSwizzle
-        type FieldOptional "g" VkComponentMapping = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "g" VkComponentMapping =
-             #{offset VkComponentMapping, g}
-        type FieldIsArray "g" VkComponentMapping = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkComponentMapping, g}
-
-instance {-# OVERLAPPING #-} CanReadField "g" VkComponentMapping
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, g})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComponentMapping, g}
-
-instance {-# OVERLAPPING #-} CanWriteField "g" VkComponentMapping
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComponentMapping, g}
-
-instance {-# OVERLAPPING #-} HasField "b" VkComponentMapping where
-        type FieldType "b" VkComponentMapping = VkComponentSwizzle
-        type FieldOptional "b" VkComponentMapping = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "b" VkComponentMapping =
-             #{offset VkComponentMapping, b}
-        type FieldIsArray "b" VkComponentMapping = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkComponentMapping, b}
-
-instance {-# OVERLAPPING #-} CanReadField "b" VkComponentMapping
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, b})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComponentMapping, b}
-
-instance {-# OVERLAPPING #-} CanWriteField "b" VkComponentMapping
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComponentMapping, b}
-
-instance {-# OVERLAPPING #-} HasField "a" VkComponentMapping where
-        type FieldType "a" VkComponentMapping = VkComponentSwizzle
-        type FieldOptional "a" VkComponentMapping = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "a" VkComponentMapping =
-             #{offset VkComponentMapping, a}
-        type FieldIsArray "a" VkComponentMapping = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkComponentMapping, a}
-
-instance {-# OVERLAPPING #-} CanReadField "a" VkComponentMapping
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComponentMapping, a})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComponentMapping, a}
-
-instance {-# OVERLAPPING #-} CanWriteField "a" VkComponentMapping
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComponentMapping, a}
-
-instance Show VkComponentMapping where
-        showsPrec d x
-          = showString "VkComponentMapping {" .
-              showString "r = " .
-                showsPrec d (getField @"r" x) .
-                  showString ", " .
-                    showString "g = " .
-                      showsPrec d (getField @"g" x) .
-                        showString ", " .
-                          showString "b = " .
-                            showsPrec d (getField @"b" x) .
-                              showString ", " .
-                                showString "a = " . showsPrec d (getField @"a" x) . showChar '}'
+    type StructRep VkComponentMapping =
+         'StructMeta "VkComponentMapping" VkComponentMapping  -- ' closing tick for hsc2hs
+                                                             #{size VkComponentMapping}
+           #{alignment VkComponentMapping}
+           '[('FieldMeta "r" VkComponentSwizzle 'False  -- ' closing tick for hsc2hs
+                                                       #{offset VkComponentMapping, r}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "g" VkComponentSwizzle 'False 
+                                                       #{offset VkComponentMapping, g}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "b" VkComponentSwizzle 'False 
+                                                       #{offset VkComponentMapping, b}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "a" VkComponentSwizzle 'False 
+                                                       #{offset VkComponentMapping, a}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/ComputePipelineCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/ComputePipelineCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/ComputePipelineCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/ComputePipelineCreateInfo.hsc
@@ -2,21 +2,17 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.ComputePipelineCreateInfo
-       (VkComputePipelineCreateInfo, VkComputePipelineCreateInfo') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkComputePipelineCreateInfo) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Pipeline      (VkPipelineCreateFlags)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Handles            (VkPipeline, VkPipelineLayout)
 import Graphics.Vulkan.Types.Struct.Pipeline    (VkPipelineShaderStageCreateInfo)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkComputePipelineCreateInfo {
 --   >     VkStructureType sType;
@@ -30,298 +26,51 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkComputePipelineCreateInfo VkComputePipelineCreateInfo registry at www.khronos.org>
 type VkComputePipelineCreateInfo =
-     VulkanStruct VkComputePipelineCreateInfo' -- ' closing tick for hsc2hs
+     VkStruct VkComputePipelineCreateInfo' -- ' closing tick for hsc2hs
 
 data VkComputePipelineCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkComputePipelineCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkComputePipelineCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkComputePipelineCreateInfo where
-        sizeOf ~_ = #{size VkComputePipelineCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkComputePipelineCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkComputePipelineCreateInfo where
-        type StructFields VkComputePipelineCreateInfo =
-             '["sType", "pNext", "flags", "stage", "layout", -- ' closing tick for hsc2hs
-               "basePipelineHandle", "basePipelineIndex"]
-        type CUnionType VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkComputePipelineCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkComputePipelineCreateInfo where
-        type FieldType "sType" VkComputePipelineCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkComputePipelineCreateInfo =
-             #{offset VkComputePipelineCreateInfo, sType}
-        type FieldIsArray "sType" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkComputePipelineCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkComputePipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkComputePipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkComputePipelineCreateInfo where
-        type FieldType "pNext" VkComputePipelineCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkComputePipelineCreateInfo =
-             #{offset VkComputePipelineCreateInfo, pNext}
-        type FieldIsArray "pNext" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkComputePipelineCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkComputePipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkComputePipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkComputePipelineCreateInfo where
-        type FieldType "flags" VkComputePipelineCreateInfo =
-             VkPipelineCreateFlags
-        type FieldOptional "flags" VkComputePipelineCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkComputePipelineCreateInfo =
-             #{offset VkComputePipelineCreateInfo, flags}
-        type FieldIsArray "flags" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkComputePipelineCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkComputePipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkComputePipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "stage" VkComputePipelineCreateInfo where
-        type FieldType "stage" VkComputePipelineCreateInfo =
-             VkPipelineShaderStageCreateInfo
-        type FieldOptional "stage" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "stage" VkComputePipelineCreateInfo =
-             #{offset VkComputePipelineCreateInfo, stage}
-        type FieldIsArray "stage" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkComputePipelineCreateInfo, stage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stage" VkComputePipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, stage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, stage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stage" VkComputePipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, stage}
-
-instance {-# OVERLAPPING #-}
-         HasField "layout" VkComputePipelineCreateInfo where
-        type FieldType "layout" VkComputePipelineCreateInfo =
-             VkPipelineLayout
-        type FieldOptional "layout" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layout" VkComputePipelineCreateInfo =
-             #{offset VkComputePipelineCreateInfo, layout}
-        type FieldIsArray "layout" VkComputePipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkComputePipelineCreateInfo, layout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "layout" VkComputePipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, layout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, layout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "layout" VkComputePipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, layout}
-
-instance {-# OVERLAPPING #-}
-         HasField "basePipelineHandle" VkComputePipelineCreateInfo where
-        type FieldType "basePipelineHandle" VkComputePipelineCreateInfo =
-             VkPipeline
-        type FieldOptional "basePipelineHandle" VkComputePipelineCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "basePipelineHandle" VkComputePipelineCreateInfo =
-             #{offset VkComputePipelineCreateInfo, basePipelineHandle}
-        type FieldIsArray "basePipelineHandle" VkComputePipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkComputePipelineCreateInfo, basePipelineHandle}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "basePipelineHandle" VkComputePipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, basePipelineHandle})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, basePipelineHandle}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "basePipelineHandle" VkComputePipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, basePipelineHandle}
-
-instance {-# OVERLAPPING #-}
-         HasField "basePipelineIndex" VkComputePipelineCreateInfo where
-        type FieldType "basePipelineIndex" VkComputePipelineCreateInfo =
-             Int32
-        type FieldOptional "basePipelineIndex" VkComputePipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "basePipelineIndex" VkComputePipelineCreateInfo =
-             #{offset VkComputePipelineCreateInfo, basePipelineIndex}
-        type FieldIsArray "basePipelineIndex" VkComputePipelineCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkComputePipelineCreateInfo, basePipelineIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "basePipelineIndex" VkComputePipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkComputePipelineCreateInfo, basePipelineIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkComputePipelineCreateInfo, basePipelineIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "basePipelineIndex" VkComputePipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkComputePipelineCreateInfo, basePipelineIndex}
-
-instance Show VkComputePipelineCreateInfo where
-        showsPrec d x
-          = showString "VkComputePipelineCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "stage = " .
-                                  showsPrec d (getField @"stage" x) .
-                                    showString ", " .
-                                      showString "layout = " .
-                                        showsPrec d (getField @"layout" x) .
-                                          showString ", " .
-                                            showString "basePipelineHandle = " .
-                                              showsPrec d (getField @"basePipelineHandle" x) .
-                                                showString ", " .
-                                                  showString "basePipelineIndex = " .
-                                                    showsPrec d (getField @"basePipelineIndex" x) .
-                                                      showChar '}'
+    type StructRep VkComputePipelineCreateInfo =
+         'StructMeta "VkComputePipelineCreateInfo" -- ' closing tick for hsc2hs
+           VkComputePipelineCreateInfo
+           #{size VkComputePipelineCreateInfo}
+           #{alignment VkComputePipelineCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkComputePipelineCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkComputePipelineCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineCreateFlags 'True 
+                                                             #{offset VkComputePipelineCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stage" VkPipelineShaderStageCreateInfo 'False
+                #{offset VkComputePipelineCreateInfo, stage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "layout" VkPipelineLayout 'False 
+                                                          #{offset VkComputePipelineCreateInfo, layout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "basePipelineHandle" VkPipeline 'True 
+                                                               #{offset VkComputePipelineCreateInfo, basePipelineHandle}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "basePipelineIndex" Int32 'False 
+                                                          #{offset VkComputePipelineCreateInfo, basePipelineIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/CopyDescriptorSet.hsc b/src-gen/Graphics/Vulkan/Types/Struct/CopyDescriptorSet.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/CopyDescriptorSet.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/CopyDescriptorSet.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.CopyDescriptorSet
-       (VkCopyDescriptorSet, VkCopyDescriptorSet') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkCopyDescriptorSet) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Handles            (VkDescriptorSet)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkCopyDescriptorSet {
 --   >     VkStructureType sType;
@@ -29,354 +25,60 @@
 --   > } VkCopyDescriptorSet;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkCopyDescriptorSet VkCopyDescriptorSet registry at www.khronos.org>
-type VkCopyDescriptorSet = VulkanStruct VkCopyDescriptorSet' -- ' closing tick for hsc2hs
+type VkCopyDescriptorSet = VkStruct VkCopyDescriptorSet' -- ' closing tick for hsc2hs
 
 data VkCopyDescriptorSet' -- ' closing tick for hsc2hs
 
-instance Eq VkCopyDescriptorSet where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkCopyDescriptorSet where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkCopyDescriptorSet where
-        sizeOf ~_ = #{size VkCopyDescriptorSet}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkCopyDescriptorSet}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkCopyDescriptorSet where
-        type StructFields VkCopyDescriptorSet =
-             '["sType", "pNext", "srcSet", "srcBinding", "srcArrayElement", -- ' closing tick for hsc2hs
-               "dstSet", "dstBinding", "dstArrayElement", "descriptorCount"]
-        type CUnionType VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkCopyDescriptorSet = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkCopyDescriptorSet
-         where
-        type FieldType "sType" VkCopyDescriptorSet = VkStructureType
-        type FieldOptional "sType" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, sType}
-        type FieldIsArray "sType" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCopyDescriptorSet, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkCopyDescriptorSet
-         where
-        type FieldType "pNext" VkCopyDescriptorSet = Ptr Void
-        type FieldOptional "pNext" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, pNext}
-        type FieldIsArray "pNext" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCopyDescriptorSet, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, pNext}
-
-instance {-# OVERLAPPING #-} HasField "srcSet" VkCopyDescriptorSet
-         where
-        type FieldType "srcSet" VkCopyDescriptorSet = VkDescriptorSet
-        type FieldOptional "srcSet" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcSet" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, srcSet}
-        type FieldIsArray "srcSet" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCopyDescriptorSet, srcSet}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcSet" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcSet})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, srcSet}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcSet" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, srcSet}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcBinding" VkCopyDescriptorSet where
-        type FieldType "srcBinding" VkCopyDescriptorSet = Word32
-        type FieldOptional "srcBinding" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcBinding" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, srcBinding}
-        type FieldIsArray "srcBinding" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCopyDescriptorSet, srcBinding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcBinding" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcBinding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, srcBinding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcBinding" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, srcBinding}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcArrayElement" VkCopyDescriptorSet where
-        type FieldType "srcArrayElement" VkCopyDescriptorSet = Word32
-        type FieldOptional "srcArrayElement" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcArrayElement" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, srcArrayElement}
-        type FieldIsArray "srcArrayElement" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCopyDescriptorSet, srcArrayElement}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcArrayElement" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, srcArrayElement})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, srcArrayElement}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcArrayElement" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, srcArrayElement}
-
-instance {-# OVERLAPPING #-} HasField "dstSet" VkCopyDescriptorSet
-         where
-        type FieldType "dstSet" VkCopyDescriptorSet = VkDescriptorSet
-        type FieldOptional "dstSet" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstSet" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, dstSet}
-        type FieldIsArray "dstSet" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCopyDescriptorSet, dstSet}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstSet" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstSet})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, dstSet}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstSet" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, dstSet}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstBinding" VkCopyDescriptorSet where
-        type FieldType "dstBinding" VkCopyDescriptorSet = Word32
-        type FieldOptional "dstBinding" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstBinding" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, dstBinding}
-        type FieldIsArray "dstBinding" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkCopyDescriptorSet, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstBinding" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstBinding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstBinding" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstArrayElement" VkCopyDescriptorSet where
-        type FieldType "dstArrayElement" VkCopyDescriptorSet = Word32
-        type FieldOptional "dstArrayElement" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstArrayElement" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, dstArrayElement}
-        type FieldIsArray "dstArrayElement" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCopyDescriptorSet, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstArrayElement" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, dstArrayElement})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstArrayElement" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorCount" VkCopyDescriptorSet where
-        type FieldType "descriptorCount" VkCopyDescriptorSet = Word32
-        type FieldOptional "descriptorCount" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorCount" VkCopyDescriptorSet =
-             #{offset VkCopyDescriptorSet, descriptorCount}
-        type FieldIsArray "descriptorCount" VkCopyDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkCopyDescriptorSet, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorCount" VkCopyDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkCopyDescriptorSet, descriptorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkCopyDescriptorSet, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorCount" VkCopyDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkCopyDescriptorSet, descriptorCount}
-
-instance Show VkCopyDescriptorSet where
-        showsPrec d x
-          = showString "VkCopyDescriptorSet {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "srcSet = " .
-                            showsPrec d (getField @"srcSet" x) .
-                              showString ", " .
-                                showString "srcBinding = " .
-                                  showsPrec d (getField @"srcBinding" x) .
-                                    showString ", " .
-                                      showString "srcArrayElement = " .
-                                        showsPrec d (getField @"srcArrayElement" x) .
-                                          showString ", " .
-                                            showString "dstSet = " .
-                                              showsPrec d (getField @"dstSet" x) .
-                                                showString ", " .
-                                                  showString "dstBinding = " .
-                                                    showsPrec d (getField @"dstBinding" x) .
-                                                      showString ", " .
-                                                        showString "dstArrayElement = " .
-                                                          showsPrec d
-                                                            (getField @"dstArrayElement" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "descriptorCount = " .
-                                                                showsPrec d
-                                                                  (getField @"descriptorCount" x)
-                                                                  . showChar '}'
+    type StructRep VkCopyDescriptorSet =
+         'StructMeta "VkCopyDescriptorSet" VkCopyDescriptorSet  -- ' closing tick for hsc2hs
+                                                               #{size VkCopyDescriptorSet}
+           #{alignment VkCopyDescriptorSet}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkCopyDescriptorSet, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkCopyDescriptorSet, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcSet" VkDescriptorSet 'False 
+                                                         #{offset VkCopyDescriptorSet, srcSet}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcBinding" Word32 'False 
+                                                    #{offset VkCopyDescriptorSet, srcBinding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcArrayElement" Word32 'False 
+                                                         #{offset VkCopyDescriptorSet, srcArrayElement}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstSet" VkDescriptorSet 'False 
+                                                         #{offset VkCopyDescriptorSet, dstSet}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstBinding" Word32 'False 
+                                                    #{offset VkCopyDescriptorSet, dstBinding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstArrayElement" Word32 'False 
+                                                         #{offset VkCopyDescriptorSet, dstArrayElement}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorCount" Word32 'False 
+                                                         #{offset VkCopyDescriptorSet, descriptorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Debug.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Debug.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Debug.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Debug.hsc
@@ -1,1319 +1,283 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.Debug
-       (VkDebugMarkerMarkerInfoEXT, VkDebugMarkerMarkerInfoEXT', -- ' closing tick for hsc2hs
-        VkDebugMarkerObjectNameInfoEXT, VkDebugMarkerObjectNameInfoEXT', -- ' closing tick for hsc2hs
-        VkDebugMarkerObjectTagInfoEXT, VkDebugMarkerObjectTagInfoEXT', -- ' closing tick for hsc2hs
-        VkDebugReportCallbackCreateInfoEXT,
-        VkDebugReportCallbackCreateInfoEXT', VkDebugUtilsObjectTagInfoEXT, -- ' closing tick for hsc2hs
-        VkDebugUtilsObjectTagInfoEXT') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.Enum.Debug                (VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT)
-import Graphics.Vulkan.Types.Enum.Object               (VkObjectType)
-import Graphics.Vulkan.Types.Enum.StructureType        (VkStructureType)
-import Graphics.Vulkan.Types.Funcpointers              (PFN_vkDebugReportCallbackEXT)
-import Graphics.Vulkan.Types.Struct.InstanceCreateInfo (VkInstanceCreateInfo)
-import System.IO.Unsafe                                (unsafeDupablePerformIO)
-
--- | > typedef struct VkDebugMarkerMarkerInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     const char* pMarkerName;
---   >     float            color[4];
---   > } VkDebugMarkerMarkerInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugMarkerMarkerInfoEXT VkDebugMarkerMarkerInfoEXT registry at www.khronos.org>
-type VkDebugMarkerMarkerInfoEXT =
-     VulkanStruct VkDebugMarkerMarkerInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDebugMarkerMarkerInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDebugMarkerMarkerInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugMarkerMarkerInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugMarkerMarkerInfoEXT where
-        sizeOf ~_ = #{size VkDebugMarkerMarkerInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDebugMarkerMarkerInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDebugMarkerMarkerInfoEXT where
-        type StructFields VkDebugMarkerMarkerInfoEXT =
-             '["sType", "pNext", "pMarkerName", "color"] -- ' closing tick for hsc2hs
-        type CUnionType VkDebugMarkerMarkerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugMarkerMarkerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugMarkerMarkerInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDebugMarkerMarkerInfoEXT where
-        type FieldType "sType" VkDebugMarkerMarkerInfoEXT = VkStructureType
-        type FieldOptional "sType" VkDebugMarkerMarkerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugMarkerMarkerInfoEXT =
-             #{offset VkDebugMarkerMarkerInfoEXT, sType}
-        type FieldIsArray "sType" VkDebugMarkerMarkerInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerMarkerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugMarkerMarkerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugMarkerMarkerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDebugMarkerMarkerInfoEXT where
-        type FieldType "pNext" VkDebugMarkerMarkerInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkDebugMarkerMarkerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugMarkerMarkerInfoEXT =
-             #{offset VkDebugMarkerMarkerInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDebugMarkerMarkerInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerMarkerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugMarkerMarkerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugMarkerMarkerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pMarkerName" VkDebugMarkerMarkerInfoEXT where
-        type FieldType "pMarkerName" VkDebugMarkerMarkerInfoEXT = CString
-        type FieldOptional "pMarkerName" VkDebugMarkerMarkerInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pMarkerName" VkDebugMarkerMarkerInfoEXT =
-             #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
-        type FieldIsArray "pMarkerName" VkDebugMarkerMarkerInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pMarkerName" VkDebugMarkerMarkerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pMarkerName" VkDebugMarkerMarkerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
-
-instance {-# OVERLAPPING #-}
-         HasField "color" VkDebugMarkerMarkerInfoEXT where
-        type FieldType "color" VkDebugMarkerMarkerInfoEXT =
-             #{type float}
-        type FieldOptional "color" VkDebugMarkerMarkerInfoEXT = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "color" VkDebugMarkerMarkerInfoEXT =
-             #{offset VkDebugMarkerMarkerInfoEXT, color}
-        type FieldIsArray "color" VkDebugMarkerMarkerInfoEXT = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerMarkerInfoEXT, color}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "color" VkDebugMarkerMarkerInfoEXT where
-        type FieldArrayLength "color" VkDebugMarkerMarkerInfoEXT = 4
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 4
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkDebugMarkerMarkerInfoEXT, color} +
-                      sizeOf (undefined :: #{type float}) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkDebugMarkerMarkerInfoEXT, color} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "color" VkDebugMarkerMarkerInfoEXT where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkDebugMarkerMarkerInfoEXT, color} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance Show VkDebugMarkerMarkerInfoEXT where
-        showsPrec d x
-          = showString "VkDebugMarkerMarkerInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pMarkerName = " .
-                            showsPrec d (getField @"pMarkerName" x) .
-                              showString ", " .
-                                (showString "color = [" .
-                                   showsPrec d
-                                     (let s = sizeOf
-                                                (undefined ::
-                                                   FieldType "color" VkDebugMarkerMarkerInfoEXT)
-                                          o = fieldOffset @"color" @VkDebugMarkerMarkerInfoEXT
-                                          f i
-                                            = peekByteOff (unsafePtr x) i ::
-                                                IO (FieldType "color" VkDebugMarkerMarkerInfoEXT)
-                                        in
-                                        unsafeDupablePerformIO . mapM f $
-                                          map (\ i -> o + i * s) [0 .. 4 - 1])
-                                     . showChar ']')
-                                  . showChar '}'
-
--- | > typedef struct VkDebugMarkerObjectNameInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDebugReportObjectTypeEXT       objectType;
---   >     uint64_t                         object;
---   >     const char* pObjectName;
---   > } VkDebugMarkerObjectNameInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugMarkerObjectNameInfoEXT VkDebugMarkerObjectNameInfoEXT registry at www.khronos.org>
-type VkDebugMarkerObjectNameInfoEXT =
-     VulkanStruct VkDebugMarkerObjectNameInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDebugMarkerObjectNameInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDebugMarkerObjectNameInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugMarkerObjectNameInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugMarkerObjectNameInfoEXT where
-        sizeOf ~_ = #{size VkDebugMarkerObjectNameInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDebugMarkerObjectNameInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDebugMarkerObjectNameInfoEXT where
-        type StructFields VkDebugMarkerObjectNameInfoEXT =
-             '["sType", "pNext", "objectType", "object", "pObjectName"] -- ' closing tick for hsc2hs
-        type CUnionType VkDebugMarkerObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugMarkerObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugMarkerObjectNameInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDebugMarkerObjectNameInfoEXT where
-        type FieldType "sType" VkDebugMarkerObjectNameInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkDebugMarkerObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugMarkerObjectNameInfoEXT =
-             #{offset VkDebugMarkerObjectNameInfoEXT, sType}
-        type FieldIsArray "sType" VkDebugMarkerObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectNameInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugMarkerObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDebugMarkerObjectNameInfoEXT where
-        type FieldType "pNext" VkDebugMarkerObjectNameInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkDebugMarkerObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugMarkerObjectNameInfoEXT =
-             #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDebugMarkerObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugMarkerObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectType" VkDebugMarkerObjectNameInfoEXT where
-        type FieldType "objectType" VkDebugMarkerObjectNameInfoEXT =
-             VkDebugReportObjectTypeEXT
-        type FieldOptional "objectType" VkDebugMarkerObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectType" VkDebugMarkerObjectNameInfoEXT =
-             #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
-        type FieldIsArray "objectType" VkDebugMarkerObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectType" VkDebugMarkerObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, objectType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectType" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         HasField "object" VkDebugMarkerObjectNameInfoEXT where
-        type FieldType "object" VkDebugMarkerObjectNameInfoEXT = Word64
-        type FieldOptional "object" VkDebugMarkerObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "object" VkDebugMarkerObjectNameInfoEXT =
-             #{offset VkDebugMarkerObjectNameInfoEXT, object}
-        type FieldIsArray "object" VkDebugMarkerObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectNameInfoEXT, object}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "object" VkDebugMarkerObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, object})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, object}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "object" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, object}
-
-instance {-# OVERLAPPING #-}
-         HasField "pObjectName" VkDebugMarkerObjectNameInfoEXT where
-        type FieldType "pObjectName" VkDebugMarkerObjectNameInfoEXT =
-             CString
-        type FieldOptional "pObjectName" VkDebugMarkerObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pObjectName" VkDebugMarkerObjectNameInfoEXT =
-             #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
-        type FieldIsArray "pObjectName" VkDebugMarkerObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pObjectName" VkDebugMarkerObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pObjectName" VkDebugMarkerObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
-
-instance Show VkDebugMarkerObjectNameInfoEXT where
-        showsPrec d x
-          = showString "VkDebugMarkerObjectNameInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "objectType = " .
-                            showsPrec d (getField @"objectType" x) .
-                              showString ", " .
-                                showString "object = " .
-                                  showsPrec d (getField @"object" x) .
-                                    showString ", " .
-                                      showString "pObjectName = " .
-                                        showsPrec d (getField @"pObjectName" x) . showChar '}'
-
--- | > typedef struct VkDebugMarkerObjectTagInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDebugReportObjectTypeEXT       objectType;
---   >     uint64_t                         object;
---   >     uint64_t                         tagName;
---   >     size_t                           tagSize;
---   >     const void*        pTag;
---   > } VkDebugMarkerObjectTagInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugMarkerObjectTagInfoEXT VkDebugMarkerObjectTagInfoEXT registry at www.khronos.org>
-type VkDebugMarkerObjectTagInfoEXT =
-     VulkanStruct VkDebugMarkerObjectTagInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDebugMarkerObjectTagInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDebugMarkerObjectTagInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugMarkerObjectTagInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugMarkerObjectTagInfoEXT where
-        sizeOf ~_ = #{size VkDebugMarkerObjectTagInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDebugMarkerObjectTagInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDebugMarkerObjectTagInfoEXT where
-        type StructFields VkDebugMarkerObjectTagInfoEXT =
-             '["sType", "pNext", "objectType", "object", "tagName", "tagSize", -- ' closing tick for hsc2hs
-               "pTag"]
-        type CUnionType VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugMarkerObjectTagInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDebugMarkerObjectTagInfoEXT where
-        type FieldType "sType" VkDebugMarkerObjectTagInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugMarkerObjectTagInfoEXT =
-             #{offset VkDebugMarkerObjectTagInfoEXT, sType}
-        type FieldIsArray "sType" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectTagInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugMarkerObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDebugMarkerObjectTagInfoEXT where
-        type FieldType "pNext" VkDebugMarkerObjectTagInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugMarkerObjectTagInfoEXT =
-             #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugMarkerObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectType" VkDebugMarkerObjectTagInfoEXT where
-        type FieldType "objectType" VkDebugMarkerObjectTagInfoEXT =
-             VkDebugReportObjectTypeEXT
-        type FieldOptional "objectType" VkDebugMarkerObjectTagInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectType" VkDebugMarkerObjectTagInfoEXT =
-             #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
-        type FieldIsArray "objectType" VkDebugMarkerObjectTagInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectType" VkDebugMarkerObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, objectType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectType" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         HasField "object" VkDebugMarkerObjectTagInfoEXT where
-        type FieldType "object" VkDebugMarkerObjectTagInfoEXT = Word64
-        type FieldOptional "object" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "object" VkDebugMarkerObjectTagInfoEXT =
-             #{offset VkDebugMarkerObjectTagInfoEXT, object}
-        type FieldIsArray "object" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectTagInfoEXT, object}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "object" VkDebugMarkerObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, object})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, object}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "object" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, object}
-
-instance {-# OVERLAPPING #-}
-         HasField "tagName" VkDebugMarkerObjectTagInfoEXT where
-        type FieldType "tagName" VkDebugMarkerObjectTagInfoEXT = Word64
-        type FieldOptional "tagName" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tagName" VkDebugMarkerObjectTagInfoEXT =
-             #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
-        type FieldIsArray "tagName" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tagName" VkDebugMarkerObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, tagName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tagName" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
-
-instance {-# OVERLAPPING #-}
-         HasField "tagSize" VkDebugMarkerObjectTagInfoEXT where
-        type FieldType "tagSize" VkDebugMarkerObjectTagInfoEXT = CSize
-        type FieldOptional "tagSize" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tagSize" VkDebugMarkerObjectTagInfoEXT =
-             #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
-        type FieldIsArray "tagSize" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tagSize" VkDebugMarkerObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, tagSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tagSize" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "pTag" VkDebugMarkerObjectTagInfoEXT where
-        type FieldType "pTag" VkDebugMarkerObjectTagInfoEXT = Ptr Void
-        type FieldOptional "pTag" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pTag" VkDebugMarkerObjectTagInfoEXT =
-             #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
-        type FieldIsArray "pTag" VkDebugMarkerObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pTag" VkDebugMarkerObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugMarkerObjectTagInfoEXT, pTag})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pTag" VkDebugMarkerObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
-
-instance Show VkDebugMarkerObjectTagInfoEXT where
-        showsPrec d x
-          = showString "VkDebugMarkerObjectTagInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "objectType = " .
-                            showsPrec d (getField @"objectType" x) .
-                              showString ", " .
-                                showString "object = " .
-                                  showsPrec d (getField @"object" x) .
-                                    showString ", " .
-                                      showString "tagName = " .
-                                        showsPrec d (getField @"tagName" x) .
-                                          showString ", " .
-                                            showString "tagSize = " .
-                                              showsPrec d (getField @"tagSize" x) .
-                                                showString ", " .
-                                                  showString "pTag = " .
-                                                    showsPrec d (getField @"pTag" x) . showChar '}'
-
--- | > typedef struct VkDebugReportCallbackCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDebugReportFlagsEXT            flags;
---   >     PFN_vkDebugReportCallbackEXT     pfnCallback;
---   >     void*            pUserData;
---   > } VkDebugReportCallbackCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugReportCallbackCreateInfoEXT VkDebugReportCallbackCreateInfoEXT registry at www.khronos.org>
-type VkDebugReportCallbackCreateInfoEXT =
-     VulkanStruct VkDebugReportCallbackCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDebugReportCallbackCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDebugReportCallbackCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugReportCallbackCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugReportCallbackCreateInfoEXT where
-        sizeOf ~_ = #{size VkDebugReportCallbackCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDebugReportCallbackCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDebugReportCallbackCreateInfoEXT where
-        type StructFields VkDebugReportCallbackCreateInfoEXT =
-             '["sType", "pNext", "flags", "pfnCallback", "pUserData"] -- ' closing tick for hsc2hs
-        type CUnionType VkDebugReportCallbackCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugReportCallbackCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugReportCallbackCreateInfoEXT =
-             '[VkInstanceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDebugReportCallbackCreateInfoEXT where
-        type FieldType "sType" VkDebugReportCallbackCreateInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkDebugReportCallbackCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugReportCallbackCreateInfoEXT =
-             #{offset VkDebugReportCallbackCreateInfoEXT, sType}
-        type FieldIsArray "sType" VkDebugReportCallbackCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugReportCallbackCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugReportCallbackCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugReportCallbackCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDebugReportCallbackCreateInfoEXT where
-        type FieldType "pNext" VkDebugReportCallbackCreateInfoEXT =
-             Ptr Void
-        type FieldOptional "pNext" VkDebugReportCallbackCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugReportCallbackCreateInfoEXT =
-             #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDebugReportCallbackCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugReportCallbackCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugReportCallbackCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDebugReportCallbackCreateInfoEXT where
-        type FieldType "flags" VkDebugReportCallbackCreateInfoEXT =
-             VkDebugReportFlagsEXT
-        type FieldOptional "flags" VkDebugReportCallbackCreateInfoEXT =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDebugReportCallbackCreateInfoEXT =
-             #{offset VkDebugReportCallbackCreateInfoEXT, flags}
-        type FieldIsArray "flags" VkDebugReportCallbackCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugReportCallbackCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDebugReportCallbackCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDebugReportCallbackCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pfnCallback" VkDebugReportCallbackCreateInfoEXT where
-        type FieldType "pfnCallback" VkDebugReportCallbackCreateInfoEXT =
-             PFN_vkDebugReportCallbackEXT
-        type FieldOptional "pfnCallback" VkDebugReportCallbackCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pfnCallback" VkDebugReportCallbackCreateInfoEXT =
-             #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
-        type FieldIsArray "pfnCallback" VkDebugReportCallbackCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pfnCallback" VkDebugReportCallbackCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pfnCallback" VkDebugReportCallbackCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
-
-instance {-# OVERLAPPING #-}
-         HasField "pUserData" VkDebugReportCallbackCreateInfoEXT where
-        type FieldType "pUserData" VkDebugReportCallbackCreateInfoEXT =
-             Ptr Void
-        type FieldOptional "pUserData" VkDebugReportCallbackCreateInfoEXT =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pUserData" VkDebugReportCallbackCreateInfoEXT =
-             #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
-        type FieldIsArray "pUserData" VkDebugReportCallbackCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pUserData" VkDebugReportCallbackCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugReportCallbackCreateInfoEXT, pUserData})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pUserData" VkDebugReportCallbackCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
-
-instance Show VkDebugReportCallbackCreateInfoEXT where
-        showsPrec d x
-          = showString "VkDebugReportCallbackCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "pfnCallback = " .
-                                  showsPrec d (getField @"pfnCallback" x) .
-                                    showString ", " .
-                                      showString "pUserData = " .
-                                        showsPrec d (getField @"pUserData" x) . showChar '}'
-
--- | > typedef struct VkDebugUtilsObjectTagInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                            pNext;
---   >     VkObjectType                           objectType;
---   >     uint64_t                               objectHandle;
---   >     uint64_t                               tagName;
---   >     size_t                                 tagSize;
---   >     const void*              pTag;
---   > } VkDebugUtilsObjectTagInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugUtilsObjectTagInfoEXT VkDebugUtilsObjectTagInfoEXT registry at www.khronos.org>
-type VkDebugUtilsObjectTagInfoEXT =
-     VulkanStruct VkDebugUtilsObjectTagInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDebugUtilsObjectTagInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDebugUtilsObjectTagInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugUtilsObjectTagInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugUtilsObjectTagInfoEXT where
-        sizeOf ~_ = #{size VkDebugUtilsObjectTagInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDebugUtilsObjectTagInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDebugUtilsObjectTagInfoEXT where
-        type StructFields VkDebugUtilsObjectTagInfoEXT =
-             '["sType", "pNext", "objectType", "objectHandle", "tagName", -- ' closing tick for hsc2hs
-               "tagSize", "pTag"]
-        type CUnionType VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugUtilsObjectTagInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDebugUtilsObjectTagInfoEXT where
-        type FieldType "sType" VkDebugUtilsObjectTagInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugUtilsObjectTagInfoEXT =
-             #{offset VkDebugUtilsObjectTagInfoEXT, sType}
-        type FieldIsArray "sType" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectTagInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugUtilsObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectTagInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugUtilsObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDebugUtilsObjectTagInfoEXT where
-        type FieldType "pNext" VkDebugUtilsObjectTagInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugUtilsObjectTagInfoEXT =
-             #{offset VkDebugUtilsObjectTagInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectTagInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugUtilsObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectTagInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugUtilsObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectType" VkDebugUtilsObjectTagInfoEXT where
-        type FieldType "objectType" VkDebugUtilsObjectTagInfoEXT =
-             VkObjectType
-        type FieldOptional "objectType" VkDebugUtilsObjectTagInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectType" VkDebugUtilsObjectTagInfoEXT =
-             #{offset VkDebugUtilsObjectTagInfoEXT, objectType}
-        type FieldIsArray "objectType" VkDebugUtilsObjectTagInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectTagInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectType" VkDebugUtilsObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectTagInfoEXT, objectType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectType" VkDebugUtilsObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectHandle" VkDebugUtilsObjectTagInfoEXT where
-        type FieldType "objectHandle" VkDebugUtilsObjectTagInfoEXT = Word64
-        type FieldOptional "objectHandle" VkDebugUtilsObjectTagInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectHandle" VkDebugUtilsObjectTagInfoEXT =
-             #{offset VkDebugUtilsObjectTagInfoEXT, objectHandle}
-        type FieldIsArray "objectHandle" VkDebugUtilsObjectTagInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectTagInfoEXT, objectHandle}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectHandle" VkDebugUtilsObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectTagInfoEXT, objectHandle})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, objectHandle}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectHandle" VkDebugUtilsObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, objectHandle}
-
-instance {-# OVERLAPPING #-}
-         HasField "tagName" VkDebugUtilsObjectTagInfoEXT where
-        type FieldType "tagName" VkDebugUtilsObjectTagInfoEXT = Word64
-        type FieldOptional "tagName" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tagName" VkDebugUtilsObjectTagInfoEXT =
-             #{offset VkDebugUtilsObjectTagInfoEXT, tagName}
-        type FieldIsArray "tagName" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectTagInfoEXT, tagName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tagName" VkDebugUtilsObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectTagInfoEXT, tagName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, tagName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tagName" VkDebugUtilsObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, tagName}
-
-instance {-# OVERLAPPING #-}
-         HasField "tagSize" VkDebugUtilsObjectTagInfoEXT where
-        type FieldType "tagSize" VkDebugUtilsObjectTagInfoEXT = CSize
-        type FieldOptional "tagSize" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tagSize" VkDebugUtilsObjectTagInfoEXT =
-             #{offset VkDebugUtilsObjectTagInfoEXT, tagSize}
-        type FieldIsArray "tagSize" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectTagInfoEXT, tagSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tagSize" VkDebugUtilsObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectTagInfoEXT, tagSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, tagSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tagSize" VkDebugUtilsObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, tagSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "pTag" VkDebugUtilsObjectTagInfoEXT where
-        type FieldType "pTag" VkDebugUtilsObjectTagInfoEXT = Ptr Void
-        type FieldOptional "pTag" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pTag" VkDebugUtilsObjectTagInfoEXT =
-             #{offset VkDebugUtilsObjectTagInfoEXT, pTag}
-        type FieldIsArray "pTag" VkDebugUtilsObjectTagInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectTagInfoEXT, pTag}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pTag" VkDebugUtilsObjectTagInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectTagInfoEXT, pTag})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, pTag}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pTag" VkDebugUtilsObjectTagInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectTagInfoEXT, pTag}
-
-instance Show VkDebugUtilsObjectTagInfoEXT where
-        showsPrec d x
-          = showString "VkDebugUtilsObjectTagInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "objectType = " .
-                            showsPrec d (getField @"objectType" x) .
-                              showString ", " .
-                                showString "objectHandle = " .
-                                  showsPrec d (getField @"objectHandle" x) .
-                                    showString ", " .
-                                      showString "tagName = " .
-                                        showsPrec d (getField @"tagName" x) .
-                                          showString ", " .
-                                            showString "tagSize = " .
-                                              showsPrec d (getField @"tagSize" x) .
-                                                showString ", " .
-                                                  showString "pTag = " .
-                                                    showsPrec d (getField @"pTag" x) . showChar '}'
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Debug
+       (VkDebugMarkerMarkerInfoEXT, VkDebugMarkerObjectNameInfoEXT,
+        VkDebugMarkerObjectTagInfoEXT, VkDebugReportCallbackCreateInfoEXT,
+        VkDebugUtilsObjectTagInfoEXT)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.Enum.Debug                (VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT)
+import Graphics.Vulkan.Types.Enum.Object               (VkObjectType)
+import Graphics.Vulkan.Types.Enum.StructureType        (VkStructureType)
+import Graphics.Vulkan.Types.Funcpointers              (PFN_vkDebugReportCallbackEXT)
+import Graphics.Vulkan.Types.Struct.InstanceCreateInfo (VkInstanceCreateInfo)
+
+-- | > typedef struct VkDebugMarkerMarkerInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     const char* pMarkerName;
+--   >     float            color[4];
+--   > } VkDebugMarkerMarkerInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugMarkerMarkerInfoEXT VkDebugMarkerMarkerInfoEXT registry at www.khronos.org>
+type VkDebugMarkerMarkerInfoEXT =
+     VkStruct VkDebugMarkerMarkerInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDebugMarkerMarkerInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDebugMarkerMarkerInfoEXT where
+    type StructRep VkDebugMarkerMarkerInfoEXT =
+         'StructMeta "VkDebugMarkerMarkerInfoEXT" VkDebugMarkerMarkerInfoEXT -- ' closing tick for hsc2hs
+           #{size VkDebugMarkerMarkerInfoEXT}
+           #{alignment VkDebugMarkerMarkerInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugMarkerMarkerInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDebugMarkerMarkerInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pMarkerName" CString 'False 
+                                                      #{offset VkDebugMarkerMarkerInfoEXT, pMarkerName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "color" ( -- ' closing tick for hsc2hs
+                                  #{type float}
+                                  ) 'True  -- ' closing tick for hsc2hs
+                                          #{offset VkDebugMarkerMarkerInfoEXT, color}
+                4
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDebugMarkerObjectNameInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDebugReportObjectTypeEXT       objectType;
+--   >     uint64_t                         object;
+--   >     const char* pObjectName;
+--   > } VkDebugMarkerObjectNameInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugMarkerObjectNameInfoEXT VkDebugMarkerObjectNameInfoEXT registry at www.khronos.org>
+type VkDebugMarkerObjectNameInfoEXT =
+     VkStruct VkDebugMarkerObjectNameInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDebugMarkerObjectNameInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDebugMarkerObjectNameInfoEXT where
+    type StructRep VkDebugMarkerObjectNameInfoEXT =
+         'StructMeta "VkDebugMarkerObjectNameInfoEXT" -- ' closing tick for hsc2hs
+           VkDebugMarkerObjectNameInfoEXT
+           #{size VkDebugMarkerObjectNameInfoEXT}
+           #{alignment VkDebugMarkerObjectNameInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugMarkerObjectNameInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDebugMarkerObjectNameInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectType" VkDebugReportObjectTypeEXT 'False
+                #{offset VkDebugMarkerObjectNameInfoEXT, objectType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "object" Word64 'False 
+                                                #{offset VkDebugMarkerObjectNameInfoEXT, object}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pObjectName" CString 'False 
+                                                      #{offset VkDebugMarkerObjectNameInfoEXT, pObjectName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDebugMarkerObjectTagInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDebugReportObjectTypeEXT       objectType;
+--   >     uint64_t                         object;
+--   >     uint64_t                         tagName;
+--   >     size_t                           tagSize;
+--   >     const void*        pTag;
+--   > } VkDebugMarkerObjectTagInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugMarkerObjectTagInfoEXT VkDebugMarkerObjectTagInfoEXT registry at www.khronos.org>
+type VkDebugMarkerObjectTagInfoEXT =
+     VkStruct VkDebugMarkerObjectTagInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDebugMarkerObjectTagInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDebugMarkerObjectTagInfoEXT where
+    type StructRep VkDebugMarkerObjectTagInfoEXT =
+         'StructMeta "VkDebugMarkerObjectTagInfoEXT" -- ' closing tick for hsc2hs
+           VkDebugMarkerObjectTagInfoEXT
+           #{size VkDebugMarkerObjectTagInfoEXT}
+           #{alignment VkDebugMarkerObjectTagInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugMarkerObjectTagInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDebugMarkerObjectTagInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectType" VkDebugReportObjectTypeEXT 'False
+                #{offset VkDebugMarkerObjectTagInfoEXT, objectType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "object" Word64 'False 
+                                                #{offset VkDebugMarkerObjectTagInfoEXT, object}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tagName" Word64 'False 
+                                                 #{offset VkDebugMarkerObjectTagInfoEXT, tagName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tagSize" CSize 'False 
+                                                #{offset VkDebugMarkerObjectTagInfoEXT, tagSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pTag" (Ptr Void) 'False 
+                                                  #{offset VkDebugMarkerObjectTagInfoEXT, pTag}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDebugReportCallbackCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDebugReportFlagsEXT            flags;
+--   >     PFN_vkDebugReportCallbackEXT     pfnCallback;
+--   >     void*            pUserData;
+--   > } VkDebugReportCallbackCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugReportCallbackCreateInfoEXT VkDebugReportCallbackCreateInfoEXT registry at www.khronos.org>
+type VkDebugReportCallbackCreateInfoEXT =
+     VkStruct VkDebugReportCallbackCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDebugReportCallbackCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDebugReportCallbackCreateInfoEXT where
+    type StructRep VkDebugReportCallbackCreateInfoEXT =
+         'StructMeta "VkDebugReportCallbackCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkDebugReportCallbackCreateInfoEXT
+           #{size VkDebugReportCallbackCreateInfoEXT}
+           #{alignment VkDebugReportCallbackCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugReportCallbackCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDebugReportCallbackCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDebugReportFlagsEXT 'True 
+                                                             #{offset VkDebugReportCallbackCreateInfoEXT, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pfnCallback" PFN_vkDebugReportCallbackEXT 'False
+                #{offset VkDebugReportCallbackCreateInfoEXT, pfnCallback}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pUserData" (Ptr Void) 'True 
+                                                      #{offset VkDebugReportCallbackCreateInfoEXT, pUserData}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkInstanceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDebugUtilsObjectTagInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                            pNext;
+--   >     VkObjectType                           objectType;
+--   >     uint64_t                               objectHandle;
+--   >     uint64_t                               tagName;
+--   >     size_t                                 tagSize;
+--   >     const void*              pTag;
+--   > } VkDebugUtilsObjectTagInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugUtilsObjectTagInfoEXT VkDebugUtilsObjectTagInfoEXT registry at www.khronos.org>
+type VkDebugUtilsObjectTagInfoEXT =
+     VkStruct VkDebugUtilsObjectTagInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDebugUtilsObjectTagInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDebugUtilsObjectTagInfoEXT where
+    type StructRep VkDebugUtilsObjectTagInfoEXT =
+         'StructMeta "VkDebugUtilsObjectTagInfoEXT" -- ' closing tick for hsc2hs
+           VkDebugUtilsObjectTagInfoEXT
+           #{size VkDebugUtilsObjectTagInfoEXT}
+           #{alignment VkDebugUtilsObjectTagInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugUtilsObjectTagInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDebugUtilsObjectTagInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectType" VkObjectType 'False 
+                                                          #{offset VkDebugUtilsObjectTagInfoEXT, objectType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectHandle" Word64 'False 
+                                                      #{offset VkDebugUtilsObjectTagInfoEXT, objectHandle}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tagName" Word64 'False 
+                                                 #{offset VkDebugUtilsObjectTagInfoEXT, tagName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tagSize" CSize 'False 
+                                                #{offset VkDebugUtilsObjectTagInfoEXT, tagSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pTag" (Ptr Void) 'False 
+                                                  #{offset VkDebugUtilsObjectTagInfoEXT, pTag}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsLabelEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsLabelEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsLabelEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsLabelEXT.hsc
@@ -1,23 +1,15 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.DebugUtilsLabelEXT
-       (VkDebugUtilsLabelEXT, VkDebugUtilsLabelEXT') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkDebugUtilsLabelEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDebugUtilsLabelEXT {
 --   >     VkStructureType sType;
@@ -27,202 +19,37 @@
 --   > } VkDebugUtilsLabelEXT;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugUtilsLabelEXT VkDebugUtilsLabelEXT registry at www.khronos.org>
-type VkDebugUtilsLabelEXT = VulkanStruct VkDebugUtilsLabelEXT' -- ' closing tick for hsc2hs
+type VkDebugUtilsLabelEXT = VkStruct VkDebugUtilsLabelEXT' -- ' closing tick for hsc2hs
 
 data VkDebugUtilsLabelEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkDebugUtilsLabelEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugUtilsLabelEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugUtilsLabelEXT where
-        sizeOf ~_ = #{size VkDebugUtilsLabelEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDebugUtilsLabelEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDebugUtilsLabelEXT where
-        type StructFields VkDebugUtilsLabelEXT =
-             '["sType", "pNext", "pLabelName", "color"] -- ' closing tick for hsc2hs
-        type CUnionType VkDebugUtilsLabelEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugUtilsLabelEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugUtilsLabelEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkDebugUtilsLabelEXT
-         where
-        type FieldType "sType" VkDebugUtilsLabelEXT = VkStructureType
-        type FieldOptional "sType" VkDebugUtilsLabelEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugUtilsLabelEXT =
-             #{offset VkDebugUtilsLabelEXT, sType}
-        type FieldIsArray "sType" VkDebugUtilsLabelEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDebugUtilsLabelEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugUtilsLabelEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsLabelEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsLabelEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugUtilsLabelEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsLabelEXT, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkDebugUtilsLabelEXT
-         where
-        type FieldType "pNext" VkDebugUtilsLabelEXT = Ptr Void
-        type FieldOptional "pNext" VkDebugUtilsLabelEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugUtilsLabelEXT =
-             #{offset VkDebugUtilsLabelEXT, pNext}
-        type FieldIsArray "pNext" VkDebugUtilsLabelEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDebugUtilsLabelEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugUtilsLabelEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsLabelEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsLabelEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugUtilsLabelEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsLabelEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pLabelName" VkDebugUtilsLabelEXT where
-        type FieldType "pLabelName" VkDebugUtilsLabelEXT = CString
-        type FieldOptional "pLabelName" VkDebugUtilsLabelEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pLabelName" VkDebugUtilsLabelEXT =
-             #{offset VkDebugUtilsLabelEXT, pLabelName}
-        type FieldIsArray "pLabelName" VkDebugUtilsLabelEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsLabelEXT, pLabelName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pLabelName" VkDebugUtilsLabelEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsLabelEXT, pLabelName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsLabelEXT, pLabelName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pLabelName" VkDebugUtilsLabelEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsLabelEXT, pLabelName}
-
-instance {-# OVERLAPPING #-} HasField "color" VkDebugUtilsLabelEXT
-         where
-        type FieldType "color" VkDebugUtilsLabelEXT =
-             #{type float}
-        type FieldOptional "color" VkDebugUtilsLabelEXT = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "color" VkDebugUtilsLabelEXT =
-             #{offset VkDebugUtilsLabelEXT, color}
-        type FieldIsArray "color" VkDebugUtilsLabelEXT = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDebugUtilsLabelEXT, color}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "color" VkDebugUtilsLabelEXT where
-        type FieldArrayLength "color" VkDebugUtilsLabelEXT = 4
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 4
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkDebugUtilsLabelEXT, color} +
-                      sizeOf (undefined :: #{type float}) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkDebugUtilsLabelEXT, color} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "color" VkDebugUtilsLabelEXT where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkDebugUtilsLabelEXT, color} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance Show VkDebugUtilsLabelEXT where
-        showsPrec d x
-          = showString "VkDebugUtilsLabelEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pLabelName = " .
-                            showsPrec d (getField @"pLabelName" x) .
-                              showString ", " .
-                                (showString "color = [" .
-                                   showsPrec d
-                                     (let s = sizeOf
-                                                (undefined ::
-                                                   FieldType "color" VkDebugUtilsLabelEXT)
-                                          o = fieldOffset @"color" @VkDebugUtilsLabelEXT
-                                          f i
-                                            = peekByteOff (unsafePtr x) i ::
-                                                IO (FieldType "color" VkDebugUtilsLabelEXT)
-                                        in
-                                        unsafeDupablePerformIO . mapM f $
-                                          map (\ i -> o + i * s) [0 .. 4 - 1])
-                                     . showChar ']')
-                                  . showChar '}'
+    type StructRep VkDebugUtilsLabelEXT =
+         'StructMeta "VkDebugUtilsLabelEXT" VkDebugUtilsLabelEXT  -- ' closing tick for hsc2hs
+                                                                 #{size VkDebugUtilsLabelEXT}
+           #{alignment VkDebugUtilsLabelEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugUtilsLabelEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDebugUtilsLabelEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pLabelName" CString 'False 
+                                                     #{offset VkDebugUtilsLabelEXT, pLabelName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "color" ( -- ' closing tick for hsc2hs
+                                  #{type float}
+                                  ) 'True  -- ' closing tick for hsc2hs
+                                          #{offset VkDebugUtilsLabelEXT, color}
+                4
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsMessengerCallbackDataEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsMessengerCallbackDataEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsMessengerCallbackDataEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsMessengerCallbackDataEXT.hsc
@@ -2,23 +2,17 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.DebugUtilsMessengerCallbackDataEXT
-       (VkDebugUtilsMessengerCallbackDataEXT,
-        VkDebugUtilsMessengerCallbackDataEXT') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                         (Storable (..))
+       (VkDebugUtilsMessengerCallbackDataEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks                           (VkDebugUtilsMessengerCallbackDataFlagsEXT)
 import Graphics.Vulkan.Types.Enum.StructureType                 (VkStructureType)
 import Graphics.Vulkan.Types.Struct.DebugUtilsLabelEXT          (VkDebugUtilsLabelEXT)
 import Graphics.Vulkan.Types.Struct.DebugUtilsObjectNameInfoEXT (VkDebugUtilsObjectNameInfoEXT)
-import System.IO.Unsafe                                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDebugUtilsMessengerCallbackDataEXT {
 --   >     VkStructureType sType;
@@ -37,570 +31,76 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugUtilsMessengerCallbackDataEXT VkDebugUtilsMessengerCallbackDataEXT registry at www.khronos.org>
 type VkDebugUtilsMessengerCallbackDataEXT =
-     VulkanStruct VkDebugUtilsMessengerCallbackDataEXT' -- ' closing tick for hsc2hs
+     VkStruct VkDebugUtilsMessengerCallbackDataEXT' -- ' closing tick for hsc2hs
 
 data VkDebugUtilsMessengerCallbackDataEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkDebugUtilsMessengerCallbackDataEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugUtilsMessengerCallbackDataEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugUtilsMessengerCallbackDataEXT where
-        sizeOf ~_
-          = #{size VkDebugUtilsMessengerCallbackDataEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDebugUtilsMessengerCallbackDataEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDebugUtilsMessengerCallbackDataEXT where
-        type StructFields VkDebugUtilsMessengerCallbackDataEXT =
-             '["sType", "pNext", "flags", "pMessageIdName", "messageIdNumber", -- ' closing tick for hsc2hs
-               "pMessage", "queueLabelCount", "pQueueLabels", "cmdBufLabelCount",
-               "pCmdBufLabels", "objectCount", "pObjects"]
-        type CUnionType VkDebugUtilsMessengerCallbackDataEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugUtilsMessengerCallbackDataEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugUtilsMessengerCallbackDataEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDebugUtilsMessengerCallbackDataEXT where
-        type FieldType "sType" VkDebugUtilsMessengerCallbackDataEXT =
-             VkStructureType
-        type FieldOptional "sType" VkDebugUtilsMessengerCallbackDataEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugUtilsMessengerCallbackDataEXT =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, sType}
-        type FieldIsArray "sType" VkDebugUtilsMessengerCallbackDataEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDebugUtilsMessengerCallbackDataEXT where
-        type FieldType "pNext" VkDebugUtilsMessengerCallbackDataEXT =
-             Ptr Void
-        type FieldOptional "pNext" VkDebugUtilsMessengerCallbackDataEXT =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugUtilsMessengerCallbackDataEXT =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, pNext}
-        type FieldIsArray "pNext" VkDebugUtilsMessengerCallbackDataEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDebugUtilsMessengerCallbackDataEXT where
-        type FieldType "flags" VkDebugUtilsMessengerCallbackDataEXT =
-             VkDebugUtilsMessengerCallbackDataFlagsEXT
-        type FieldOptional "flags" VkDebugUtilsMessengerCallbackDataEXT =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDebugUtilsMessengerCallbackDataEXT =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, flags}
-        type FieldIsArray "flags" VkDebugUtilsMessengerCallbackDataEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pMessageIdName" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        type FieldType "pMessageIdName"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = CString
-        type FieldOptional "pMessageIdName"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pMessageIdName"
-               VkDebugUtilsMessengerCallbackDataEXT
-             =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessageIdName}
-        type FieldIsArray "pMessageIdName"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessageIdName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pMessageIdName" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessageIdName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessageIdName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pMessageIdName" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessageIdName}
-
-instance {-# OVERLAPPING #-}
-         HasField "messageIdNumber" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        type FieldType "messageIdNumber"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = Int32
-        type FieldOptional "messageIdNumber"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "messageIdNumber"
-               VkDebugUtilsMessengerCallbackDataEXT
-             =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, messageIdNumber}
-        type FieldIsArray "messageIdNumber"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, messageIdNumber}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "messageIdNumber" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, messageIdNumber})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, messageIdNumber}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "messageIdNumber"
-           VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, messageIdNumber}
-
-instance {-# OVERLAPPING #-}
-         HasField "pMessage" VkDebugUtilsMessengerCallbackDataEXT where
-        type FieldType "pMessage" VkDebugUtilsMessengerCallbackDataEXT =
-             CString
-        type FieldOptional "pMessage" VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pMessage" VkDebugUtilsMessengerCallbackDataEXT =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessage}
-        type FieldIsArray "pMessage" VkDebugUtilsMessengerCallbackDataEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pMessage" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pMessage" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessage}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueLabelCount" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        type FieldType "queueLabelCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = Word32
-        type FieldOptional "queueLabelCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "queueLabelCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, queueLabelCount}
-        type FieldIsArray "queueLabelCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, queueLabelCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueLabelCount" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, queueLabelCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, queueLabelCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueLabelCount"
-           VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, queueLabelCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pQueueLabels" VkDebugUtilsMessengerCallbackDataEXT where
-        type FieldType "pQueueLabels" VkDebugUtilsMessengerCallbackDataEXT
-             = Ptr VkDebugUtilsLabelEXT
-        type FieldOptional "pQueueLabels"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pQueueLabels"
-               VkDebugUtilsMessengerCallbackDataEXT
-             =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, pQueueLabels}
-        type FieldIsArray "pQueueLabels"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, pQueueLabels}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pQueueLabels" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, pQueueLabels})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pQueueLabels}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pQueueLabels" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pQueueLabels}
-
-instance {-# OVERLAPPING #-}
-         HasField "cmdBufLabelCount" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        type FieldType "cmdBufLabelCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = Word32
-        type FieldOptional "cmdBufLabelCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "cmdBufLabelCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, cmdBufLabelCount}
-        type FieldIsArray "cmdBufLabelCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, cmdBufLabelCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "cmdBufLabelCount"
-           VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, cmdBufLabelCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, cmdBufLabelCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "cmdBufLabelCount"
+    type StructRep VkDebugUtilsMessengerCallbackDataEXT =
+         'StructMeta "VkDebugUtilsMessengerCallbackDataEXT" -- ' closing tick for hsc2hs
            VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, cmdBufLabelCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pCmdBufLabels" VkDebugUtilsMessengerCallbackDataEXT where
-        type FieldType "pCmdBufLabels" VkDebugUtilsMessengerCallbackDataEXT
-             = Ptr VkDebugUtilsLabelEXT
-        type FieldOptional "pCmdBufLabels"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pCmdBufLabels"
-               VkDebugUtilsMessengerCallbackDataEXT
-             =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, pCmdBufLabels}
-        type FieldIsArray "pCmdBufLabels"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, pCmdBufLabels}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pCmdBufLabels" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, pCmdBufLabels})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pCmdBufLabels}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pCmdBufLabels" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pCmdBufLabels}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectCount" VkDebugUtilsMessengerCallbackDataEXT where
-        type FieldType "objectCount" VkDebugUtilsMessengerCallbackDataEXT =
-             Word32
-        type FieldOptional "objectCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectCount" VkDebugUtilsMessengerCallbackDataEXT
-             =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, objectCount}
-        type FieldIsArray "objectCount"
-               VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, objectCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectCount" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, objectCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, objectCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectCount" VkDebugUtilsMessengerCallbackDataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, objectCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pObjects" VkDebugUtilsMessengerCallbackDataEXT where
-        type FieldType "pObjects" VkDebugUtilsMessengerCallbackDataEXT =
-             Ptr VkDebugUtilsObjectNameInfoEXT
-        type FieldOptional "pObjects" VkDebugUtilsMessengerCallbackDataEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pObjects" VkDebugUtilsMessengerCallbackDataEXT =
-             #{offset VkDebugUtilsMessengerCallbackDataEXT, pObjects}
-        type FieldIsArray "pObjects" VkDebugUtilsMessengerCallbackDataEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCallbackDataEXT, pObjects}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pObjects" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCallbackDataEXT, pObjects})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pObjects}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pObjects" VkDebugUtilsMessengerCallbackDataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCallbackDataEXT, pObjects}
-
-instance Show VkDebugUtilsMessengerCallbackDataEXT where
-        showsPrec d x
-          = showString "VkDebugUtilsMessengerCallbackDataEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "pMessageIdName = " .
-                                  showsPrec d (getField @"pMessageIdName" x) .
-                                    showString ", " .
-                                      showString "messageIdNumber = " .
-                                        showsPrec d (getField @"messageIdNumber" x) .
-                                          showString ", " .
-                                            showString "pMessage = " .
-                                              showsPrec d (getField @"pMessage" x) .
-                                                showString ", " .
-                                                  showString "queueLabelCount = " .
-                                                    showsPrec d (getField @"queueLabelCount" x) .
-                                                      showString ", " .
-                                                        showString "pQueueLabels = " .
-                                                          showsPrec d (getField @"pQueueLabels" x) .
-                                                            showString ", " .
-                                                              showString "cmdBufLabelCount = " .
-                                                                showsPrec d
-                                                                  (getField @"cmdBufLabelCount" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "pCmdBufLabels = " .
-                                                                      showsPrec d
-                                                                        (getField @"pCmdBufLabels"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "objectCount = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"objectCount"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "pObjects = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"pObjects"
-                                                                                       x)
-                                                                                    . showChar '}'
+           #{size VkDebugUtilsMessengerCallbackDataEXT}
+           #{alignment VkDebugUtilsMessengerCallbackDataEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugUtilsMessengerCallbackDataEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'True 
+                                                  #{offset VkDebugUtilsMessengerCallbackDataEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDebugUtilsMessengerCallbackDataFlagsEXT 'True
+                #{offset VkDebugUtilsMessengerCallbackDataEXT, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pMessageIdName" CString 'True 
+                                                        #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessageIdName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "messageIdNumber" Int32 'True 
+                                                       #{offset VkDebugUtilsMessengerCallbackDataEXT, messageIdNumber}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pMessage" CString 'False 
+                                                   #{offset VkDebugUtilsMessengerCallbackDataEXT, pMessage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueLabelCount" Word32 'True 
+                                                        #{offset VkDebugUtilsMessengerCallbackDataEXT, queueLabelCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pQueueLabels" (Ptr VkDebugUtilsLabelEXT) 'True
+                #{offset VkDebugUtilsMessengerCallbackDataEXT, pQueueLabels}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "cmdBufLabelCount" Word32 'True 
+                                                         #{offset VkDebugUtilsMessengerCallbackDataEXT, cmdBufLabelCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pCmdBufLabels" (Ptr VkDebugUtilsLabelEXT) 'True
+                #{offset VkDebugUtilsMessengerCallbackDataEXT, pCmdBufLabels}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectCount" Word32 'False 
+                                                     #{offset VkDebugUtilsMessengerCallbackDataEXT, objectCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pObjects" (Ptr VkDebugUtilsObjectNameInfoEXT) 'False
+                #{offset VkDebugUtilsMessengerCallbackDataEXT, pObjects}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsMessengerCreateInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsMessengerCreateInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsMessengerCreateInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsMessengerCreateInfoEXT.hsc
@@ -2,16 +2,11 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.DebugUtilsMessengerCreateInfoEXT
-       (VkDebugUtilsMessengerCreateInfoEXT,
-        VkDebugUtilsMessengerCreateInfoEXT') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                (Storable (..))
+       (VkDebugUtilsMessengerCreateInfoEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks                  (VkDebugUtilsMessengerCreateFlagsEXT)
@@ -20,7 +15,6 @@
 import Graphics.Vulkan.Types.Enum.StructureType        (VkStructureType)
 import Graphics.Vulkan.Types.Funcpointers              (PFN_vkDebugUtilsMessengerCallbackEXT)
 import Graphics.Vulkan.Types.Struct.InstanceCreateInfo (VkInstanceCreateInfo)
-import System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDebugUtilsMessengerCreateInfoEXT {
 --   >     VkStructureType sType;
@@ -34,323 +28,53 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugUtilsMessengerCreateInfoEXT VkDebugUtilsMessengerCreateInfoEXT registry at www.khronos.org>
 type VkDebugUtilsMessengerCreateInfoEXT =
-     VulkanStruct VkDebugUtilsMessengerCreateInfoEXT' -- ' closing tick for hsc2hs
+     VkStruct VkDebugUtilsMessengerCreateInfoEXT' -- ' closing tick for hsc2hs
 
 data VkDebugUtilsMessengerCreateInfoEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkDebugUtilsMessengerCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugUtilsMessengerCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugUtilsMessengerCreateInfoEXT where
-        sizeOf ~_ = #{size VkDebugUtilsMessengerCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDebugUtilsMessengerCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDebugUtilsMessengerCreateInfoEXT where
-        type StructFields VkDebugUtilsMessengerCreateInfoEXT =
-             '["sType", "pNext", "flags", "messageSeverity", "messageType", -- ' closing tick for hsc2hs
-               "pfnUserCallback", "pUserData"]
-        type CUnionType VkDebugUtilsMessengerCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugUtilsMessengerCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugUtilsMessengerCreateInfoEXT =
-             '[VkInstanceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDebugUtilsMessengerCreateInfoEXT where
-        type FieldType "sType" VkDebugUtilsMessengerCreateInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkDebugUtilsMessengerCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugUtilsMessengerCreateInfoEXT =
-             #{offset VkDebugUtilsMessengerCreateInfoEXT, sType}
-        type FieldIsArray "sType" VkDebugUtilsMessengerCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDebugUtilsMessengerCreateInfoEXT where
-        type FieldType "pNext" VkDebugUtilsMessengerCreateInfoEXT =
-             Ptr Void
-        type FieldOptional "pNext" VkDebugUtilsMessengerCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugUtilsMessengerCreateInfoEXT =
-             #{offset VkDebugUtilsMessengerCreateInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDebugUtilsMessengerCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDebugUtilsMessengerCreateInfoEXT where
-        type FieldType "flags" VkDebugUtilsMessengerCreateInfoEXT =
-             VkDebugUtilsMessengerCreateFlagsEXT
-        type FieldOptional "flags" VkDebugUtilsMessengerCreateInfoEXT =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDebugUtilsMessengerCreateInfoEXT =
-             #{offset VkDebugUtilsMessengerCreateInfoEXT, flags}
-        type FieldIsArray "flags" VkDebugUtilsMessengerCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCreateInfoEXT, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "messageSeverity" VkDebugUtilsMessengerCreateInfoEXT where
-        type FieldType "messageSeverity" VkDebugUtilsMessengerCreateInfoEXT
-             = VkDebugUtilsMessageSeverityFlagsEXT
-        type FieldOptional "messageSeverity"
-               VkDebugUtilsMessengerCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "messageSeverity"
-               VkDebugUtilsMessengerCreateInfoEXT
-             =
-             #{offset VkDebugUtilsMessengerCreateInfoEXT, messageSeverity}
-        type FieldIsArray "messageSeverity"
-               VkDebugUtilsMessengerCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCreateInfoEXT, messageSeverity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "messageSeverity" VkDebugUtilsMessengerCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCreateInfoEXT, messageSeverity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, messageSeverity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "messageSeverity" VkDebugUtilsMessengerCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, messageSeverity}
-
-instance {-# OVERLAPPING #-}
-         HasField "messageType" VkDebugUtilsMessengerCreateInfoEXT where
-        type FieldType "messageType" VkDebugUtilsMessengerCreateInfoEXT =
-             VkDebugUtilsMessageTypeFlagsEXT
-        type FieldOptional "messageType" VkDebugUtilsMessengerCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "messageType" VkDebugUtilsMessengerCreateInfoEXT =
-             #{offset VkDebugUtilsMessengerCreateInfoEXT, messageType}
-        type FieldIsArray "messageType" VkDebugUtilsMessengerCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCreateInfoEXT, messageType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "messageType" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCreateInfoEXT, messageType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, messageType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "messageType" VkDebugUtilsMessengerCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, messageType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pfnUserCallback" VkDebugUtilsMessengerCreateInfoEXT where
-        type FieldType "pfnUserCallback" VkDebugUtilsMessengerCreateInfoEXT
-             = PFN_vkDebugUtilsMessengerCallbackEXT
-        type FieldOptional "pfnUserCallback"
-               VkDebugUtilsMessengerCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pfnUserCallback"
-               VkDebugUtilsMessengerCreateInfoEXT
-             =
-             #{offset VkDebugUtilsMessengerCreateInfoEXT, pfnUserCallback}
-        type FieldIsArray "pfnUserCallback"
-               VkDebugUtilsMessengerCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCreateInfoEXT, pfnUserCallback}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pfnUserCallback" VkDebugUtilsMessengerCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCreateInfoEXT, pfnUserCallback})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, pfnUserCallback}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pfnUserCallback" VkDebugUtilsMessengerCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, pfnUserCallback}
-
-instance {-# OVERLAPPING #-}
-         HasField "pUserData" VkDebugUtilsMessengerCreateInfoEXT where
-        type FieldType "pUserData" VkDebugUtilsMessengerCreateInfoEXT =
-             Ptr Void
-        type FieldOptional "pUserData" VkDebugUtilsMessengerCreateInfoEXT =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pUserData" VkDebugUtilsMessengerCreateInfoEXT =
-             #{offset VkDebugUtilsMessengerCreateInfoEXT, pUserData}
-        type FieldIsArray "pUserData" VkDebugUtilsMessengerCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsMessengerCreateInfoEXT, pUserData}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pUserData" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsMessengerCreateInfoEXT, pUserData})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, pUserData}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pUserData" VkDebugUtilsMessengerCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsMessengerCreateInfoEXT, pUserData}
-
-instance Show VkDebugUtilsMessengerCreateInfoEXT where
-        showsPrec d x
-          = showString "VkDebugUtilsMessengerCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "messageSeverity = " .
-                                  showsPrec d (getField @"messageSeverity" x) .
-                                    showString ", " .
-                                      showString "messageType = " .
-                                        showsPrec d (getField @"messageType" x) .
-                                          showString ", " .
-                                            showString "pfnUserCallback = " .
-                                              showsPrec d (getField @"pfnUserCallback" x) .
-                                                showString ", " .
-                                                  showString "pUserData = " .
-                                                    showsPrec d (getField @"pUserData" x) .
-                                                      showChar '}'
+    type StructRep VkDebugUtilsMessengerCreateInfoEXT =
+         'StructMeta "VkDebugUtilsMessengerCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkDebugUtilsMessengerCreateInfoEXT
+           #{size VkDebugUtilsMessengerCreateInfoEXT}
+           #{alignment VkDebugUtilsMessengerCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugUtilsMessengerCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDebugUtilsMessengerCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDebugUtilsMessengerCreateFlagsEXT 'True
+                #{offset VkDebugUtilsMessengerCreateInfoEXT, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "messageSeverity" VkDebugUtilsMessageSeverityFlagsEXT -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkDebugUtilsMessengerCreateInfoEXT, messageSeverity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "messageType" VkDebugUtilsMessageTypeFlagsEXT 'False
+                #{offset VkDebugUtilsMessengerCreateInfoEXT, messageType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pfnUserCallback" PFN_vkDebugUtilsMessengerCallbackEXT -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkDebugUtilsMessengerCreateInfoEXT, pfnUserCallback}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pUserData" (Ptr Void) 'True 
+                                                      #{offset VkDebugUtilsMessengerCreateInfoEXT, pUserData}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkInstanceCreateInfo] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsObjectNameInfoEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsObjectNameInfoEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsObjectNameInfoEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/DebugUtilsObjectNameInfoEXT.hsc
@@ -2,20 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.DebugUtilsObjectNameInfoEXT
-       (VkDebugUtilsObjectNameInfoEXT, VkDebugUtilsObjectNameInfoEXT') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
+       (VkDebugUtilsObjectNameInfoEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Object        (VkObjectType)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDebugUtilsObjectNameInfoEXT {
 --   >     VkStructureType sType;
@@ -27,226 +22,41 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDebugUtilsObjectNameInfoEXT VkDebugUtilsObjectNameInfoEXT registry at www.khronos.org>
 type VkDebugUtilsObjectNameInfoEXT =
-     VulkanStruct VkDebugUtilsObjectNameInfoEXT' -- ' closing tick for hsc2hs
+     VkStruct VkDebugUtilsObjectNameInfoEXT' -- ' closing tick for hsc2hs
 
 data VkDebugUtilsObjectNameInfoEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkDebugUtilsObjectNameInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDebugUtilsObjectNameInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDebugUtilsObjectNameInfoEXT where
-        sizeOf ~_ = #{size VkDebugUtilsObjectNameInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDebugUtilsObjectNameInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDebugUtilsObjectNameInfoEXT where
-        type StructFields VkDebugUtilsObjectNameInfoEXT =
-             '["sType", "pNext", "objectType", "objectHandle", "pObjectName"] -- ' closing tick for hsc2hs
-        type CUnionType VkDebugUtilsObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDebugUtilsObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDebugUtilsObjectNameInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDebugUtilsObjectNameInfoEXT where
-        type FieldType "sType" VkDebugUtilsObjectNameInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkDebugUtilsObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDebugUtilsObjectNameInfoEXT =
-             #{offset VkDebugUtilsObjectNameInfoEXT, sType}
-        type FieldIsArray "sType" VkDebugUtilsObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectNameInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDebugUtilsObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectNameInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDebugUtilsObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDebugUtilsObjectNameInfoEXT where
-        type FieldType "pNext" VkDebugUtilsObjectNameInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkDebugUtilsObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDebugUtilsObjectNameInfoEXT =
-             #{offset VkDebugUtilsObjectNameInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDebugUtilsObjectNameInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectNameInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDebugUtilsObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectNameInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDebugUtilsObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectType" VkDebugUtilsObjectNameInfoEXT where
-        type FieldType "objectType" VkDebugUtilsObjectNameInfoEXT =
-             VkObjectType
-        type FieldOptional "objectType" VkDebugUtilsObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectType" VkDebugUtilsObjectNameInfoEXT =
-             #{offset VkDebugUtilsObjectNameInfoEXT, objectType}
-        type FieldIsArray "objectType" VkDebugUtilsObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectNameInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectType" VkDebugUtilsObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectNameInfoEXT, objectType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectType" VkDebugUtilsObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, objectType}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectHandle" VkDebugUtilsObjectNameInfoEXT where
-        type FieldType "objectHandle" VkDebugUtilsObjectNameInfoEXT =
-             Word64
-        type FieldOptional "objectHandle" VkDebugUtilsObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectHandle" VkDebugUtilsObjectNameInfoEXT =
-             #{offset VkDebugUtilsObjectNameInfoEXT, objectHandle}
-        type FieldIsArray "objectHandle" VkDebugUtilsObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectNameInfoEXT, objectHandle}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectHandle" VkDebugUtilsObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectNameInfoEXT, objectHandle})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, objectHandle}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectHandle" VkDebugUtilsObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, objectHandle}
-
-instance {-# OVERLAPPING #-}
-         HasField "pObjectName" VkDebugUtilsObjectNameInfoEXT where
-        type FieldType "pObjectName" VkDebugUtilsObjectNameInfoEXT =
-             CString
-        type FieldOptional "pObjectName" VkDebugUtilsObjectNameInfoEXT =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pObjectName" VkDebugUtilsObjectNameInfoEXT =
-             #{offset VkDebugUtilsObjectNameInfoEXT, pObjectName}
-        type FieldIsArray "pObjectName" VkDebugUtilsObjectNameInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDebugUtilsObjectNameInfoEXT, pObjectName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pObjectName" VkDebugUtilsObjectNameInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDebugUtilsObjectNameInfoEXT, pObjectName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, pObjectName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pObjectName" VkDebugUtilsObjectNameInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDebugUtilsObjectNameInfoEXT, pObjectName}
-
-instance Show VkDebugUtilsObjectNameInfoEXT where
-        showsPrec d x
-          = showString "VkDebugUtilsObjectNameInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "objectType = " .
-                            showsPrec d (getField @"objectType" x) .
-                              showString ", " .
-                                showString "objectHandle = " .
-                                  showsPrec d (getField @"objectHandle" x) .
-                                    showString ", " .
-                                      showString "pObjectName = " .
-                                        showsPrec d (getField @"pObjectName" x) . showChar '}'
+    type StructRep VkDebugUtilsObjectNameInfoEXT =
+         'StructMeta "VkDebugUtilsObjectNameInfoEXT" -- ' closing tick for hsc2hs
+           VkDebugUtilsObjectNameInfoEXT
+           #{size VkDebugUtilsObjectNameInfoEXT}
+           #{alignment VkDebugUtilsObjectNameInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDebugUtilsObjectNameInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDebugUtilsObjectNameInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectType" VkObjectType 'False 
+                                                          #{offset VkDebugUtilsObjectNameInfoEXT, objectType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectHandle" Word64 'False 
+                                                      #{offset VkDebugUtilsObjectNameInfoEXT, objectHandle}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pObjectName" CString 'True 
+                                                     #{offset VkDebugUtilsObjectNameInfoEXT, pObjectName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/DedicatedAllocation.hsc b/src-gen/Graphics/Vulkan/Types/Struct/DedicatedAllocation.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/DedicatedAllocation.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/DedicatedAllocation.hsc
@@ -2,20 +2,14 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.DedicatedAllocation
        (VkDedicatedAllocationBufferCreateInfoNV,
-        VkDedicatedAllocationBufferCreateInfoNV', -- ' closing tick for hsc2hs
         VkDedicatedAllocationImageCreateInfoNV,
-        VkDedicatedAllocationImageCreateInfoNV', -- ' closing tick for hsc2hs
-        VkDedicatedAllocationMemoryAllocateInfoNV,
-        VkDedicatedAllocationMemoryAllocateInfoNV') -- ' closing tick for hsc2hs
+        VkDedicatedAllocationMemoryAllocateInfoNV)
        where
-import Foreign.Storable                         (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.BaseTypes          (VkBool32)
@@ -24,7 +18,6 @@
 import Graphics.Vulkan.Types.Struct.Buffer      (VkBufferCreateInfo)
 import Graphics.Vulkan.Types.Struct.Image       (VkImageCreateInfo)
 import Graphics.Vulkan.Types.Struct.Memory      (VkMemoryAllocateInfo)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDedicatedAllocationBufferCreateInfoNV {
 --   >     VkStructureType sType;
@@ -34,172 +27,35 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDedicatedAllocationBufferCreateInfoNV VkDedicatedAllocationBufferCreateInfoNV registry at www.khronos.org>
 type VkDedicatedAllocationBufferCreateInfoNV =
-     VulkanStruct VkDedicatedAllocationBufferCreateInfoNV' -- ' closing tick for hsc2hs
+     VkStruct VkDedicatedAllocationBufferCreateInfoNV' -- ' closing tick for hsc2hs
 
 data VkDedicatedAllocationBufferCreateInfoNV' -- ' closing tick for hsc2hs
 
-instance Eq VkDedicatedAllocationBufferCreateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDedicatedAllocationBufferCreateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDedicatedAllocationBufferCreateInfoNV where
-        sizeOf ~_
-          = #{size VkDedicatedAllocationBufferCreateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDedicatedAllocationBufferCreateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDedicatedAllocationBufferCreateInfoNV
          where
-        type StructFields VkDedicatedAllocationBufferCreateInfoNV =
-             '["sType", "pNext", "dedicatedAllocation"] -- ' closing tick for hsc2hs
-        type CUnionType VkDedicatedAllocationBufferCreateInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDedicatedAllocationBufferCreateInfoNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDedicatedAllocationBufferCreateInfoNV =
-             '[VkBufferCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDedicatedAllocationBufferCreateInfoNV where
-        type FieldType "sType" VkDedicatedAllocationBufferCreateInfoNV =
-             VkStructureType
-        type FieldOptional "sType" VkDedicatedAllocationBufferCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDedicatedAllocationBufferCreateInfoNV =
-             #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
-        type FieldIsArray "sType" VkDedicatedAllocationBufferCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDedicatedAllocationBufferCreateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDedicatedAllocationBufferCreateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDedicatedAllocationBufferCreateInfoNV where
-        type FieldType "pNext" VkDedicatedAllocationBufferCreateInfoNV =
-             Ptr Void
-        type FieldOptional "pNext" VkDedicatedAllocationBufferCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDedicatedAllocationBufferCreateInfoNV =
-             #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
-        type FieldIsArray "pNext" VkDedicatedAllocationBufferCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDedicatedAllocationBufferCreateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDedicatedAllocationBufferCreateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "dedicatedAllocation"
-           VkDedicatedAllocationBufferCreateInfoNV
-         where
-        type FieldType "dedicatedAllocation"
-               VkDedicatedAllocationBufferCreateInfoNV
-             = VkBool32
-        type FieldOptional "dedicatedAllocation"
-               VkDedicatedAllocationBufferCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dedicatedAllocation"
-               VkDedicatedAllocationBufferCreateInfoNV
-             =
-             #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
-        type FieldIsArray "dedicatedAllocation"
-               VkDedicatedAllocationBufferCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dedicatedAllocation"
-           VkDedicatedAllocationBufferCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dedicatedAllocation"
+    type StructRep VkDedicatedAllocationBufferCreateInfoNV =
+         'StructMeta "VkDedicatedAllocationBufferCreateInfoNV" -- ' closing tick for hsc2hs
            VkDedicatedAllocationBufferCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
-
-instance Show VkDedicatedAllocationBufferCreateInfoNV where
-        showsPrec d x
-          = showString "VkDedicatedAllocationBufferCreateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "dedicatedAllocation = " .
-                            showsPrec d (getField @"dedicatedAllocation" x) . showChar '}'
+           #{size VkDedicatedAllocationBufferCreateInfoNV}
+           #{alignment VkDedicatedAllocationBufferCreateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDedicatedAllocationBufferCreateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDedicatedAllocationBufferCreateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dedicatedAllocation" VkBool32 'False 
+                                                               #{offset VkDedicatedAllocationBufferCreateInfoNV, dedicatedAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkBufferCreateInfo] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkDedicatedAllocationImageCreateInfoNV {
 --   >     VkStructureType sType;
@@ -209,171 +65,34 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDedicatedAllocationImageCreateInfoNV VkDedicatedAllocationImageCreateInfoNV registry at www.khronos.org>
 type VkDedicatedAllocationImageCreateInfoNV =
-     VulkanStruct VkDedicatedAllocationImageCreateInfoNV' -- ' closing tick for hsc2hs
+     VkStruct VkDedicatedAllocationImageCreateInfoNV' -- ' closing tick for hsc2hs
 
 data VkDedicatedAllocationImageCreateInfoNV' -- ' closing tick for hsc2hs
 
-instance Eq VkDedicatedAllocationImageCreateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDedicatedAllocationImageCreateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDedicatedAllocationImageCreateInfoNV where
-        sizeOf ~_
-          = #{size VkDedicatedAllocationImageCreateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDedicatedAllocationImageCreateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDedicatedAllocationImageCreateInfoNV where
-        type StructFields VkDedicatedAllocationImageCreateInfoNV =
-             '["sType", "pNext", "dedicatedAllocation"] -- ' closing tick for hsc2hs
-        type CUnionType VkDedicatedAllocationImageCreateInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDedicatedAllocationImageCreateInfoNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDedicatedAllocationImageCreateInfoNV =
-             '[VkImageCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDedicatedAllocationImageCreateInfoNV where
-        type FieldType "sType" VkDedicatedAllocationImageCreateInfoNV =
-             VkStructureType
-        type FieldOptional "sType" VkDedicatedAllocationImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDedicatedAllocationImageCreateInfoNV =
-             #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
-        type FieldIsArray "sType" VkDedicatedAllocationImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDedicatedAllocationImageCreateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDedicatedAllocationImageCreateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDedicatedAllocationImageCreateInfoNV where
-        type FieldType "pNext" VkDedicatedAllocationImageCreateInfoNV =
-             Ptr Void
-        type FieldOptional "pNext" VkDedicatedAllocationImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDedicatedAllocationImageCreateInfoNV =
-             #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
-        type FieldIsArray "pNext" VkDedicatedAllocationImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDedicatedAllocationImageCreateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDedicatedAllocationImageCreateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "dedicatedAllocation"
-           VkDedicatedAllocationImageCreateInfoNV
-         where
-        type FieldType "dedicatedAllocation"
-               VkDedicatedAllocationImageCreateInfoNV
-             = VkBool32
-        type FieldOptional "dedicatedAllocation"
-               VkDedicatedAllocationImageCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dedicatedAllocation"
-               VkDedicatedAllocationImageCreateInfoNV
-             =
-             #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
-        type FieldIsArray "dedicatedAllocation"
-               VkDedicatedAllocationImageCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dedicatedAllocation"
-           VkDedicatedAllocationImageCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dedicatedAllocation"
+    type StructRep VkDedicatedAllocationImageCreateInfoNV =
+         'StructMeta "VkDedicatedAllocationImageCreateInfoNV" -- ' closing tick for hsc2hs
            VkDedicatedAllocationImageCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
-
-instance Show VkDedicatedAllocationImageCreateInfoNV where
-        showsPrec d x
-          = showString "VkDedicatedAllocationImageCreateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "dedicatedAllocation = " .
-                            showsPrec d (getField @"dedicatedAllocation" x) . showChar '}'
+           #{size VkDedicatedAllocationImageCreateInfoNV}
+           #{alignment VkDedicatedAllocationImageCreateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDedicatedAllocationImageCreateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDedicatedAllocationImageCreateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dedicatedAllocation" VkBool32 'False 
+                                                               #{offset VkDedicatedAllocationImageCreateInfoNV, dedicatedAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageCreateInfo] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
 --   >     VkStructureType sType;
@@ -384,214 +103,37 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDedicatedAllocationMemoryAllocateInfoNV VkDedicatedAllocationMemoryAllocateInfoNV registry at www.khronos.org>
 type VkDedicatedAllocationMemoryAllocateInfoNV =
-     VulkanStruct VkDedicatedAllocationMemoryAllocateInfoNV' -- ' closing tick for hsc2hs
+     VkStruct VkDedicatedAllocationMemoryAllocateInfoNV' -- ' closing tick for hsc2hs
 
 data VkDedicatedAllocationMemoryAllocateInfoNV' -- ' closing tick for hsc2hs
 
-instance Eq VkDedicatedAllocationMemoryAllocateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDedicatedAllocationMemoryAllocateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDedicatedAllocationMemoryAllocateInfoNV where
-        sizeOf ~_
-          = #{size VkDedicatedAllocationMemoryAllocateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDedicatedAllocationMemoryAllocateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDedicatedAllocationMemoryAllocateInfoNV
          where
-        type StructFields VkDedicatedAllocationMemoryAllocateInfoNV =
-             '["sType", "pNext", "image", "buffer"] -- ' closing tick for hsc2hs
-        type CUnionType VkDedicatedAllocationMemoryAllocateInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDedicatedAllocationMemoryAllocateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkDedicatedAllocationMemoryAllocateInfoNV =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDedicatedAllocationMemoryAllocateInfoNV where
-        type FieldType "sType" VkDedicatedAllocationMemoryAllocateInfoNV =
-             VkStructureType
-        type FieldOptional "sType"
-               VkDedicatedAllocationMemoryAllocateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDedicatedAllocationMemoryAllocateInfoNV
-             =
-             #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
-        type FieldIsArray "sType" VkDedicatedAllocationMemoryAllocateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDedicatedAllocationMemoryAllocateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDedicatedAllocationMemoryAllocateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDedicatedAllocationMemoryAllocateInfoNV where
-        type FieldType "pNext" VkDedicatedAllocationMemoryAllocateInfoNV =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkDedicatedAllocationMemoryAllocateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDedicatedAllocationMemoryAllocateInfoNV
-             =
-             #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
-        type FieldIsArray "pNext" VkDedicatedAllocationMemoryAllocateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDedicatedAllocationMemoryAllocateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDedicatedAllocationMemoryAllocateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkDedicatedAllocationMemoryAllocateInfoNV where
-        type FieldType "image" VkDedicatedAllocationMemoryAllocateInfoNV =
-             VkImage
-        type FieldOptional "image"
-               VkDedicatedAllocationMemoryAllocateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkDedicatedAllocationMemoryAllocateInfoNV
-             =
-             #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
-        type FieldIsArray "image" VkDedicatedAllocationMemoryAllocateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkDedicatedAllocationMemoryAllocateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkDedicatedAllocationMemoryAllocateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkDedicatedAllocationMemoryAllocateInfoNV where
-        type FieldType "buffer" VkDedicatedAllocationMemoryAllocateInfoNV =
-             VkBuffer
-        type FieldOptional "buffer"
-               VkDedicatedAllocationMemoryAllocateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkDedicatedAllocationMemoryAllocateInfoNV
-             =
-             #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
-        type FieldIsArray "buffer"
-               VkDedicatedAllocationMemoryAllocateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkDedicatedAllocationMemoryAllocateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkDedicatedAllocationMemoryAllocateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
-
-instance Show VkDedicatedAllocationMemoryAllocateInfoNV where
-        showsPrec d x
-          = showString "VkDedicatedAllocationMemoryAllocateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "image = " .
-                            showsPrec d (getField @"image" x) .
-                              showString ", " .
-                                showString "buffer = " .
-                                  showsPrec d (getField @"buffer" x) . showChar '}'
+    type StructRep VkDedicatedAllocationMemoryAllocateInfoNV =
+         'StructMeta "VkDedicatedAllocationMemoryAllocateInfoNV" -- ' closing tick for hsc2hs
+           VkDedicatedAllocationMemoryAllocateInfoNV
+           #{size VkDedicatedAllocationMemoryAllocateInfoNV}
+           #{alignment VkDedicatedAllocationMemoryAllocateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDedicatedAllocationMemoryAllocateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDedicatedAllocationMemoryAllocateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "image" VkImage 'True 
+                                               #{offset VkDedicatedAllocationMemoryAllocateInfoNV, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'True 
+                                                 #{offset VkDedicatedAllocationMemoryAllocateInfoNV, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Descriptor.hsc
@@ -2,3100 +2,655 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Descriptor
-       (VkDescriptorBufferInfo, VkDescriptorBufferInfo', -- ' closing tick for hsc2hs
-        VkDescriptorImageInfo, VkDescriptorImageInfo', -- ' closing tick for hsc2hs
-        VkDescriptorPoolCreateInfo, VkDescriptorPoolCreateInfo', -- ' closing tick for hsc2hs
-        VkDescriptorPoolSize, VkDescriptorPoolSize', -- ' closing tick for hsc2hs
-        VkDescriptorSetAllocateInfo, VkDescriptorSetAllocateInfo', -- ' closing tick for hsc2hs
-        VkDescriptorSetLayoutBinding, VkDescriptorSetLayoutBinding', -- ' closing tick for hsc2hs
-        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
-        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutCreateInfo', -- ' closing tick for hsc2hs
-        VkDescriptorSetLayoutSupport, VkDescriptorSetLayoutSupport', -- ' closing tick for hsc2hs
-        VkDescriptorSetLayoutSupportKHR,
-        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
-        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT', -- ' closing tick for hsc2hs
-        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
-        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT', -- ' closing tick for hsc2hs
-        VkDescriptorUpdateTemplateCreateInfo,
-        VkDescriptorUpdateTemplateCreateInfo', -- ' closing tick for hsc2hs
-        VkDescriptorUpdateTemplateCreateInfoKHR,
-        VkDescriptorUpdateTemplateEntry, VkDescriptorUpdateTemplateEntry', -- ' closing tick for hsc2hs
-        VkDescriptorUpdateTemplateEntryKHR)
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes          (VkBool32, VkDeviceSize)
-import Graphics.Vulkan.Types.Bitmasks           (VkDescriptorUpdateTemplateCreateFlags)
-import Graphics.Vulkan.Types.Enum.Descriptor    (VkDescriptorBindingFlagsEXT,
-                                                 VkDescriptorPoolCreateFlags,
-                                                 VkDescriptorSetLayoutCreateFlags,
-                                                 VkDescriptorType,
-                                                 VkDescriptorUpdateTemplateType)
-import Graphics.Vulkan.Types.Enum.Image         (VkImageLayout)
-import Graphics.Vulkan.Types.Enum.Pipeline      (VkPipelineBindPoint)
-import Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDescriptorPool,
-                                                 VkDescriptorSetLayout,
-                                                 VkImageView, VkPipelineLayout,
-                                                 VkSampler)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkDescriptorBufferInfo {
---   >     VkBuffer               buffer;
---   >     VkDeviceSize           offset;
---   >     VkDeviceSize           range;
---   > } VkDescriptorBufferInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorBufferInfo VkDescriptorBufferInfo registry at www.khronos.org>
-type VkDescriptorBufferInfo = VulkanStruct VkDescriptorBufferInfo' -- ' closing tick for hsc2hs
-
-data VkDescriptorBufferInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorBufferInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorBufferInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorBufferInfo where
-        sizeOf ~_ = #{size VkDescriptorBufferInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDescriptorBufferInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorBufferInfo where
-        type StructFields VkDescriptorBufferInfo =
-             '["buffer", "offset", "range"] -- ' closing tick for hsc2hs
-        type CUnionType VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorBufferInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkDescriptorBufferInfo where
-        type FieldType "buffer" VkDescriptorBufferInfo = VkBuffer
-        type FieldOptional "buffer" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkDescriptorBufferInfo =
-             #{offset VkDescriptorBufferInfo, buffer}
-        type FieldIsArray "buffer" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDescriptorBufferInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkDescriptorBufferInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorBufferInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkDescriptorBufferInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorBufferInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkDescriptorBufferInfo where
-        type FieldType "offset" VkDescriptorBufferInfo = VkDeviceSize
-        type FieldOptional "offset" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkDescriptorBufferInfo =
-             #{offset VkDescriptorBufferInfo, offset}
-        type FieldIsArray "offset" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDescriptorBufferInfo, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkDescriptorBufferInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorBufferInfo, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkDescriptorBufferInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorBufferInfo, offset}
-
-instance {-# OVERLAPPING #-}
-         HasField "range" VkDescriptorBufferInfo where
-        type FieldType "range" VkDescriptorBufferInfo = VkDeviceSize
-        type FieldOptional "range" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "range" VkDescriptorBufferInfo =
-             #{offset VkDescriptorBufferInfo, range}
-        type FieldIsArray "range" VkDescriptorBufferInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDescriptorBufferInfo, range}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "range" VkDescriptorBufferInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorBufferInfo, range})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorBufferInfo, range}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "range" VkDescriptorBufferInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorBufferInfo, range}
-
-instance Show VkDescriptorBufferInfo where
-        showsPrec d x
-          = showString "VkDescriptorBufferInfo {" .
-              showString "buffer = " .
-                showsPrec d (getField @"buffer" x) .
-                  showString ", " .
-                    showString "offset = " .
-                      showsPrec d (getField @"offset" x) .
-                        showString ", " .
-                          showString "range = " .
-                            showsPrec d (getField @"range" x) . showChar '}'
-
--- | > typedef struct VkDescriptorImageInfo {
---   >     VkSampler       sampler;
---   >     VkImageView     imageView;
---   >     VkImageLayout   imageLayout;
---   > } VkDescriptorImageInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorImageInfo VkDescriptorImageInfo registry at www.khronos.org>
-type VkDescriptorImageInfo = VulkanStruct VkDescriptorImageInfo' -- ' closing tick for hsc2hs
-
-data VkDescriptorImageInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorImageInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorImageInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorImageInfo where
-        sizeOf ~_ = #{size VkDescriptorImageInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDescriptorImageInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorImageInfo where
-        type StructFields VkDescriptorImageInfo =
-             '["sampler", "imageView", "imageLayout"] -- ' closing tick for hsc2hs
-        type CUnionType VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorImageInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sampler" VkDescriptorImageInfo where
-        type FieldType "sampler" VkDescriptorImageInfo = VkSampler
-        type FieldOptional "sampler" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampler" VkDescriptorImageInfo =
-             #{offset VkDescriptorImageInfo, sampler}
-        type FieldIsArray "sampler" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDescriptorImageInfo, sampler}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampler" VkDescriptorImageInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, sampler})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorImageInfo, sampler}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampler" VkDescriptorImageInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorImageInfo, sampler}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageView" VkDescriptorImageInfo where
-        type FieldType "imageView" VkDescriptorImageInfo = VkImageView
-        type FieldOptional "imageView" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageView" VkDescriptorImageInfo =
-             #{offset VkDescriptorImageInfo, imageView}
-        type FieldIsArray "imageView" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorImageInfo, imageView}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageView" VkDescriptorImageInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, imageView})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorImageInfo, imageView}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageView" VkDescriptorImageInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorImageInfo, imageView}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageLayout" VkDescriptorImageInfo where
-        type FieldType "imageLayout" VkDescriptorImageInfo = VkImageLayout
-        type FieldOptional "imageLayout" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageLayout" VkDescriptorImageInfo =
-             #{offset VkDescriptorImageInfo, imageLayout}
-        type FieldIsArray "imageLayout" VkDescriptorImageInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorImageInfo, imageLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageLayout" VkDescriptorImageInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorImageInfo, imageLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorImageInfo, imageLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageLayout" VkDescriptorImageInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorImageInfo, imageLayout}
-
-instance Show VkDescriptorImageInfo where
-        showsPrec d x
-          = showString "VkDescriptorImageInfo {" .
-              showString "sampler = " .
-                showsPrec d (getField @"sampler" x) .
-                  showString ", " .
-                    showString "imageView = " .
-                      showsPrec d (getField @"imageView" x) .
-                        showString ", " .
-                          showString "imageLayout = " .
-                            showsPrec d (getField @"imageLayout" x) . showChar '}'
-
--- | > typedef struct VkDescriptorPoolCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkDescriptorPoolCreateFlags  flags;
---   >     uint32_t               maxSets;
---   >     uint32_t               poolSizeCount;
---   >     const VkDescriptorPoolSize* pPoolSizes;
---   > } VkDescriptorPoolCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorPoolCreateInfo VkDescriptorPoolCreateInfo registry at www.khronos.org>
-type VkDescriptorPoolCreateInfo =
-     VulkanStruct VkDescriptorPoolCreateInfo' -- ' closing tick for hsc2hs
-
-data VkDescriptorPoolCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorPoolCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorPoolCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorPoolCreateInfo where
-        sizeOf ~_ = #{size VkDescriptorPoolCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDescriptorPoolCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorPoolCreateInfo where
-        type StructFields VkDescriptorPoolCreateInfo =
-             '["sType", "pNext", "flags", "maxSets", "poolSizeCount", -- ' closing tick for hsc2hs
-               "pPoolSizes"]
-        type CUnionType VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorPoolCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDescriptorPoolCreateInfo where
-        type FieldType "sType" VkDescriptorPoolCreateInfo = VkStructureType
-        type FieldOptional "sType" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDescriptorPoolCreateInfo =
-             #{offset VkDescriptorPoolCreateInfo, sType}
-        type FieldIsArray "sType" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDescriptorPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDescriptorPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDescriptorPoolCreateInfo where
-        type FieldType "pNext" VkDescriptorPoolCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDescriptorPoolCreateInfo =
-             #{offset VkDescriptorPoolCreateInfo, pNext}
-        type FieldIsArray "pNext" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDescriptorPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDescriptorPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDescriptorPoolCreateInfo where
-        type FieldType "flags" VkDescriptorPoolCreateInfo =
-             VkDescriptorPoolCreateFlags
-        type FieldOptional "flags" VkDescriptorPoolCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDescriptorPoolCreateInfo =
-             #{offset VkDescriptorPoolCreateInfo, flags}
-        type FieldIsArray "flags" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDescriptorPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDescriptorPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSets" VkDescriptorPoolCreateInfo where
-        type FieldType "maxSets" VkDescriptorPoolCreateInfo = Word32
-        type FieldOptional "maxSets" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSets" VkDescriptorPoolCreateInfo =
-             #{offset VkDescriptorPoolCreateInfo, maxSets}
-        type FieldIsArray "maxSets" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorPoolCreateInfo, maxSets}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSets" VkDescriptorPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, maxSets})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, maxSets}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSets" VkDescriptorPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, maxSets}
-
-instance {-# OVERLAPPING #-}
-         HasField "poolSizeCount" VkDescriptorPoolCreateInfo where
-        type FieldType "poolSizeCount" VkDescriptorPoolCreateInfo = Word32
-        type FieldOptional "poolSizeCount" VkDescriptorPoolCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "poolSizeCount" VkDescriptorPoolCreateInfo =
-             #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
-        type FieldIsArray "poolSizeCount" VkDescriptorPoolCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "poolSizeCount" VkDescriptorPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, poolSizeCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "poolSizeCount" VkDescriptorPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pPoolSizes" VkDescriptorPoolCreateInfo where
-        type FieldType "pPoolSizes" VkDescriptorPoolCreateInfo =
-             Ptr VkDescriptorPoolSize
-        type FieldOptional "pPoolSizes" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pPoolSizes" VkDescriptorPoolCreateInfo =
-             #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
-        type FieldIsArray "pPoolSizes" VkDescriptorPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pPoolSizes" VkDescriptorPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolCreateInfo, pPoolSizes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pPoolSizes" VkDescriptorPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
-
-instance Show VkDescriptorPoolCreateInfo where
-        showsPrec d x
-          = showString "VkDescriptorPoolCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "maxSets = " .
-                                  showsPrec d (getField @"maxSets" x) .
-                                    showString ", " .
-                                      showString "poolSizeCount = " .
-                                        showsPrec d (getField @"poolSizeCount" x) .
-                                          showString ", " .
-                                            showString "pPoolSizes = " .
-                                              showsPrec d (getField @"pPoolSizes" x) . showChar '}'
-
--- | > typedef struct VkDescriptorPoolSize {
---   >     VkDescriptorType       type;
---   >     uint32_t               descriptorCount;
---   > } VkDescriptorPoolSize;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorPoolSize VkDescriptorPoolSize registry at www.khronos.org>
-type VkDescriptorPoolSize = VulkanStruct VkDescriptorPoolSize' -- ' closing tick for hsc2hs
-
-data VkDescriptorPoolSize' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorPoolSize where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorPoolSize where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorPoolSize where
-        sizeOf ~_ = #{size VkDescriptorPoolSize}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDescriptorPoolSize}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorPoolSize where
-        type StructFields VkDescriptorPoolSize =
-             '["type", "descriptorCount"] -- ' closing tick for hsc2hs
-        type CUnionType VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorPoolSize = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "type" VkDescriptorPoolSize
-         where
-        type FieldType "type" VkDescriptorPoolSize = VkDescriptorType
-        type FieldOptional "type" VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkDescriptorPoolSize =
-             #{offset VkDescriptorPoolSize, type}
-        type FieldIsArray "type" VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDescriptorPoolSize, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkDescriptorPoolSize where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolSize, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorPoolSize, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkDescriptorPoolSize where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorPoolSize, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorCount" VkDescriptorPoolSize where
-        type FieldType "descriptorCount" VkDescriptorPoolSize = Word32
-        type FieldOptional "descriptorCount" VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorCount" VkDescriptorPoolSize =
-             #{offset VkDescriptorPoolSize, descriptorCount}
-        type FieldIsArray "descriptorCount" VkDescriptorPoolSize = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorPoolSize, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorCount" VkDescriptorPoolSize where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorPoolSize, descriptorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorPoolSize, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorCount" VkDescriptorPoolSize where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorPoolSize, descriptorCount}
-
-instance Show VkDescriptorPoolSize where
-        showsPrec d x
-          = showString "VkDescriptorPoolSize {" .
-              showString "type = " .
-                showsPrec d (getField @"type" x) .
-                  showString ", " .
-                    showString "descriptorCount = " .
-                      showsPrec d (getField @"descriptorCount" x) . showChar '}'
-
--- | > typedef struct VkDescriptorSetAllocateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkDescriptorPool       descriptorPool;
---   >     uint32_t               descriptorSetCount;
---   >     const VkDescriptorSetLayout* pSetLayouts;
---   > } VkDescriptorSetAllocateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetAllocateInfo VkDescriptorSetAllocateInfo registry at www.khronos.org>
-type VkDescriptorSetAllocateInfo =
-     VulkanStruct VkDescriptorSetAllocateInfo' -- ' closing tick for hsc2hs
-
-data VkDescriptorSetAllocateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorSetAllocateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorSetAllocateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorSetAllocateInfo where
-        sizeOf ~_ = #{size VkDescriptorSetAllocateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDescriptorSetAllocateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorSetAllocateInfo where
-        type StructFields VkDescriptorSetAllocateInfo =
-             '["sType", "pNext", "descriptorPool", "descriptorSetCount", -- ' closing tick for hsc2hs
-               "pSetLayouts"]
-        type CUnionType VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorSetAllocateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDescriptorSetAllocateInfo where
-        type FieldType "sType" VkDescriptorSetAllocateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDescriptorSetAllocateInfo =
-             #{offset VkDescriptorSetAllocateInfo, sType}
-        type FieldIsArray "sType" VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDescriptorSetAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDescriptorSetAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDescriptorSetAllocateInfo where
-        type FieldType "pNext" VkDescriptorSetAllocateInfo = Ptr Void
-        type FieldOptional "pNext" VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDescriptorSetAllocateInfo =
-             #{offset VkDescriptorSetAllocateInfo, pNext}
-        type FieldIsArray "pNext" VkDescriptorSetAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDescriptorSetAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDescriptorSetAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorPool" VkDescriptorSetAllocateInfo where
-        type FieldType "descriptorPool" VkDescriptorSetAllocateInfo =
-             VkDescriptorPool
-        type FieldOptional "descriptorPool" VkDescriptorSetAllocateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorPool" VkDescriptorSetAllocateInfo =
-             #{offset VkDescriptorSetAllocateInfo, descriptorPool}
-        type FieldIsArray "descriptorPool" VkDescriptorSetAllocateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetAllocateInfo, descriptorPool}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorPool" VkDescriptorSetAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, descriptorPool})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorPool}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorPool" VkDescriptorSetAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorPool}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorSetCount" VkDescriptorSetAllocateInfo where
-        type FieldType "descriptorSetCount" VkDescriptorSetAllocateInfo =
-             Word32
-        type FieldOptional "descriptorSetCount" VkDescriptorSetAllocateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorSetCount" VkDescriptorSetAllocateInfo =
-             #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
-        type FieldIsArray "descriptorSetCount" VkDescriptorSetAllocateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorSetCount" VkDescriptorSetAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, descriptorSetCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorSetCount" VkDescriptorSetAllocateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSetLayouts" VkDescriptorSetAllocateInfo where
-        type FieldType "pSetLayouts" VkDescriptorSetAllocateInfo =
-             Ptr VkDescriptorSetLayout
-        type FieldOptional "pSetLayouts" VkDescriptorSetAllocateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSetLayouts" VkDescriptorSetAllocateInfo =
-             #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
-        type FieldIsArray "pSetLayouts" VkDescriptorSetAllocateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSetLayouts" VkDescriptorSetAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetAllocateInfo, pSetLayouts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSetLayouts" VkDescriptorSetAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
-
-instance Show VkDescriptorSetAllocateInfo where
-        showsPrec d x
-          = showString "VkDescriptorSetAllocateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "descriptorPool = " .
-                            showsPrec d (getField @"descriptorPool" x) .
-                              showString ", " .
-                                showString "descriptorSetCount = " .
-                                  showsPrec d (getField @"descriptorSetCount" x) .
-                                    showString ", " .
-                                      showString "pSetLayouts = " .
-                                        showsPrec d (getField @"pSetLayouts" x) . showChar '}'
-
--- | > typedef struct VkDescriptorSetLayoutBinding {
---   >     uint32_t               binding;
---   >     VkDescriptorType       descriptorType;
---   >     uint32_t descriptorCount;
---   >     VkShaderStageFlags     stageFlags;
---   >     const VkSampler*       pImmutableSamplers;
---   > } VkDescriptorSetLayoutBinding;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutBinding VkDescriptorSetLayoutBinding registry at www.khronos.org>
-type VkDescriptorSetLayoutBinding =
-     VulkanStruct VkDescriptorSetLayoutBinding' -- ' closing tick for hsc2hs
-
-data VkDescriptorSetLayoutBinding' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorSetLayoutBinding where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorSetLayoutBinding where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorSetLayoutBinding where
-        sizeOf ~_ = #{size VkDescriptorSetLayoutBinding}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorSetLayoutBinding}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorSetLayoutBinding where
-        type StructFields VkDescriptorSetLayoutBinding =
-             '["binding", "descriptorType", "descriptorCount", "stageFlags", -- ' closing tick for hsc2hs
-               "pImmutableSamplers"]
-        type CUnionType VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorSetLayoutBinding = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "binding" VkDescriptorSetLayoutBinding where
-        type FieldType "binding" VkDescriptorSetLayoutBinding = Word32
-        type FieldOptional "binding" VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "binding" VkDescriptorSetLayoutBinding =
-             #{offset VkDescriptorSetLayoutBinding, binding}
-        type FieldIsArray "binding" VkDescriptorSetLayoutBinding = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBinding, binding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "binding" VkDescriptorSetLayoutBinding where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, binding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, binding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "binding" VkDescriptorSetLayoutBinding where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, binding}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorType" VkDescriptorSetLayoutBinding where
-        type FieldType "descriptorType" VkDescriptorSetLayoutBinding =
-             VkDescriptorType
-        type FieldOptional "descriptorType" VkDescriptorSetLayoutBinding =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorType" VkDescriptorSetLayoutBinding =
-             #{offset VkDescriptorSetLayoutBinding, descriptorType}
-        type FieldIsArray "descriptorType" VkDescriptorSetLayoutBinding =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBinding, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorType" VkDescriptorSetLayoutBinding where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, descriptorType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorType" VkDescriptorSetLayoutBinding where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorCount" VkDescriptorSetLayoutBinding where
-        type FieldType "descriptorCount" VkDescriptorSetLayoutBinding =
-             Word32
-        type FieldOptional "descriptorCount" VkDescriptorSetLayoutBinding =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorCount" VkDescriptorSetLayoutBinding =
-             #{offset VkDescriptorSetLayoutBinding, descriptorCount}
-        type FieldIsArray "descriptorCount" VkDescriptorSetLayoutBinding =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBinding, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorCount" VkDescriptorSetLayoutBinding where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, descriptorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorCount" VkDescriptorSetLayoutBinding where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "stageFlags" VkDescriptorSetLayoutBinding where
-        type FieldType "stageFlags" VkDescriptorSetLayoutBinding =
-             VkShaderStageFlags
-        type FieldOptional "stageFlags" VkDescriptorSetLayoutBinding =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "stageFlags" VkDescriptorSetLayoutBinding =
-             #{offset VkDescriptorSetLayoutBinding, stageFlags}
-        type FieldIsArray "stageFlags" VkDescriptorSetLayoutBinding =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBinding, stageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stageFlags" VkDescriptorSetLayoutBinding where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, stageFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, stageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stageFlags" VkDescriptorSetLayoutBinding where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, stageFlags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pImmutableSamplers" VkDescriptorSetLayoutBinding where
-        type FieldType "pImmutableSamplers" VkDescriptorSetLayoutBinding =
-             Ptr VkSampler
-        type FieldOptional "pImmutableSamplers"
-               VkDescriptorSetLayoutBinding
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pImmutableSamplers" VkDescriptorSetLayoutBinding
-             =
-             #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
-        type FieldIsArray "pImmutableSamplers" VkDescriptorSetLayoutBinding
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pImmutableSamplers" VkDescriptorSetLayoutBinding
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pImmutableSamplers" VkDescriptorSetLayoutBinding
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
-
-instance Show VkDescriptorSetLayoutBinding where
-        showsPrec d x
-          = showString "VkDescriptorSetLayoutBinding {" .
-              showString "binding = " .
-                showsPrec d (getField @"binding" x) .
-                  showString ", " .
-                    showString "descriptorType = " .
-                      showsPrec d (getField @"descriptorType" x) .
-                        showString ", " .
-                          showString "descriptorCount = " .
-                            showsPrec d (getField @"descriptorCount" x) .
-                              showString ", " .
-                                showString "stageFlags = " .
-                                  showsPrec d (getField @"stageFlags" x) .
-                                    showString ", " .
-                                      showString "pImmutableSamplers = " .
-                                        showsPrec d (getField @"pImmutableSamplers" x) .
-                                          showChar '}'
-
--- | > typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     uint32_t               bindingCount;
---   >     const VkDescriptorBindingFlagsEXT* pBindingFlags;
---   > } VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutBindingFlagsCreateInfoEXT VkDescriptorSetLayoutBindingFlagsCreateInfoEXT registry at www.khronos.org>
-type VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
-     VulkanStruct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDescriptorSetLayoutBindingFlagsCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorSetLayoutBindingFlagsCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorSetLayoutBindingFlagsCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        sizeOf ~_
-          = #{size VkDescriptorSetLayoutBindingFlagsCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorSetLayoutBindingFlagsCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        type StructFields VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
-             '["sType", "pNext", "bindingCount", "pBindingFlags"] -- ' closing tick for hsc2hs
-        type CUnionType VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
-             '[VkDescriptorSetLayoutCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        type FieldType "sType"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             =
-             #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, sType}
-        type FieldIsArray "sType"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        type FieldType "pNext"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             =
-             #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pNext}
-        type FieldIsArray "pNext"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "bindingCount"
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        type FieldType "bindingCount"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = Word32
-        type FieldOptional "bindingCount"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "bindingCount"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             =
-             #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, bindingCount}
-        type FieldIsArray "bindingCount"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, bindingCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bindingCount"
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, bindingCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, bindingCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bindingCount"
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, bindingCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pBindingFlags"
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        type FieldType "pBindingFlags"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = Ptr VkDescriptorBindingFlagsEXT
-        type FieldOptional "pBindingFlags"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pBindingFlags"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             =
-             #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pBindingFlags}
-        type FieldIsArray "pBindingFlags"
-               VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pBindingFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pBindingFlags"
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pBindingFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pBindingFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pBindingFlags"
-           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pBindingFlags}
-
-instance Show VkDescriptorSetLayoutBindingFlagsCreateInfoEXT where
-        showsPrec d x
-          = showString "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "bindingCount = " .
-                            showsPrec d (getField @"bindingCount" x) .
-                              showString ", " .
-                                showString "pBindingFlags = " .
-                                  showsPrec d (getField @"pBindingFlags" x) . showChar '}'
-
--- | > typedef struct VkDescriptorSetLayoutCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkDescriptorSetLayoutCreateFlags    flags;
---   >     uint32_t               bindingCount;
---   >     const VkDescriptorSetLayoutBinding* pBindings;
---   > } VkDescriptorSetLayoutCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutCreateInfo VkDescriptorSetLayoutCreateInfo registry at www.khronos.org>
-type VkDescriptorSetLayoutCreateInfo =
-     VulkanStruct VkDescriptorSetLayoutCreateInfo' -- ' closing tick for hsc2hs
-
-data VkDescriptorSetLayoutCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorSetLayoutCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorSetLayoutCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorSetLayoutCreateInfo where
-        sizeOf ~_ = #{size VkDescriptorSetLayoutCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorSetLayoutCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorSetLayoutCreateInfo where
-        type StructFields VkDescriptorSetLayoutCreateInfo =
-             '["sType", "pNext", "flags", "bindingCount", "pBindings"] -- ' closing tick for hsc2hs
-        type CUnionType VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorSetLayoutCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDescriptorSetLayoutCreateInfo where
-        type FieldType "sType" VkDescriptorSetLayoutCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDescriptorSetLayoutCreateInfo =
-             #{offset VkDescriptorSetLayoutCreateInfo, sType}
-        type FieldIsArray "sType" VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDescriptorSetLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDescriptorSetLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDescriptorSetLayoutCreateInfo where
-        type FieldType "pNext" VkDescriptorSetLayoutCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDescriptorSetLayoutCreateInfo =
-             #{offset VkDescriptorSetLayoutCreateInfo, pNext}
-        type FieldIsArray "pNext" VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDescriptorSetLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDescriptorSetLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDescriptorSetLayoutCreateInfo where
-        type FieldType "flags" VkDescriptorSetLayoutCreateInfo =
-             VkDescriptorSetLayoutCreateFlags
-        type FieldOptional "flags" VkDescriptorSetLayoutCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDescriptorSetLayoutCreateInfo =
-             #{offset VkDescriptorSetLayoutCreateInfo, flags}
-        type FieldIsArray "flags" VkDescriptorSetLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDescriptorSetLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDescriptorSetLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "bindingCount" VkDescriptorSetLayoutCreateInfo where
-        type FieldType "bindingCount" VkDescriptorSetLayoutCreateInfo =
-             Word32
-        type FieldOptional "bindingCount" VkDescriptorSetLayoutCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "bindingCount" VkDescriptorSetLayoutCreateInfo =
-             #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
-        type FieldIsArray "bindingCount" VkDescriptorSetLayoutCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bindingCount" VkDescriptorSetLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, bindingCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bindingCount" VkDescriptorSetLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pBindings" VkDescriptorSetLayoutCreateInfo where
-        type FieldType "pBindings" VkDescriptorSetLayoutCreateInfo =
-             Ptr VkDescriptorSetLayoutBinding
-        type FieldOptional "pBindings" VkDescriptorSetLayoutCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pBindings" VkDescriptorSetLayoutCreateInfo =
-             #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
-        type FieldIsArray "pBindings" VkDescriptorSetLayoutCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pBindings" VkDescriptorSetLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutCreateInfo, pBindings})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pBindings" VkDescriptorSetLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
-
-instance Show VkDescriptorSetLayoutCreateInfo where
-        showsPrec d x
-          = showString "VkDescriptorSetLayoutCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "bindingCount = " .
-                                  showsPrec d (getField @"bindingCount" x) .
-                                    showString ", " .
-                                      showString "pBindings = " .
-                                        showsPrec d (getField @"pBindings" x) . showChar '}'
-
--- | > typedef struct VkDescriptorSetLayoutSupport {
---   >     VkStructureType sType;
---   >     void*            pNext;
---   >     VkBool32         supported;
---   > } VkDescriptorSetLayoutSupport;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupport registry at www.khronos.org>
-type VkDescriptorSetLayoutSupport =
-     VulkanStruct VkDescriptorSetLayoutSupport' -- ' closing tick for hsc2hs
-
-data VkDescriptorSetLayoutSupport' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorSetLayoutSupport where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorSetLayoutSupport where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorSetLayoutSupport where
-        sizeOf ~_ = #{size VkDescriptorSetLayoutSupport}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorSetLayoutSupport}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorSetLayoutSupport where
-        type StructFields VkDescriptorSetLayoutSupport =
-             '["sType", "pNext", "supported"] -- ' closing tick for hsc2hs
-        type CUnionType VkDescriptorSetLayoutSupport = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorSetLayoutSupport = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorSetLayoutSupport = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDescriptorSetLayoutSupport where
-        type FieldType "sType" VkDescriptorSetLayoutSupport =
-             VkStructureType
-        type FieldOptional "sType" VkDescriptorSetLayoutSupport = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDescriptorSetLayoutSupport =
-             #{offset VkDescriptorSetLayoutSupport, sType}
-        type FieldIsArray "sType" VkDescriptorSetLayoutSupport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutSupport, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDescriptorSetLayoutSupport where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutSupport, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutSupport, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDescriptorSetLayoutSupport where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutSupport, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDescriptorSetLayoutSupport where
-        type FieldType "pNext" VkDescriptorSetLayoutSupport = Ptr Void
-        type FieldOptional "pNext" VkDescriptorSetLayoutSupport = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDescriptorSetLayoutSupport =
-             #{offset VkDescriptorSetLayoutSupport, pNext}
-        type FieldIsArray "pNext" VkDescriptorSetLayoutSupport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutSupport, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDescriptorSetLayoutSupport where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutSupport, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutSupport, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDescriptorSetLayoutSupport where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutSupport, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "supported" VkDescriptorSetLayoutSupport where
-        type FieldType "supported" VkDescriptorSetLayoutSupport = VkBool32
-        type FieldOptional "supported" VkDescriptorSetLayoutSupport =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "supported" VkDescriptorSetLayoutSupport =
-             #{offset VkDescriptorSetLayoutSupport, supported}
-        type FieldIsArray "supported" VkDescriptorSetLayoutSupport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetLayoutSupport, supported}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supported" VkDescriptorSetLayoutSupport where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetLayoutSupport, supported})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetLayoutSupport, supported}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supported" VkDescriptorSetLayoutSupport where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetLayoutSupport, supported}
-
-instance Show VkDescriptorSetLayoutSupport where
-        showsPrec d x
-          = showString "VkDescriptorSetLayoutSupport {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "supported = " .
-                            showsPrec d (getField @"supported" x) . showChar '}'
-
--- | Alias for `VkDescriptorSetLayoutSupport`
-type VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport
-
--- | > typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     uint32_t               descriptorSetCount;
---   >     const uint32_t* pDescriptorCounts;
---   > } VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetVariableDescriptorCountAllocateInfoEXT VkDescriptorSetVariableDescriptorCountAllocateInfoEXT registry at www.khronos.org>
-type VkDescriptorSetVariableDescriptorCountAllocateInfoEXT =
-     VulkanStruct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDescriptorSetVariableDescriptorCountAllocateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        sizeOf ~_
-          = #{size VkDescriptorSetVariableDescriptorCountAllocateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorSetVariableDescriptorCountAllocateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        type StructFields
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = '["sType", "pNext", "descriptorSetCount", "pDescriptorCounts"] -- ' closing tick for hsc2hs
-        type CUnionType
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = '[VkDescriptorSetAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        type FieldType "sType"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             =
-             #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, sType}
-        type FieldIsArray "sType"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        type FieldType "pNext"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             =
-             #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pNext}
-        type FieldIsArray "pNext"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorSetCount"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        type FieldType "descriptorSetCount"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = Word32
-        type FieldOptional "descriptorSetCount"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorSetCount"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             =
-             #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, descriptorSetCount}
-        type FieldIsArray "descriptorSetCount"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, descriptorSetCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorSetCount"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, descriptorSetCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, descriptorSetCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorSetCount"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, descriptorSetCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDescriptorCounts"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        type FieldType "pDescriptorCounts"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = Ptr Word32
-        type FieldOptional "pDescriptorCounts"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDescriptorCounts"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             =
-             #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pDescriptorCounts}
-        type FieldIsArray "pDescriptorCounts"
-               VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pDescriptorCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDescriptorCounts"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pDescriptorCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pDescriptorCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDescriptorCounts"
-           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pDescriptorCounts}
-
-instance Show VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
-         where
-        showsPrec d x
-          = showString
-              "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "descriptorSetCount = " .
-                            showsPrec d (getField @"descriptorSetCount" x) .
-                              showString ", " .
-                                showString "pDescriptorCounts = " .
-                                  showsPrec d (getField @"pDescriptorCounts" x) . showChar '}'
-
--- | > typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
---   >     VkStructureType sType;
---   >     void*            pNext;
---   >     uint32_t         maxVariableDescriptorCount;
---   > } VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetVariableDescriptorCountLayoutSupportEXT VkDescriptorSetVariableDescriptorCountLayoutSupportEXT registry at www.khronos.org>
-type VkDescriptorSetVariableDescriptorCountLayoutSupportEXT =
-     VulkanStruct
-       VkDescriptorSetVariableDescriptorCountLayoutSupportEXT' -- ' closing tick for hsc2hs
-
-data VkDescriptorSetVariableDescriptorCountLayoutSupportEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        sizeOf ~_
-          = #{size VkDescriptorSetVariableDescriptorCountLayoutSupportEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorSetVariableDescriptorCountLayoutSupportEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        type StructFields
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = '["sType", "pNext", "maxVariableDescriptorCount"] -- ' closing tick for hsc2hs
-        type CUnionType
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = 'True -- ' closing tick for hsc2hs
-        type StructExtends
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = '[VkDescriptorSetLayoutSupport] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        type FieldType "sType"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             =
-             #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, sType}
-        type FieldIsArray "sType"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        type FieldType "pNext"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             =
-             #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, pNext}
-        type FieldIsArray "pNext"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxVariableDescriptorCount"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        type FieldType "maxVariableDescriptorCount"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = Word32
-        type FieldOptional "maxVariableDescriptorCount"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxVariableDescriptorCount"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             =
-             #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, maxVariableDescriptorCount}
-        type FieldIsArray "maxVariableDescriptorCount"
-               VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, maxVariableDescriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxVariableDescriptorCount"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, maxVariableDescriptorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, maxVariableDescriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxVariableDescriptorCount"
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, maxVariableDescriptorCount}
-
-instance Show
-           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
-         where
-        showsPrec d x
-          = showString
-              "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxVariableDescriptorCount = " .
-                            showsPrec d (getField @"maxVariableDescriptorCount" x) .
-                              showChar '}'
-
--- | > typedef struct VkDescriptorUpdateTemplateCreateInfo {
---   >     VkStructureType sType;
---   >     void*                                   pNext;
---   >     VkDescriptorUpdateTemplateCreateFlags    flags;
---   >     uint32_t                 descriptorUpdateEntryCount;
---   >     const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries;
---   >     VkDescriptorUpdateTemplateType templateType;
---   >     VkDescriptorSetLayout descriptorSetLayout;
---   >     VkPipelineBindPoint pipelineBindPoint;
---   >     VkPipelineLayoutpipelineLayout;
---   >     uint32_t set;
---   > } VkDescriptorUpdateTemplateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfo registry at www.khronos.org>
-type VkDescriptorUpdateTemplateCreateInfo =
-     VulkanStruct VkDescriptorUpdateTemplateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkDescriptorUpdateTemplateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorUpdateTemplateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorUpdateTemplateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorUpdateTemplateCreateInfo where
-        sizeOf ~_
-          = #{size VkDescriptorUpdateTemplateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorUpdateTemplateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorUpdateTemplateCreateInfo where
-        type StructFields VkDescriptorUpdateTemplateCreateInfo =
-             '["sType", "pNext", "flags", "descriptorUpdateEntryCount", -- ' closing tick for hsc2hs
-               "pDescriptorUpdateEntries", "templateType", "descriptorSetLayout",
-               "pipelineBindPoint", "pipelineLayout", "set"]
-        type CUnionType VkDescriptorUpdateTemplateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorUpdateTemplateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorUpdateTemplateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDescriptorUpdateTemplateCreateInfo where
-        type FieldType "sType" VkDescriptorUpdateTemplateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkDescriptorUpdateTemplateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDescriptorUpdateTemplateCreateInfo =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, sType}
-        type FieldIsArray "sType" VkDescriptorUpdateTemplateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDescriptorUpdateTemplateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDescriptorUpdateTemplateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDescriptorUpdateTemplateCreateInfo where
-        type FieldType "pNext" VkDescriptorUpdateTemplateCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkDescriptorUpdateTemplateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDescriptorUpdateTemplateCreateInfo =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkDescriptorUpdateTemplateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDescriptorUpdateTemplateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDescriptorUpdateTemplateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDescriptorUpdateTemplateCreateInfo where
-        type FieldType "flags" VkDescriptorUpdateTemplateCreateInfo =
-             VkDescriptorUpdateTemplateCreateFlags
-        type FieldOptional "flags" VkDescriptorUpdateTemplateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDescriptorUpdateTemplateCreateInfo =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, flags}
-        type FieldIsArray "flags" VkDescriptorUpdateTemplateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDescriptorUpdateTemplateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDescriptorUpdateTemplateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorUpdateEntryCount"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        type FieldType "descriptorUpdateEntryCount"
-               VkDescriptorUpdateTemplateCreateInfo
-             = Word32
-        type FieldOptional "descriptorUpdateEntryCount"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorUpdateEntryCount"
-               VkDescriptorUpdateTemplateCreateInfo
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorUpdateEntryCount}
-        type FieldIsArray "descriptorUpdateEntryCount"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorUpdateEntryCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorUpdateEntryCount"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorUpdateEntryCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorUpdateEntryCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorUpdateEntryCount"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorUpdateEntryCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDescriptorUpdateEntries"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        type FieldType "pDescriptorUpdateEntries"
-               VkDescriptorUpdateTemplateCreateInfo
-             = Ptr VkDescriptorUpdateTemplateEntry
-        type FieldOptional "pDescriptorUpdateEntries"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDescriptorUpdateEntries"
-               VkDescriptorUpdateTemplateCreateInfo
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, pDescriptorUpdateEntries}
-        type FieldIsArray "pDescriptorUpdateEntries"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, pDescriptorUpdateEntries}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDescriptorUpdateEntries"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, pDescriptorUpdateEntries})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, pDescriptorUpdateEntries}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDescriptorUpdateEntries"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, pDescriptorUpdateEntries}
-
-instance {-# OVERLAPPING #-}
-         HasField "templateType" VkDescriptorUpdateTemplateCreateInfo where
-        type FieldType "templateType" VkDescriptorUpdateTemplateCreateInfo
-             = VkDescriptorUpdateTemplateType
-        type FieldOptional "templateType"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "templateType"
-               VkDescriptorUpdateTemplateCreateInfo
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, templateType}
-        type FieldIsArray "templateType"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, templateType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "templateType" VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, templateType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, templateType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "templateType" VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, templateType}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorSetLayout" VkDescriptorUpdateTemplateCreateInfo
-         where
-        type FieldType "descriptorSetLayout"
-               VkDescriptorUpdateTemplateCreateInfo
-             = VkDescriptorSetLayout
-        type FieldOptional "descriptorSetLayout"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorSetLayout"
-               VkDescriptorUpdateTemplateCreateInfo
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorSetLayout}
-        type FieldIsArray "descriptorSetLayout"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorSetLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorSetLayout"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorSetLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorSetLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorSetLayout"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorSetLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineBindPoint" VkDescriptorUpdateTemplateCreateInfo
-         where
-        type FieldType "pipelineBindPoint"
-               VkDescriptorUpdateTemplateCreateInfo
-             = VkPipelineBindPoint
-        type FieldOptional "pipelineBindPoint"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineBindPoint"
-               VkDescriptorUpdateTemplateCreateInfo
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineBindPoint}
-        type FieldIsArray "pipelineBindPoint"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineBindPoint"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineBindPoint})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineBindPoint"
-           VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineLayout" VkDescriptorUpdateTemplateCreateInfo
-         where
-        type FieldType "pipelineLayout"
-               VkDescriptorUpdateTemplateCreateInfo
-             = VkPipelineLayout
-        type FieldOptional "pipelineLayout"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineLayout"
-               VkDescriptorUpdateTemplateCreateInfo
-             =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineLayout}
-        type FieldIsArray "pipelineLayout"
-               VkDescriptorUpdateTemplateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineLayout" VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineLayout" VkDescriptorUpdateTemplateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "set" VkDescriptorUpdateTemplateCreateInfo where
-        type FieldType "set" VkDescriptorUpdateTemplateCreateInfo = Word32
-        type FieldOptional "set" VkDescriptorUpdateTemplateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "set" VkDescriptorUpdateTemplateCreateInfo =
-             #{offset VkDescriptorUpdateTemplateCreateInfo, set}
-        type FieldIsArray "set" VkDescriptorUpdateTemplateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateCreateInfo, set}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "set" VkDescriptorUpdateTemplateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateCreateInfo, set})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, set}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "set" VkDescriptorUpdateTemplateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateCreateInfo, set}
-
-instance Show VkDescriptorUpdateTemplateCreateInfo where
-        showsPrec d x
-          = showString "VkDescriptorUpdateTemplateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "descriptorUpdateEntryCount = " .
-                                  showsPrec d (getField @"descriptorUpdateEntryCount" x) .
-                                    showString ", " .
-                                      showString "pDescriptorUpdateEntries = " .
-                                        showsPrec d (getField @"pDescriptorUpdateEntries" x) .
-                                          showString ", " .
-                                            showString "templateType = " .
-                                              showsPrec d (getField @"templateType" x) .
-                                                showString ", " .
-                                                  showString "descriptorSetLayout = " .
-                                                    showsPrec d (getField @"descriptorSetLayout" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "pipelineBindPoint = " .
-                                                          showsPrec d
-                                                            (getField @"pipelineBindPoint" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "pipelineLayout = " .
-                                                                showsPrec d
-                                                                  (getField @"pipelineLayout" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "set = " .
-                                                                      showsPrec d
-                                                                        (getField @"set" x)
-                                                                        . showChar '}'
-
--- | Alias for `VkDescriptorUpdateTemplateCreateInfo`
-type VkDescriptorUpdateTemplateCreateInfoKHR =
-     VkDescriptorUpdateTemplateCreateInfo
-
--- | > typedef struct VkDescriptorUpdateTemplateEntry {
---   >     uint32_t                         dstBinding;
---   >     uint32_t                         dstArrayElement;
---   >     uint32_t                         descriptorCount;
---   >     VkDescriptorType                 descriptorType;
---   >     size_t                           offset;
---   >     size_t                           stride;
---   > } VkDescriptorUpdateTemplateEntry;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntry registry at www.khronos.org>
-type VkDescriptorUpdateTemplateEntry =
-     VulkanStruct VkDescriptorUpdateTemplateEntry' -- ' closing tick for hsc2hs
-
-data VkDescriptorUpdateTemplateEntry' -- ' closing tick for hsc2hs
-
-instance Eq VkDescriptorUpdateTemplateEntry where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDescriptorUpdateTemplateEntry where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDescriptorUpdateTemplateEntry where
-        sizeOf ~_ = #{size VkDescriptorUpdateTemplateEntry}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDescriptorUpdateTemplateEntry}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDescriptorUpdateTemplateEntry where
-        type StructFields VkDescriptorUpdateTemplateEntry =
-             '["dstBinding", "dstArrayElement", "descriptorCount", -- ' closing tick for hsc2hs
-               "descriptorType", "offset", "stride"]
-        type CUnionType VkDescriptorUpdateTemplateEntry = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDescriptorUpdateTemplateEntry = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDescriptorUpdateTemplateEntry = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "dstBinding" VkDescriptorUpdateTemplateEntry where
-        type FieldType "dstBinding" VkDescriptorUpdateTemplateEntry =
-             Word32
-        type FieldOptional "dstBinding" VkDescriptorUpdateTemplateEntry =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstBinding" VkDescriptorUpdateTemplateEntry =
-             #{offset VkDescriptorUpdateTemplateEntry, dstBinding}
-        type FieldIsArray "dstBinding" VkDescriptorUpdateTemplateEntry =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntry, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstBinding" VkDescriptorUpdateTemplateEntry where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntry, dstBinding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntry, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstBinding" VkDescriptorUpdateTemplateEntry where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntry, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstArrayElement" VkDescriptorUpdateTemplateEntry where
-        type FieldType "dstArrayElement" VkDescriptorUpdateTemplateEntry =
-             Word32
-        type FieldOptional "dstArrayElement"
-               VkDescriptorUpdateTemplateEntry
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstArrayElement" VkDescriptorUpdateTemplateEntry
-             =
-             #{offset VkDescriptorUpdateTemplateEntry, dstArrayElement}
-        type FieldIsArray "dstArrayElement" VkDescriptorUpdateTemplateEntry
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntry, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstArrayElement" VkDescriptorUpdateTemplateEntry
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntry, dstArrayElement})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntry, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstArrayElement" VkDescriptorUpdateTemplateEntry
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntry, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorCount" VkDescriptorUpdateTemplateEntry where
-        type FieldType "descriptorCount" VkDescriptorUpdateTemplateEntry =
-             Word32
-        type FieldOptional "descriptorCount"
-               VkDescriptorUpdateTemplateEntry
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorCount" VkDescriptorUpdateTemplateEntry
-             =
-             #{offset VkDescriptorUpdateTemplateEntry, descriptorCount}
-        type FieldIsArray "descriptorCount" VkDescriptorUpdateTemplateEntry
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntry, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorCount" VkDescriptorUpdateTemplateEntry
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntry, descriptorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntry, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorCount" VkDescriptorUpdateTemplateEntry
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntry, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorType" VkDescriptorUpdateTemplateEntry where
-        type FieldType "descriptorType" VkDescriptorUpdateTemplateEntry =
-             VkDescriptorType
-        type FieldOptional "descriptorType" VkDescriptorUpdateTemplateEntry
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorType" VkDescriptorUpdateTemplateEntry =
-             #{offset VkDescriptorUpdateTemplateEntry, descriptorType}
-        type FieldIsArray "descriptorType" VkDescriptorUpdateTemplateEntry
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntry, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorType" VkDescriptorUpdateTemplateEntry where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntry, descriptorType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntry, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorType" VkDescriptorUpdateTemplateEntry
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntry, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkDescriptorUpdateTemplateEntry where
-        type FieldType "offset" VkDescriptorUpdateTemplateEntry = CSize
-        type FieldOptional "offset" VkDescriptorUpdateTemplateEntry =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkDescriptorUpdateTemplateEntry =
-             #{offset VkDescriptorUpdateTemplateEntry, offset}
-        type FieldIsArray "offset" VkDescriptorUpdateTemplateEntry = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntry, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkDescriptorUpdateTemplateEntry where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntry, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntry, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkDescriptorUpdateTemplateEntry where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntry, offset}
-
-instance {-# OVERLAPPING #-}
-         HasField "stride" VkDescriptorUpdateTemplateEntry where
-        type FieldType "stride" VkDescriptorUpdateTemplateEntry = CSize
-        type FieldOptional "stride" VkDescriptorUpdateTemplateEntry =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "stride" VkDescriptorUpdateTemplateEntry =
-             #{offset VkDescriptorUpdateTemplateEntry, stride}
-        type FieldIsArray "stride" VkDescriptorUpdateTemplateEntry = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDescriptorUpdateTemplateEntry, stride}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stride" VkDescriptorUpdateTemplateEntry where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDescriptorUpdateTemplateEntry, stride})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDescriptorUpdateTemplateEntry, stride}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stride" VkDescriptorUpdateTemplateEntry where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDescriptorUpdateTemplateEntry, stride}
-
-instance Show VkDescriptorUpdateTemplateEntry where
-        showsPrec d x
-          = showString "VkDescriptorUpdateTemplateEntry {" .
-              showString "dstBinding = " .
-                showsPrec d (getField @"dstBinding" x) .
-                  showString ", " .
-                    showString "dstArrayElement = " .
-                      showsPrec d (getField @"dstArrayElement" x) .
-                        showString ", " .
-                          showString "descriptorCount = " .
-                            showsPrec d (getField @"descriptorCount" x) .
-                              showString ", " .
-                                showString "descriptorType = " .
-                                  showsPrec d (getField @"descriptorType" x) .
-                                    showString ", " .
-                                      showString "offset = " .
-                                        showsPrec d (getField @"offset" x) .
-                                          showString ", " .
-                                            showString "stride = " .
-                                              showsPrec d (getField @"stride" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Descriptor
+       (VkDescriptorBufferInfo, VkDescriptorImageInfo,
+        VkDescriptorPoolCreateInfo, VkDescriptorPoolSize,
+        VkDescriptorSetAllocateInfo, VkDescriptorSetLayoutBinding,
+        VkDescriptorSetLayoutBindingFlagsCreateInfoEXT,
+        VkDescriptorSetLayoutCreateInfo, VkDescriptorSetLayoutSupport,
+        VkDescriptorSetLayoutSupportKHR,
+        VkDescriptorSetVariableDescriptorCountAllocateInfoEXT,
+        VkDescriptorSetVariableDescriptorCountLayoutSupportEXT,
+        VkDescriptorUpdateTemplateCreateInfo,
+        VkDescriptorUpdateTemplateCreateInfoKHR,
+        VkDescriptorUpdateTemplateEntry,
+        VkDescriptorUpdateTemplateEntryKHR)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes          (VkBool32, VkDeviceSize)
+import Graphics.Vulkan.Types.Bitmasks           (VkDescriptorUpdateTemplateCreateFlags)
+import Graphics.Vulkan.Types.Enum.Descriptor    (VkDescriptorBindingFlagsEXT,
+                                                 VkDescriptorPoolCreateFlags,
+                                                 VkDescriptorSetLayoutCreateFlags,
+                                                 VkDescriptorType,
+                                                 VkDescriptorUpdateTemplateType)
+import Graphics.Vulkan.Types.Enum.Image         (VkImageLayout)
+import Graphics.Vulkan.Types.Enum.Pipeline      (VkPipelineBindPoint)
+import Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDescriptorPool,
+                                                 VkDescriptorSetLayout,
+                                                 VkImageView, VkPipelineLayout,
+                                                 VkSampler)
+
+-- | > typedef struct VkDescriptorBufferInfo {
+--   >     VkBuffer               buffer;
+--   >     VkDeviceSize           offset;
+--   >     VkDeviceSize           range;
+--   > } VkDescriptorBufferInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorBufferInfo VkDescriptorBufferInfo registry at www.khronos.org>
+type VkDescriptorBufferInfo = VkStruct VkDescriptorBufferInfo' -- ' closing tick for hsc2hs
+
+data VkDescriptorBufferInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorBufferInfo where
+    type StructRep VkDescriptorBufferInfo =
+         'StructMeta "VkDescriptorBufferInfo" VkDescriptorBufferInfo -- ' closing tick for hsc2hs
+           #{size VkDescriptorBufferInfo}
+           #{alignment VkDescriptorBufferInfo}
+           '[('FieldMeta "buffer" VkBuffer 'False  -- ' closing tick for hsc2hs
+                                                  #{offset VkDescriptorBufferInfo, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" VkDeviceSize 'False 
+                                                      #{offset VkDescriptorBufferInfo, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "range" VkDeviceSize 'False 
+                                                     #{offset VkDescriptorBufferInfo, range}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorImageInfo {
+--   >     VkSampler       sampler;
+--   >     VkImageView     imageView;
+--   >     VkImageLayout   imageLayout;
+--   > } VkDescriptorImageInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorImageInfo VkDescriptorImageInfo registry at www.khronos.org>
+type VkDescriptorImageInfo = VkStruct VkDescriptorImageInfo' -- ' closing tick for hsc2hs
+
+data VkDescriptorImageInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorImageInfo where
+    type StructRep VkDescriptorImageInfo =
+         'StructMeta "VkDescriptorImageInfo" VkDescriptorImageInfo  -- ' closing tick for hsc2hs
+                                                                   #{size VkDescriptorImageInfo}
+           #{alignment VkDescriptorImageInfo}
+           '[('FieldMeta "sampler" VkSampler 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkDescriptorImageInfo, sampler}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageView" VkImageView 'False 
+                                                        #{offset VkDescriptorImageInfo, imageView}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageLayout" VkImageLayout 'False 
+                                                            #{offset VkDescriptorImageInfo, imageLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorPoolCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkDescriptorPoolCreateFlags  flags;
+--   >     uint32_t               maxSets;
+--   >     uint32_t               poolSizeCount;
+--   >     const VkDescriptorPoolSize* pPoolSizes;
+--   > } VkDescriptorPoolCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorPoolCreateInfo VkDescriptorPoolCreateInfo registry at www.khronos.org>
+type VkDescriptorPoolCreateInfo =
+     VkStruct VkDescriptorPoolCreateInfo' -- ' closing tick for hsc2hs
+
+data VkDescriptorPoolCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorPoolCreateInfo where
+    type StructRep VkDescriptorPoolCreateInfo =
+         'StructMeta "VkDescriptorPoolCreateInfo" VkDescriptorPoolCreateInfo -- ' closing tick for hsc2hs
+           #{size VkDescriptorPoolCreateInfo}
+           #{alignment VkDescriptorPoolCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorPoolCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDescriptorPoolCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDescriptorPoolCreateFlags 'True 
+                                                                   #{offset VkDescriptorPoolCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSets" Word32 'False 
+                                                 #{offset VkDescriptorPoolCreateInfo, maxSets}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "poolSizeCount" Word32 'False 
+                                                       #{offset VkDescriptorPoolCreateInfo, poolSizeCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pPoolSizes" (Ptr VkDescriptorPoolSize) 'False
+                #{offset VkDescriptorPoolCreateInfo, pPoolSizes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorPoolSize {
+--   >     VkDescriptorType       type;
+--   >     uint32_t               descriptorCount;
+--   > } VkDescriptorPoolSize;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorPoolSize VkDescriptorPoolSize registry at www.khronos.org>
+type VkDescriptorPoolSize = VkStruct VkDescriptorPoolSize' -- ' closing tick for hsc2hs
+
+data VkDescriptorPoolSize' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorPoolSize where
+    type StructRep VkDescriptorPoolSize =
+         'StructMeta "VkDescriptorPoolSize" VkDescriptorPoolSize  -- ' closing tick for hsc2hs
+                                                                 #{size VkDescriptorPoolSize}
+           #{alignment VkDescriptorPoolSize}
+           '[('FieldMeta "type" VkDescriptorType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorPoolSize, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorCount" Word32 'False 
+                                                         #{offset VkDescriptorPoolSize, descriptorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorSetAllocateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkDescriptorPool       descriptorPool;
+--   >     uint32_t               descriptorSetCount;
+--   >     const VkDescriptorSetLayout* pSetLayouts;
+--   > } VkDescriptorSetAllocateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetAllocateInfo VkDescriptorSetAllocateInfo registry at www.khronos.org>
+type VkDescriptorSetAllocateInfo =
+     VkStruct VkDescriptorSetAllocateInfo' -- ' closing tick for hsc2hs
+
+data VkDescriptorSetAllocateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorSetAllocateInfo where
+    type StructRep VkDescriptorSetAllocateInfo =
+         'StructMeta "VkDescriptorSetAllocateInfo" -- ' closing tick for hsc2hs
+           VkDescriptorSetAllocateInfo
+           #{size VkDescriptorSetAllocateInfo}
+           #{alignment VkDescriptorSetAllocateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorSetAllocateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDescriptorSetAllocateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorPool" VkDescriptorPool 'False 
+                                                                  #{offset VkDescriptorSetAllocateInfo, descriptorPool}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorSetCount" Word32 'False 
+                                                            #{offset VkDescriptorSetAllocateInfo, descriptorSetCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSetLayouts" (Ptr VkDescriptorSetLayout) 'False
+                #{offset VkDescriptorSetAllocateInfo, pSetLayouts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorSetLayoutBinding {
+--   >     uint32_t               binding;
+--   >     VkDescriptorType       descriptorType;
+--   >     uint32_t descriptorCount;
+--   >     VkShaderStageFlags     stageFlags;
+--   >     const VkSampler*       pImmutableSamplers;
+--   > } VkDescriptorSetLayoutBinding;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutBinding VkDescriptorSetLayoutBinding registry at www.khronos.org>
+type VkDescriptorSetLayoutBinding =
+     VkStruct VkDescriptorSetLayoutBinding' -- ' closing tick for hsc2hs
+
+data VkDescriptorSetLayoutBinding' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorSetLayoutBinding where
+    type StructRep VkDescriptorSetLayoutBinding =
+         'StructMeta "VkDescriptorSetLayoutBinding" -- ' closing tick for hsc2hs
+           VkDescriptorSetLayoutBinding
+           #{size VkDescriptorSetLayoutBinding}
+           #{alignment VkDescriptorSetLayoutBinding}
+           '[('FieldMeta "binding" Word32 'False  -- ' closing tick for hsc2hs
+                                                 #{offset VkDescriptorSetLayoutBinding, binding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorType" VkDescriptorType 'False 
+                                                                  #{offset VkDescriptorSetLayoutBinding, descriptorType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorCount" Word32 'True 
+                                                        #{offset VkDescriptorSetLayoutBinding, descriptorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stageFlags" VkShaderStageFlags 'False 
+                                                                #{offset VkDescriptorSetLayoutBinding, stageFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pImmutableSamplers" (Ptr VkSampler) 'True 
+                                                                    #{offset VkDescriptorSetLayoutBinding, pImmutableSamplers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     uint32_t               bindingCount;
+--   >     const VkDescriptorBindingFlagsEXT* pBindingFlags;
+--   > } VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutBindingFlagsCreateInfoEXT VkDescriptorSetLayoutBindingFlagsCreateInfoEXT registry at www.khronos.org>
+type VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
+     VkStruct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDescriptorSetLayoutBindingFlagsCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
+         where
+    type StructRep VkDescriptorSetLayoutBindingFlagsCreateInfoEXT =
+         'StructMeta "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
+           #{size VkDescriptorSetLayoutBindingFlagsCreateInfoEXT}
+           #{alignment VkDescriptorSetLayoutBindingFlagsCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bindingCount" Word32 'True 
+                                                     #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, bindingCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pBindingFlags" (Ptr VkDescriptorBindingFlagsEXT) -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkDescriptorSetLayoutBindingFlagsCreateInfoEXT, pBindingFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkDescriptorSetLayoutCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorSetLayoutCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkDescriptorSetLayoutCreateFlags    flags;
+--   >     uint32_t               bindingCount;
+--   >     const VkDescriptorSetLayoutBinding* pBindings;
+--   > } VkDescriptorSetLayoutCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutCreateInfo VkDescriptorSetLayoutCreateInfo registry at www.khronos.org>
+type VkDescriptorSetLayoutCreateInfo =
+     VkStruct VkDescriptorSetLayoutCreateInfo' -- ' closing tick for hsc2hs
+
+data VkDescriptorSetLayoutCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorSetLayoutCreateInfo where
+    type StructRep VkDescriptorSetLayoutCreateInfo =
+         'StructMeta "VkDescriptorSetLayoutCreateInfo" -- ' closing tick for hsc2hs
+           VkDescriptorSetLayoutCreateInfo
+           #{size VkDescriptorSetLayoutCreateInfo}
+           #{alignment VkDescriptorSetLayoutCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorSetLayoutCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDescriptorSetLayoutCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDescriptorSetLayoutCreateFlags 'True
+                #{offset VkDescriptorSetLayoutCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bindingCount" Word32 'True 
+                                                     #{offset VkDescriptorSetLayoutCreateInfo, bindingCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pBindings" (Ptr VkDescriptorSetLayoutBinding) 'False
+                #{offset VkDescriptorSetLayoutCreateInfo, pBindings}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorSetLayoutSupport {
+--   >     VkStructureType sType;
+--   >     void*            pNext;
+--   >     VkBool32         supported;
+--   > } VkDescriptorSetLayoutSupport;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupport registry at www.khronos.org>
+type VkDescriptorSetLayoutSupport =
+     VkStruct VkDescriptorSetLayoutSupport' -- ' closing tick for hsc2hs
+
+data VkDescriptorSetLayoutSupport' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorSetLayoutSupport where
+    type StructRep VkDescriptorSetLayoutSupport =
+         'StructMeta "VkDescriptorSetLayoutSupport" -- ' closing tick for hsc2hs
+           VkDescriptorSetLayoutSupport
+           #{size VkDescriptorSetLayoutSupport}
+           #{alignment VkDescriptorSetLayoutSupport}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorSetLayoutSupport, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDescriptorSetLayoutSupport, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supported" VkBool32 'False 
+                                                     #{offset VkDescriptorSetLayoutSupport, supported}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkDescriptorSetLayoutSupport`
+type VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport
+
+-- | > typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     uint32_t               descriptorSetCount;
+--   >     const uint32_t* pDescriptorCounts;
+--   > } VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetVariableDescriptorCountAllocateInfoEXT VkDescriptorSetVariableDescriptorCountAllocateInfoEXT registry at www.khronos.org>
+type VkDescriptorSetVariableDescriptorCountAllocateInfoEXT =
+     VkStruct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDescriptorSetVariableDescriptorCountAllocateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
+         where
+    type StructRep
+           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
+         =
+         'StructMeta "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT" -- ' closing tick for hsc2hs
+           VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
+           #{size VkDescriptorSetVariableDescriptorCountAllocateInfoEXT}
+           #{alignment VkDescriptorSetVariableDescriptorCountAllocateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorSetCount" Word32 'True 
+                                                           #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, descriptorSetCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDescriptorCounts" (Ptr Word32) 'False 
+                                                                 #{offset VkDescriptorSetVariableDescriptorCountAllocateInfoEXT, pDescriptorCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkDescriptorSetAllocateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
+--   >     VkStructureType sType;
+--   >     void*            pNext;
+--   >     uint32_t         maxVariableDescriptorCount;
+--   > } VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorSetVariableDescriptorCountLayoutSupportEXT VkDescriptorSetVariableDescriptorCountLayoutSupportEXT registry at www.khronos.org>
+type VkDescriptorSetVariableDescriptorCountLayoutSupportEXT =
+     VkStruct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT' -- ' closing tick for hsc2hs
+
+data VkDescriptorSetVariableDescriptorCountLayoutSupportEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
+         where
+    type StructRep
+           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
+         =
+         'StructMeta -- ' closing tick for hsc2hs
+           "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"
+           VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
+           #{size VkDescriptorSetVariableDescriptorCountLayoutSupportEXT}
+           #{alignment VkDescriptorSetVariableDescriptorCountLayoutSupportEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxVariableDescriptorCount" Word32 'False 
+                                                                    #{offset VkDescriptorSetVariableDescriptorCountLayoutSupportEXT, maxVariableDescriptorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkDescriptorSetLayoutSupport] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDescriptorUpdateTemplateCreateInfo {
+--   >     VkStructureType sType;
+--   >     void*                                   pNext;
+--   >     VkDescriptorUpdateTemplateCreateFlags    flags;
+--   >     uint32_t                 descriptorUpdateEntryCount;
+--   >     const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries;
+--   >     VkDescriptorUpdateTemplateType templateType;
+--   >     VkDescriptorSetLayout descriptorSetLayout;
+--   >     VkPipelineBindPoint pipelineBindPoint;
+--   >     VkPipelineLayoutpipelineLayout;
+--   >     uint32_t set;
+--   > } VkDescriptorUpdateTemplateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfo registry at www.khronos.org>
+type VkDescriptorUpdateTemplateCreateInfo =
+     VkStruct VkDescriptorUpdateTemplateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkDescriptorUpdateTemplateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorUpdateTemplateCreateInfo where
+    type StructRep VkDescriptorUpdateTemplateCreateInfo =
+         'StructMeta "VkDescriptorUpdateTemplateCreateInfo" -- ' closing tick for hsc2hs
+           VkDescriptorUpdateTemplateCreateInfo
+           #{size VkDescriptorUpdateTemplateCreateInfo}
+           #{alignment VkDescriptorUpdateTemplateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDescriptorUpdateTemplateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDescriptorUpdateTemplateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDescriptorUpdateTemplateCreateFlags 'True
+                #{offset VkDescriptorUpdateTemplateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorUpdateEntryCount" Word32 'False 
+                                                                    #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorUpdateEntryCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDescriptorUpdateEntries" -- ' closing tick for hsc2hs
+                (Ptr VkDescriptorUpdateTemplateEntry)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkDescriptorUpdateTemplateCreateInfo, pDescriptorUpdateEntries}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "templateType" VkDescriptorUpdateTemplateType 'False
+                #{offset VkDescriptorUpdateTemplateCreateInfo, templateType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorSetLayout" VkDescriptorSetLayout 'True
+                #{offset VkDescriptorUpdateTemplateCreateInfo, descriptorSetLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineBindPoint" VkPipelineBindPoint 'False
+                #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineBindPoint}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineLayout" VkPipelineLayout 'False 
+                                                                  #{offset VkDescriptorUpdateTemplateCreateInfo, pipelineLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "set" Word32 'False 
+                                             #{offset VkDescriptorUpdateTemplateCreateInfo, set}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkDescriptorUpdateTemplateCreateInfo`
+type VkDescriptorUpdateTemplateCreateInfoKHR =
+     VkDescriptorUpdateTemplateCreateInfo
+
+-- | > typedef struct VkDescriptorUpdateTemplateEntry {
+--   >     uint32_t                         dstBinding;
+--   >     uint32_t                         dstArrayElement;
+--   >     uint32_t                         descriptorCount;
+--   >     VkDescriptorType                 descriptorType;
+--   >     size_t                           offset;
+--   >     size_t                           stride;
+--   > } VkDescriptorUpdateTemplateEntry;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntry registry at www.khronos.org>
+type VkDescriptorUpdateTemplateEntry =
+     VkStruct VkDescriptorUpdateTemplateEntry' -- ' closing tick for hsc2hs
+
+data VkDescriptorUpdateTemplateEntry' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDescriptorUpdateTemplateEntry where
+    type StructRep VkDescriptorUpdateTemplateEntry =
+         'StructMeta "VkDescriptorUpdateTemplateEntry" -- ' closing tick for hsc2hs
+           VkDescriptorUpdateTemplateEntry
+           #{size VkDescriptorUpdateTemplateEntry}
+           #{alignment VkDescriptorUpdateTemplateEntry}
+           '[('FieldMeta "dstBinding" Word32 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkDescriptorUpdateTemplateEntry, dstBinding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstArrayElement" Word32 'False 
+                                                         #{offset VkDescriptorUpdateTemplateEntry, dstArrayElement}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorCount" Word32 'False 
+                                                         #{offset VkDescriptorUpdateTemplateEntry, descriptorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorType" VkDescriptorType 'False 
+                                                                  #{offset VkDescriptorUpdateTemplateEntry, descriptorType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" CSize 'False 
+                                               #{offset VkDescriptorUpdateTemplateEntry, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stride" CSize 'False 
+                                               #{offset VkDescriptorUpdateTemplateEntry, stride}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkDescriptorUpdateTemplateEntry`
 type VkDescriptorUpdateTemplateEntryKHR =
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Device.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Device.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Device.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Device.hsc
@@ -1,3705 +1,777 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.Device
-       (VkDeviceCreateInfo, VkDeviceCreateInfo', VkDeviceEventInfoEXT, -- ' closing tick for hsc2hs
-        VkDeviceEventInfoEXT', VkDeviceGeneratedCommandsFeaturesNVX, -- ' closing tick for hsc2hs
-        VkDeviceGeneratedCommandsFeaturesNVX', -- ' closing tick for hsc2hs
-        VkDeviceGeneratedCommandsLimitsNVX,
-        VkDeviceGeneratedCommandsLimitsNVX', VkDeviceGroupBindSparseInfo, -- ' closing tick for hsc2hs
-        VkDeviceGroupBindSparseInfo', VkDeviceGroupBindSparseInfoKHR, -- ' closing tick for hsc2hs
-        VkDeviceGroupCommandBufferBeginInfo,
-        VkDeviceGroupCommandBufferBeginInfo', -- ' closing tick for hsc2hs
-        VkDeviceGroupCommandBufferBeginInfoKHR,
-        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfo', -- ' closing tick for hsc2hs
-        VkDeviceGroupDeviceCreateInfoKHR,
-        VkDeviceGroupPresentCapabilitiesKHR,
-        VkDeviceGroupPresentCapabilitiesKHR', VkDeviceGroupPresentInfoKHR, -- ' closing tick for hsc2hs
-        VkDeviceGroupPresentInfoKHR', VkDeviceGroupRenderPassBeginInfo, -- ' closing tick for hsc2hs
-        VkDeviceGroupRenderPassBeginInfo', -- ' closing tick for hsc2hs
-        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
-        VkDeviceGroupSubmitInfo', VkDeviceGroupSubmitInfoKHR, -- ' closing tick for hsc2hs
-        VkDeviceGroupSwapchainCreateInfoKHR,
-        VkDeviceGroupSwapchainCreateInfoKHR', VkDeviceQueueCreateInfo, -- ' closing tick for hsc2hs
-        VkDeviceQueueCreateInfo', VkDeviceQueueGlobalPriorityCreateInfoEXT, -- ' closing tick for hsc2hs
-        VkDeviceQueueGlobalPriorityCreateInfoEXT', VkDeviceQueueInfo2, -- ' closing tick for hsc2hs
-        VkDeviceQueueInfo2') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                    (Storable (..))
-import Graphics.Vulkan.Constants                           (VK_MAX_DEVICE_GROUP_SIZE,
-                                                            pattern VK_MAX_DEVICE_GROUP_SIZE)
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes                     (VkBool32)
-import Graphics.Vulkan.Types.Bitmasks                      (VkDeviceCreateFlags)
-import Graphics.Vulkan.Types.Enum.Device                   (VkDeviceEventTypeEXT,
-                                                            VkDeviceGroupPresentModeFlagBitsKHR,
-                                                            VkDeviceGroupPresentModeFlagsKHR,
-                                                            VkDeviceQueueCreateFlags)
-import Graphics.Vulkan.Types.Enum.Queue                    (VkQueueGlobalPriorityEXT)
-import Graphics.Vulkan.Types.Enum.StructureType            (VkStructureType)
-import Graphics.Vulkan.Types.Handles                       (VkPhysicalDevice)
-import Graphics.Vulkan.Types.Struct.Bind                   (VkBindSparseInfo)
-import Graphics.Vulkan.Types.Struct.Command                (VkCommandBufferBeginInfo)
-import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
-import Graphics.Vulkan.Types.Struct.Present                (VkPresentInfoKHR)
-import Graphics.Vulkan.Types.Struct.Rect                   (VkRect2D)
-import Graphics.Vulkan.Types.Struct.RenderPass             (VkRenderPassBeginInfo)
-import Graphics.Vulkan.Types.Struct.SubmitInfo             (VkSubmitInfo)
-import Graphics.Vulkan.Types.Struct.SwapchainC             (VkSwapchainCreateInfoKHR)
-import System.IO.Unsafe                                    (unsafeDupablePerformIO)
-
--- | > typedef struct VkDeviceCreateInfo {
---   >     VkStructureType sType;
---   >     const void*     pNext;
---   >     VkDeviceCreateFlags    flags;
---   >     uint32_t        queueCreateInfoCount;
---   >     const VkDeviceQueueCreateInfo* pQueueCreateInfos;
---   >     uint32_t               enabledLayerCount;
---   >     const char* const*      ppEnabledLayerNames;
---   >     uint32_t               enabledExtensionCount;
---   >     const char* const*      ppEnabledExtensionNames;
---   >     const VkPhysicalDeviceFeatures* pEnabledFeatures;
---   > } VkDeviceCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceCreateInfo VkDeviceCreateInfo registry at www.khronos.org>
-type VkDeviceCreateInfo = VulkanStruct VkDeviceCreateInfo' -- ' closing tick for hsc2hs
-
-data VkDeviceCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceCreateInfo where
-        sizeOf ~_ = #{size VkDeviceCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceCreateInfo where
-        type StructFields VkDeviceCreateInfo =
-             '["sType", "pNext", "flags", "queueCreateInfoCount", -- ' closing tick for hsc2hs
-               "pQueueCreateInfos", "enabledLayerCount", "ppEnabledLayerNames",
-               "enabledExtensionCount", "ppEnabledExtensionNames",
-               "pEnabledFeatures"]
-        type CUnionType VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkDeviceCreateInfo
-         where
-        type FieldType "sType" VkDeviceCreateInfo = VkStructureType
-        type FieldOptional "sType" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, sType}
-        type FieldIsArray "sType" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkDeviceCreateInfo
-         where
-        type FieldType "pNext" VkDeviceCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, pNext}
-        type FieldIsArray "pNext" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkDeviceCreateInfo
-         where
-        type FieldType "flags" VkDeviceCreateInfo = VkDeviceCreateFlags
-        type FieldOptional "flags" VkDeviceCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, flags}
-        type FieldIsArray "flags" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueCreateInfoCount" VkDeviceCreateInfo where
-        type FieldType "queueCreateInfoCount" VkDeviceCreateInfo = Word32
-        type FieldOptional "queueCreateInfoCount" VkDeviceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueCreateInfoCount" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, queueCreateInfoCount}
-        type FieldIsArray "queueCreateInfoCount" VkDeviceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceCreateInfo, queueCreateInfoCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueCreateInfoCount" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, queueCreateInfoCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, queueCreateInfoCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueCreateInfoCount" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, queueCreateInfoCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pQueueCreateInfos" VkDeviceCreateInfo where
-        type FieldType "pQueueCreateInfos" VkDeviceCreateInfo =
-             Ptr VkDeviceQueueCreateInfo
-        type FieldOptional "pQueueCreateInfos" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pQueueCreateInfos" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, pQueueCreateInfos}
-        type FieldIsArray "pQueueCreateInfos" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceCreateInfo, pQueueCreateInfos}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pQueueCreateInfos" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pQueueCreateInfos})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, pQueueCreateInfos}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pQueueCreateInfos" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, pQueueCreateInfos}
-
-instance {-# OVERLAPPING #-}
-         HasField "enabledLayerCount" VkDeviceCreateInfo where
-        type FieldType "enabledLayerCount" VkDeviceCreateInfo = Word32
-        type FieldOptional "enabledLayerCount" VkDeviceCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "enabledLayerCount" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, enabledLayerCount}
-        type FieldIsArray "enabledLayerCount" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceCreateInfo, enabledLayerCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "enabledLayerCount" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, enabledLayerCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, enabledLayerCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "enabledLayerCount" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, enabledLayerCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "ppEnabledLayerNames" VkDeviceCreateInfo where
-        type FieldType "ppEnabledLayerNames" VkDeviceCreateInfo =
-             Ptr CString
-        type FieldOptional "ppEnabledLayerNames" VkDeviceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "ppEnabledLayerNames" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
-        type FieldIsArray "ppEnabledLayerNames" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ppEnabledLayerNames" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, ppEnabledLayerNames})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ppEnabledLayerNames" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
-
-instance {-# OVERLAPPING #-}
-         HasField "enabledExtensionCount" VkDeviceCreateInfo where
-        type FieldType "enabledExtensionCount" VkDeviceCreateInfo = Word32
-        type FieldOptional "enabledExtensionCount" VkDeviceCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "enabledExtensionCount" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, enabledExtensionCount}
-        type FieldIsArray "enabledExtensionCount" VkDeviceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceCreateInfo, enabledExtensionCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "enabledExtensionCount" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, enabledExtensionCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, enabledExtensionCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "enabledExtensionCount" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, enabledExtensionCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "ppEnabledExtensionNames" VkDeviceCreateInfo where
-        type FieldType "ppEnabledExtensionNames" VkDeviceCreateInfo =
-             Ptr CString
-        type FieldOptional "ppEnabledExtensionNames" VkDeviceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "ppEnabledExtensionNames" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
-        type FieldIsArray "ppEnabledExtensionNames" VkDeviceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ppEnabledExtensionNames" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, ppEnabledExtensionNames})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ppEnabledExtensionNames" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
-
-instance {-# OVERLAPPING #-}
-         HasField "pEnabledFeatures" VkDeviceCreateInfo where
-        type FieldType "pEnabledFeatures" VkDeviceCreateInfo =
-             Ptr VkPhysicalDeviceFeatures
-        type FieldOptional "pEnabledFeatures" VkDeviceCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pEnabledFeatures" VkDeviceCreateInfo =
-             #{offset VkDeviceCreateInfo, pEnabledFeatures}
-        type FieldIsArray "pEnabledFeatures" VkDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceCreateInfo, pEnabledFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pEnabledFeatures" VkDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceCreateInfo, pEnabledFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceCreateInfo, pEnabledFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pEnabledFeatures" VkDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceCreateInfo, pEnabledFeatures}
-
-instance Show VkDeviceCreateInfo where
-        showsPrec d x
-          = showString "VkDeviceCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "queueCreateInfoCount = " .
-                                  showsPrec d (getField @"queueCreateInfoCount" x) .
-                                    showString ", " .
-                                      showString "pQueueCreateInfos = " .
-                                        showsPrec d (getField @"pQueueCreateInfos" x) .
-                                          showString ", " .
-                                            showString "enabledLayerCount = " .
-                                              showsPrec d (getField @"enabledLayerCount" x) .
-                                                showString ", " .
-                                                  showString "ppEnabledLayerNames = " .
-                                                    showsPrec d (getField @"ppEnabledLayerNames" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "enabledExtensionCount = " .
-                                                          showsPrec d
-                                                            (getField @"enabledExtensionCount" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString
-                                                                "ppEnabledExtensionNames = "
-                                                                .
-                                                                showsPrec d
-                                                                  (getField
-                                                                     @"ppEnabledExtensionNames"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "pEnabledFeatures = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"pEnabledFeatures"
-                                                                           x)
-                                                                        . showChar '}'
-
--- | > typedef struct VkDeviceEventInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDeviceEventTypeEXT             deviceEvent;
---   > } VkDeviceEventInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceEventInfoEXT VkDeviceEventInfoEXT registry at www.khronos.org>
-type VkDeviceEventInfoEXT = VulkanStruct VkDeviceEventInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDeviceEventInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceEventInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceEventInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceEventInfoEXT where
-        sizeOf ~_ = #{size VkDeviceEventInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceEventInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceEventInfoEXT where
-        type StructFields VkDeviceEventInfoEXT =
-             '["sType", "pNext", "deviceEvent"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceEventInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkDeviceEventInfoEXT
-         where
-        type FieldType "sType" VkDeviceEventInfoEXT = VkStructureType
-        type FieldOptional "sType" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceEventInfoEXT =
-             #{offset VkDeviceEventInfoEXT, sType}
-        type FieldIsArray "sType" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceEventInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceEventInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceEventInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceEventInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceEventInfoEXT, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkDeviceEventInfoEXT
-         where
-        type FieldType "pNext" VkDeviceEventInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceEventInfoEXT =
-             #{offset VkDeviceEventInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceEventInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceEventInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceEventInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceEventInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceEventInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceEvent" VkDeviceEventInfoEXT where
-        type FieldType "deviceEvent" VkDeviceEventInfoEXT =
-             VkDeviceEventTypeEXT
-        type FieldOptional "deviceEvent" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceEvent" VkDeviceEventInfoEXT =
-             #{offset VkDeviceEventInfoEXT, deviceEvent}
-        type FieldIsArray "deviceEvent" VkDeviceEventInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceEventInfoEXT, deviceEvent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceEvent" VkDeviceEventInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceEventInfoEXT, deviceEvent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceEventInfoEXT, deviceEvent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceEvent" VkDeviceEventInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceEventInfoEXT, deviceEvent}
-
-instance Show VkDeviceEventInfoEXT where
-        showsPrec d x
-          = showString "VkDeviceEventInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "deviceEvent = " .
-                            showsPrec d (getField @"deviceEvent" x) . showChar '}'
-
--- | > typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkBool32                         computeBindingPointSupport;
---   > } VkDeviceGeneratedCommandsFeaturesNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGeneratedCommandsFeaturesNVX VkDeviceGeneratedCommandsFeaturesNVX registry at www.khronos.org>
-type VkDeviceGeneratedCommandsFeaturesNVX =
-     VulkanStruct VkDeviceGeneratedCommandsFeaturesNVX' -- ' closing tick for hsc2hs
-
-data VkDeviceGeneratedCommandsFeaturesNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGeneratedCommandsFeaturesNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGeneratedCommandsFeaturesNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGeneratedCommandsFeaturesNVX where
-        sizeOf ~_
-          = #{size VkDeviceGeneratedCommandsFeaturesNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGeneratedCommandsFeaturesNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGeneratedCommandsFeaturesNVX where
-        type StructFields VkDeviceGeneratedCommandsFeaturesNVX =
-             '["sType", "pNext", "computeBindingPointSupport"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGeneratedCommandsFeaturesNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGeneratedCommandsFeaturesNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGeneratedCommandsFeaturesNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
-        type FieldType "sType" VkDeviceGeneratedCommandsFeaturesNVX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGeneratedCommandsFeaturesNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGeneratedCommandsFeaturesNVX =
-             #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
-        type FieldIsArray "sType" VkDeviceGeneratedCommandsFeaturesNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGeneratedCommandsFeaturesNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
-        type FieldType "pNext" VkDeviceGeneratedCommandsFeaturesNVX =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGeneratedCommandsFeaturesNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGeneratedCommandsFeaturesNVX =
-             #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
-        type FieldIsArray "pNext" VkDeviceGeneratedCommandsFeaturesNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGeneratedCommandsFeaturesNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "computeBindingPointSupport"
-           VkDeviceGeneratedCommandsFeaturesNVX
-         where
-        type FieldType "computeBindingPointSupport"
-               VkDeviceGeneratedCommandsFeaturesNVX
-             = VkBool32
-        type FieldOptional "computeBindingPointSupport"
-               VkDeviceGeneratedCommandsFeaturesNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "computeBindingPointSupport"
-               VkDeviceGeneratedCommandsFeaturesNVX
-             =
-             #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
-        type FieldIsArray "computeBindingPointSupport"
-               VkDeviceGeneratedCommandsFeaturesNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "computeBindingPointSupport"
-           VkDeviceGeneratedCommandsFeaturesNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "computeBindingPointSupport"
-           VkDeviceGeneratedCommandsFeaturesNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
-
-instance Show VkDeviceGeneratedCommandsFeaturesNVX where
-        showsPrec d x
-          = showString "VkDeviceGeneratedCommandsFeaturesNVX {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "computeBindingPointSupport = " .
-                            showsPrec d (getField @"computeBindingPointSupport" x) .
-                              showChar '}'
-
--- | > typedef struct VkDeviceGeneratedCommandsLimitsNVX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         maxIndirectCommandsLayoutTokenCount;
---   >     uint32_t                         maxObjectEntryCounts;
---   >     uint32_t                         minSequenceCountBufferOffsetAlignment;
---   >     uint32_t                         minSequenceIndexBufferOffsetAlignment;
---   >     uint32_t                         minCommandsTokenBufferOffsetAlignment;
---   > } VkDeviceGeneratedCommandsLimitsNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGeneratedCommandsLimitsNVX VkDeviceGeneratedCommandsLimitsNVX registry at www.khronos.org>
-type VkDeviceGeneratedCommandsLimitsNVX =
-     VulkanStruct VkDeviceGeneratedCommandsLimitsNVX' -- ' closing tick for hsc2hs
-
-data VkDeviceGeneratedCommandsLimitsNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGeneratedCommandsLimitsNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGeneratedCommandsLimitsNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGeneratedCommandsLimitsNVX where
-        sizeOf ~_ = #{size VkDeviceGeneratedCommandsLimitsNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGeneratedCommandsLimitsNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGeneratedCommandsLimitsNVX where
-        type StructFields VkDeviceGeneratedCommandsLimitsNVX =
-             '["sType", "pNext", "maxIndirectCommandsLayoutTokenCount", -- ' closing tick for hsc2hs
-               "maxObjectEntryCounts", "minSequenceCountBufferOffsetAlignment",
-               "minSequenceIndexBufferOffsetAlignment",
-               "minCommandsTokenBufferOffsetAlignment"]
-        type CUnionType VkDeviceGeneratedCommandsLimitsNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGeneratedCommandsLimitsNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGeneratedCommandsLimitsNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGeneratedCommandsLimitsNVX where
-        type FieldType "sType" VkDeviceGeneratedCommandsLimitsNVX =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGeneratedCommandsLimitsNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGeneratedCommandsLimitsNVX =
-             #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
-        type FieldIsArray "sType" VkDeviceGeneratedCommandsLimitsNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGeneratedCommandsLimitsNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGeneratedCommandsLimitsNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
-        type FieldType "pNext" VkDeviceGeneratedCommandsLimitsNVX =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGeneratedCommandsLimitsNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGeneratedCommandsLimitsNVX =
-             #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
-        type FieldIsArray "pNext" VkDeviceGeneratedCommandsLimitsNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGeneratedCommandsLimitsNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxIndirectCommandsLayoutTokenCount"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        type FieldType "maxIndirectCommandsLayoutTokenCount"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-        type FieldOptional "maxIndirectCommandsLayoutTokenCount"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxIndirectCommandsLayoutTokenCount"
-               VkDeviceGeneratedCommandsLimitsNVX
-             =
-             #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
-        type FieldIsArray "maxIndirectCommandsLayoutTokenCount"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxIndirectCommandsLayoutTokenCount"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxIndirectCommandsLayoutTokenCount"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxObjectEntryCounts" VkDeviceGeneratedCommandsLimitsNVX
-         where
-        type FieldType "maxObjectEntryCounts"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-        type FieldOptional "maxObjectEntryCounts"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxObjectEntryCounts"
-               VkDeviceGeneratedCommandsLimitsNVX
-             =
-             #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
-        type FieldIsArray "maxObjectEntryCounts"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxObjectEntryCounts"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxObjectEntryCounts"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "minSequenceCountBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        type FieldType "minSequenceCountBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-        type FieldOptional "minSequenceCountBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minSequenceCountBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             =
-             #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
-        type FieldIsArray "minSequenceCountBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minSequenceCountBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minSequenceCountBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "minSequenceIndexBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        type FieldType "minSequenceIndexBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-        type FieldOptional "minSequenceIndexBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minSequenceIndexBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             =
-             #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
-        type FieldIsArray "minSequenceIndexBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minSequenceIndexBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minSequenceIndexBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "minCommandsTokenBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        type FieldType "minCommandsTokenBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = Word32
-        type FieldOptional "minCommandsTokenBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minCommandsTokenBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             =
-             #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
-        type FieldIsArray "minCommandsTokenBufferOffsetAlignment"
-               VkDeviceGeneratedCommandsLimitsNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minCommandsTokenBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minCommandsTokenBufferOffsetAlignment"
-           VkDeviceGeneratedCommandsLimitsNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
-
-instance Show VkDeviceGeneratedCommandsLimitsNVX where
-        showsPrec d x
-          = showString "VkDeviceGeneratedCommandsLimitsNVX {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxIndirectCommandsLayoutTokenCount = " .
-                            showsPrec d (getField @"maxIndirectCommandsLayoutTokenCount" x) .
-                              showString ", " .
-                                showString "maxObjectEntryCounts = " .
-                                  showsPrec d (getField @"maxObjectEntryCounts" x) .
-                                    showString ", " .
-                                      showString "minSequenceCountBufferOffsetAlignment = " .
-                                        showsPrec d
-                                          (getField @"minSequenceCountBufferOffsetAlignment" x)
-                                          .
-                                          showString ", " .
-                                            showString "minSequenceIndexBufferOffsetAlignment = " .
-                                              showsPrec d
-                                                (getField @"minSequenceIndexBufferOffsetAlignment"
-                                                   x)
-                                                .
-                                                showString ", " .
-                                                  showString
-                                                    "minCommandsTokenBufferOffsetAlignment = "
-                                                    .
-                                                    showsPrec d
-                                                      (getField
-                                                         @"minCommandsTokenBufferOffsetAlignment"
-                                                         x)
-                                                      . showChar '}'
-
--- | > typedef struct VkDeviceGroupBindSparseInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         resourceDeviceIndex;
---   >     uint32_t                         memoryDeviceIndex;
---   > } VkDeviceGroupBindSparseInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfo registry at www.khronos.org>
-type VkDeviceGroupBindSparseInfo =
-     VulkanStruct VkDeviceGroupBindSparseInfo' -- ' closing tick for hsc2hs
-
-data VkDeviceGroupBindSparseInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGroupBindSparseInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupBindSparseInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupBindSparseInfo where
-        sizeOf ~_ = #{size VkDeviceGroupBindSparseInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceGroupBindSparseInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGroupBindSparseInfo where
-        type StructFields VkDeviceGroupBindSparseInfo =
-             '["sType", "pNext", "resourceDeviceIndex", "memoryDeviceIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupBindSparseInfo =
-             '[VkBindSparseInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupBindSparseInfo where
-        type FieldType "sType" VkDeviceGroupBindSparseInfo =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupBindSparseInfo =
-             #{offset VkDeviceGroupBindSparseInfo, sType}
-        type FieldIsArray "sType" VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupBindSparseInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGroupBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupBindSparseInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupBindSparseInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGroupBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupBindSparseInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupBindSparseInfo where
-        type FieldType "pNext" VkDeviceGroupBindSparseInfo = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupBindSparseInfo =
-             #{offset VkDeviceGroupBindSparseInfo, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupBindSparseInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupBindSparseInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGroupBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupBindSparseInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupBindSparseInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGroupBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupBindSparseInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "resourceDeviceIndex" VkDeviceGroupBindSparseInfo where
-        type FieldType "resourceDeviceIndex" VkDeviceGroupBindSparseInfo =
-             Word32
-        type FieldOptional "resourceDeviceIndex"
-               VkDeviceGroupBindSparseInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "resourceDeviceIndex" VkDeviceGroupBindSparseInfo
-             =
-             #{offset VkDeviceGroupBindSparseInfo, resourceDeviceIndex}
-        type FieldIsArray "resourceDeviceIndex" VkDeviceGroupBindSparseInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupBindSparseInfo, resourceDeviceIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "resourceDeviceIndex" VkDeviceGroupBindSparseInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupBindSparseInfo, resourceDeviceIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupBindSparseInfo, resourceDeviceIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "resourceDeviceIndex" VkDeviceGroupBindSparseInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupBindSparseInfo, resourceDeviceIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryDeviceIndex" VkDeviceGroupBindSparseInfo where
-        type FieldType "memoryDeviceIndex" VkDeviceGroupBindSparseInfo =
-             Word32
-        type FieldOptional "memoryDeviceIndex" VkDeviceGroupBindSparseInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryDeviceIndex" VkDeviceGroupBindSparseInfo =
-             #{offset VkDeviceGroupBindSparseInfo, memoryDeviceIndex}
-        type FieldIsArray "memoryDeviceIndex" VkDeviceGroupBindSparseInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupBindSparseInfo, memoryDeviceIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryDeviceIndex" VkDeviceGroupBindSparseInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupBindSparseInfo, memoryDeviceIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupBindSparseInfo, memoryDeviceIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryDeviceIndex" VkDeviceGroupBindSparseInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupBindSparseInfo, memoryDeviceIndex}
-
-instance Show VkDeviceGroupBindSparseInfo where
-        showsPrec d x
-          = showString "VkDeviceGroupBindSparseInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "resourceDeviceIndex = " .
-                            showsPrec d (getField @"resourceDeviceIndex" x) .
-                              showString ", " .
-                                showString "memoryDeviceIndex = " .
-                                  showsPrec d (getField @"memoryDeviceIndex" x) . showChar '}'
-
--- | Alias for `VkDeviceGroupBindSparseInfo`
-type VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo
-
--- | > typedef struct VkDeviceGroupCommandBufferBeginInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         deviceMask;
---   > } VkDeviceGroupCommandBufferBeginInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfo registry at www.khronos.org>
-type VkDeviceGroupCommandBufferBeginInfo =
-     VulkanStruct VkDeviceGroupCommandBufferBeginInfo' -- ' closing tick for hsc2hs
-
-data VkDeviceGroupCommandBufferBeginInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGroupCommandBufferBeginInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupCommandBufferBeginInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupCommandBufferBeginInfo where
-        sizeOf ~_ = #{size VkDeviceGroupCommandBufferBeginInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupCommandBufferBeginInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGroupCommandBufferBeginInfo where
-        type StructFields VkDeviceGroupCommandBufferBeginInfo =
-             '["sType", "pNext", "deviceMask"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupCommandBufferBeginInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupCommandBufferBeginInfo =
-             '[VkCommandBufferBeginInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupCommandBufferBeginInfo where
-        type FieldType "sType" VkDeviceGroupCommandBufferBeginInfo =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupCommandBufferBeginInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupCommandBufferBeginInfo =
-             #{offset VkDeviceGroupCommandBufferBeginInfo, sType}
-        type FieldIsArray "sType" VkDeviceGroupCommandBufferBeginInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupCommandBufferBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGroupCommandBufferBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupCommandBufferBeginInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupCommandBufferBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGroupCommandBufferBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupCommandBufferBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupCommandBufferBeginInfo where
-        type FieldType "pNext" VkDeviceGroupCommandBufferBeginInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupCommandBufferBeginInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupCommandBufferBeginInfo =
-             #{offset VkDeviceGroupCommandBufferBeginInfo, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupCommandBufferBeginInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupCommandBufferBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGroupCommandBufferBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupCommandBufferBeginInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupCommandBufferBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGroupCommandBufferBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupCommandBufferBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceMask" VkDeviceGroupCommandBufferBeginInfo where
-        type FieldType "deviceMask" VkDeviceGroupCommandBufferBeginInfo =
-             Word32
-        type FieldOptional "deviceMask" VkDeviceGroupCommandBufferBeginInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceMask" VkDeviceGroupCommandBufferBeginInfo =
-             #{offset VkDeviceGroupCommandBufferBeginInfo, deviceMask}
-        type FieldIsArray "deviceMask" VkDeviceGroupCommandBufferBeginInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupCommandBufferBeginInfo, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceMask" VkDeviceGroupCommandBufferBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupCommandBufferBeginInfo, deviceMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupCommandBufferBeginInfo, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceMask" VkDeviceGroupCommandBufferBeginInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupCommandBufferBeginInfo, deviceMask}
-
-instance Show VkDeviceGroupCommandBufferBeginInfo where
-        showsPrec d x
-          = showString "VkDeviceGroupCommandBufferBeginInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "deviceMask = " .
-                            showsPrec d (getField @"deviceMask" x) . showChar '}'
-
--- | Alias for `VkDeviceGroupCommandBufferBeginInfo`
-type VkDeviceGroupCommandBufferBeginInfoKHR =
-     VkDeviceGroupCommandBufferBeginInfo
-
--- | > typedef struct VkDeviceGroupDeviceCreateInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         physicalDeviceCount;
---   >     const VkPhysicalDevice*  pPhysicalDevices;
---   > } VkDeviceGroupDeviceCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfo registry at www.khronos.org>
-type VkDeviceGroupDeviceCreateInfo =
-     VulkanStruct VkDeviceGroupDeviceCreateInfo' -- ' closing tick for hsc2hs
-
-data VkDeviceGroupDeviceCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGroupDeviceCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupDeviceCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupDeviceCreateInfo where
-        sizeOf ~_ = #{size VkDeviceGroupDeviceCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupDeviceCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGroupDeviceCreateInfo where
-        type StructFields VkDeviceGroupDeviceCreateInfo =
-             '["sType", "pNext", "physicalDeviceCount", "pPhysicalDevices"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupDeviceCreateInfo =
-             '[VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupDeviceCreateInfo where
-        type FieldType "sType" VkDeviceGroupDeviceCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupDeviceCreateInfo =
-             #{offset VkDeviceGroupDeviceCreateInfo, sType}
-        type FieldIsArray "sType" VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupDeviceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGroupDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupDeviceCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupDeviceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGroupDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupDeviceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupDeviceCreateInfo where
-        type FieldType "pNext" VkDeviceGroupDeviceCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupDeviceCreateInfo =
-             #{offset VkDeviceGroupDeviceCreateInfo, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupDeviceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupDeviceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGroupDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupDeviceCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupDeviceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGroupDeviceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupDeviceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "physicalDeviceCount" VkDeviceGroupDeviceCreateInfo where
-        type FieldType "physicalDeviceCount" VkDeviceGroupDeviceCreateInfo
-             = Word32
-        type FieldOptional "physicalDeviceCount"
-               VkDeviceGroupDeviceCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "physicalDeviceCount"
-               VkDeviceGroupDeviceCreateInfo
-             =
-             #{offset VkDeviceGroupDeviceCreateInfo, physicalDeviceCount}
-        type FieldIsArray "physicalDeviceCount"
-               VkDeviceGroupDeviceCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupDeviceCreateInfo, physicalDeviceCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "physicalDeviceCount" VkDeviceGroupDeviceCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupDeviceCreateInfo, physicalDeviceCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupDeviceCreateInfo, physicalDeviceCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "physicalDeviceCount" VkDeviceGroupDeviceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupDeviceCreateInfo, physicalDeviceCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo where
-        type FieldType "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo =
-             Ptr VkPhysicalDevice
-        type FieldOptional "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo =
-             #{offset VkDeviceGroupDeviceCreateInfo, pPhysicalDevices}
-        type FieldIsArray "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupDeviceCreateInfo, pPhysicalDevices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupDeviceCreateInfo, pPhysicalDevices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupDeviceCreateInfo, pPhysicalDevices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pPhysicalDevices" VkDeviceGroupDeviceCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupDeviceCreateInfo, pPhysicalDevices}
-
-instance Show VkDeviceGroupDeviceCreateInfo where
-        showsPrec d x
-          = showString "VkDeviceGroupDeviceCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "physicalDeviceCount = " .
-                            showsPrec d (getField @"physicalDeviceCount" x) .
-                              showString ", " .
-                                showString "pPhysicalDevices = " .
-                                  showsPrec d (getField @"pPhysicalDevices" x) . showChar '}'
-
--- | Alias for `VkDeviceGroupDeviceCreateInfo`
-type VkDeviceGroupDeviceCreateInfoKHR =
-     VkDeviceGroupDeviceCreateInfo
-
--- | > typedef struct VkDeviceGroupPresentCapabilitiesKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         presentMask[VK_MAX_DEVICE_GROUP_SIZE];
---   >     VkDeviceGroupPresentModeFlagsKHR modes;
---   > } VkDeviceGroupPresentCapabilitiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupPresentCapabilitiesKHR VkDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
-type VkDeviceGroupPresentCapabilitiesKHR =
-     VulkanStruct VkDeviceGroupPresentCapabilitiesKHR' -- ' closing tick for hsc2hs
-
-data VkDeviceGroupPresentCapabilitiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGroupPresentCapabilitiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupPresentCapabilitiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupPresentCapabilitiesKHR where
-        sizeOf ~_ = #{size VkDeviceGroupPresentCapabilitiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupPresentCapabilitiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGroupPresentCapabilitiesKHR where
-        type StructFields VkDeviceGroupPresentCapabilitiesKHR =
-             '["sType", "pNext", "presentMask", "modes"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupPresentCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupPresentCapabilitiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupPresentCapabilitiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupPresentCapabilitiesKHR where
-        type FieldType "sType" VkDeviceGroupPresentCapabilitiesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupPresentCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupPresentCapabilitiesKHR =
-             #{offset VkDeviceGroupPresentCapabilitiesKHR, sType}
-        type FieldIsArray "sType" VkDeviceGroupPresentCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentCapabilitiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGroupPresentCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentCapabilitiesKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGroupPresentCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupPresentCapabilitiesKHR where
-        type FieldType "pNext" VkDeviceGroupPresentCapabilitiesKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupPresentCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupPresentCapabilitiesKHR =
-             #{offset VkDeviceGroupPresentCapabilitiesKHR, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupPresentCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentCapabilitiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGroupPresentCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentCapabilitiesKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGroupPresentCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "presentMask" VkDeviceGroupPresentCapabilitiesKHR where
-        type FieldType "presentMask" VkDeviceGroupPresentCapabilitiesKHR =
-             Word32
-        type FieldOptional "presentMask"
-               VkDeviceGroupPresentCapabilitiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "presentMask" VkDeviceGroupPresentCapabilitiesKHR
-             =
-             #{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
-        type FieldIsArray "presentMask" VkDeviceGroupPresentCapabilitiesKHR
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "presentMask" VkDeviceGroupPresentCapabilitiesKHR
-         where
-        type FieldArrayLength "presentMask"
-               VkDeviceGroupPresentCapabilitiesKHR
-             = VK_MAX_DEVICE_GROUP_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
-                      + sizeOf (undefined :: Word32) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "presentMask"
-           VkDeviceGroupPresentCapabilitiesKHR
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "modes" VkDeviceGroupPresentCapabilitiesKHR where
-        type FieldType "modes" VkDeviceGroupPresentCapabilitiesKHR =
-             VkDeviceGroupPresentModeFlagsKHR
-        type FieldOptional "modes" VkDeviceGroupPresentCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "modes" VkDeviceGroupPresentCapabilitiesKHR =
-             #{offset VkDeviceGroupPresentCapabilitiesKHR, modes}
-        type FieldIsArray "modes" VkDeviceGroupPresentCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentCapabilitiesKHR, modes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "modes" VkDeviceGroupPresentCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentCapabilitiesKHR, modes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHR, modes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "modes" VkDeviceGroupPresentCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupPresentCapabilitiesKHR, modes}
-
-instance Show VkDeviceGroupPresentCapabilitiesKHR where
-        showsPrec d x
-          = showString "VkDeviceGroupPresentCapabilitiesKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          (showString "presentMask = [" .
-                             showsPrec d
-                               (let s = sizeOf
-                                          (undefined ::
-                                             FieldType "presentMask"
-                                               VkDeviceGroupPresentCapabilitiesKHR)
-                                    o = fieldOffset @"presentMask"
-                                          @VkDeviceGroupPresentCapabilitiesKHR
-                                    f i
-                                      = peekByteOff (unsafePtr x) i ::
-                                          IO
-                                            (FieldType "presentMask"
-                                               VkDeviceGroupPresentCapabilitiesKHR)
-                                  in
-                                  unsafeDupablePerformIO . mapM f $
-                                    map (\ i -> o + i * s) [0 .. VK_MAX_DEVICE_GROUP_SIZE - 1])
-                               . showChar ']')
-                            .
-                            showString ", " .
-                              showString "modes = " .
-                                showsPrec d (getField @"modes" x) . showChar '}'
-
--- | > typedef struct VkDeviceGroupPresentInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         swapchainCount;
---   >     const uint32_t* pDeviceMasks;
---   >     VkDeviceGroupPresentModeFlagBitsKHR mode;
---   > } VkDeviceGroupPresentInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHR VkDeviceGroupPresentInfoKHR registry at www.khronos.org>
-type VkDeviceGroupPresentInfoKHR =
-     VulkanStruct VkDeviceGroupPresentInfoKHR' -- ' closing tick for hsc2hs
-
-data VkDeviceGroupPresentInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGroupPresentInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupPresentInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupPresentInfoKHR where
-        sizeOf ~_ = #{size VkDeviceGroupPresentInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceGroupPresentInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGroupPresentInfoKHR where
-        type StructFields VkDeviceGroupPresentInfoKHR =
-             '["sType", "pNext", "swapchainCount", "pDeviceMasks", "mode"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupPresentInfoKHR =
-             '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupPresentInfoKHR where
-        type FieldType "sType" VkDeviceGroupPresentInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupPresentInfoKHR =
-             #{offset VkDeviceGroupPresentInfoKHR, sType}
-        type FieldIsArray "sType" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGroupPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGroupPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupPresentInfoKHR where
-        type FieldType "pNext" VkDeviceGroupPresentInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupPresentInfoKHR =
-             #{offset VkDeviceGroupPresentInfoKHR, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGroupPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGroupPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchainCount" VkDeviceGroupPresentInfoKHR where
-        type FieldType "swapchainCount" VkDeviceGroupPresentInfoKHR =
-             Word32
-        type FieldOptional "swapchainCount" VkDeviceGroupPresentInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "swapchainCount" VkDeviceGroupPresentInfoKHR =
-             #{offset VkDeviceGroupPresentInfoKHR, swapchainCount}
-        type FieldIsArray "swapchainCount" VkDeviceGroupPresentInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "swapchainCount" VkDeviceGroupPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHR, swapchainCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "swapchainCount" VkDeviceGroupPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDeviceMasks" VkDeviceGroupPresentInfoKHR where
-        type FieldType "pDeviceMasks" VkDeviceGroupPresentInfoKHR =
-             Ptr Word32
-        type FieldOptional "pDeviceMasks" VkDeviceGroupPresentInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDeviceMasks" VkDeviceGroupPresentInfoKHR =
-             #{offset VkDeviceGroupPresentInfoKHR, pDeviceMasks}
-        type FieldIsArray "pDeviceMasks" VkDeviceGroupPresentInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHR, pDeviceMasks}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDeviceMasks" VkDeviceGroupPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHR, pDeviceMasks})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHR, pDeviceMasks}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDeviceMasks" VkDeviceGroupPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHR, pDeviceMasks}
-
-instance {-# OVERLAPPING #-}
-         HasField "mode" VkDeviceGroupPresentInfoKHR where
-        type FieldType "mode" VkDeviceGroupPresentInfoKHR =
-             VkDeviceGroupPresentModeFlagBitsKHR
-        type FieldOptional "mode" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mode" VkDeviceGroupPresentInfoKHR =
-             #{offset VkDeviceGroupPresentInfoKHR, mode}
-        type FieldIsArray "mode" VkDeviceGroupPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupPresentInfoKHR, mode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mode" VkDeviceGroupPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupPresentInfoKHR, mode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupPresentInfoKHR, mode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mode" VkDeviceGroupPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupPresentInfoKHR, mode}
-
-instance Show VkDeviceGroupPresentInfoKHR where
-        showsPrec d x
-          = showString "VkDeviceGroupPresentInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "swapchainCount = " .
-                            showsPrec d (getField @"swapchainCount" x) .
-                              showString ", " .
-                                showString "pDeviceMasks = " .
-                                  showsPrec d (getField @"pDeviceMasks" x) .
-                                    showString ", " .
-                                      showString "mode = " .
-                                        showsPrec d (getField @"mode" x) . showChar '}'
-
--- | > typedef struct VkDeviceGroupRenderPassBeginInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         deviceMask;
---   >     uint32_t         deviceRenderAreaCount;
---   >     const VkRect2D*  pDeviceRenderAreas;
---   > } VkDeviceGroupRenderPassBeginInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfo registry at www.khronos.org>
-type VkDeviceGroupRenderPassBeginInfo =
-     VulkanStruct VkDeviceGroupRenderPassBeginInfo' -- ' closing tick for hsc2hs
-
-data VkDeviceGroupRenderPassBeginInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGroupRenderPassBeginInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupRenderPassBeginInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupRenderPassBeginInfo where
-        sizeOf ~_ = #{size VkDeviceGroupRenderPassBeginInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupRenderPassBeginInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGroupRenderPassBeginInfo where
-        type StructFields VkDeviceGroupRenderPassBeginInfo =
-             '["sType", "pNext", "deviceMask", "deviceRenderAreaCount", -- ' closing tick for hsc2hs
-               "pDeviceRenderAreas"]
-        type CUnionType VkDeviceGroupRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupRenderPassBeginInfo =
-             '[VkRenderPassBeginInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupRenderPassBeginInfo where
-        type FieldType "sType" VkDeviceGroupRenderPassBeginInfo =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupRenderPassBeginInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupRenderPassBeginInfo =
-             #{offset VkDeviceGroupRenderPassBeginInfo, sType}
-        type FieldIsArray "sType" VkDeviceGroupRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGroupRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGroupRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupRenderPassBeginInfo where
-        type FieldType "pNext" VkDeviceGroupRenderPassBeginInfo = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupRenderPassBeginInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupRenderPassBeginInfo =
-             #{offset VkDeviceGroupRenderPassBeginInfo, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGroupRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGroupRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceMask" VkDeviceGroupRenderPassBeginInfo where
-        type FieldType "deviceMask" VkDeviceGroupRenderPassBeginInfo =
-             Word32
-        type FieldOptional "deviceMask" VkDeviceGroupRenderPassBeginInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceMask" VkDeviceGroupRenderPassBeginInfo =
-             #{offset VkDeviceGroupRenderPassBeginInfo, deviceMask}
-        type FieldIsArray "deviceMask" VkDeviceGroupRenderPassBeginInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfo, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceMask" VkDeviceGroupRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfo, deviceMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceMask" VkDeviceGroupRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceRenderAreaCount" VkDeviceGroupRenderPassBeginInfo
-         where
-        type FieldType "deviceRenderAreaCount"
-               VkDeviceGroupRenderPassBeginInfo
-             = Word32
-        type FieldOptional "deviceRenderAreaCount"
-               VkDeviceGroupRenderPassBeginInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "deviceRenderAreaCount"
-               VkDeviceGroupRenderPassBeginInfo
-             =
-             #{offset VkDeviceGroupRenderPassBeginInfo, deviceRenderAreaCount}
-        type FieldIsArray "deviceRenderAreaCount"
-               VkDeviceGroupRenderPassBeginInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfo, deviceRenderAreaCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceRenderAreaCount"
-           VkDeviceGroupRenderPassBeginInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfo, deviceRenderAreaCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, deviceRenderAreaCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceRenderAreaCount"
-           VkDeviceGroupRenderPassBeginInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, deviceRenderAreaCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDeviceRenderAreas" VkDeviceGroupRenderPassBeginInfo
-         where
-        type FieldType "pDeviceRenderAreas"
-               VkDeviceGroupRenderPassBeginInfo
-             = Ptr VkRect2D
-        type FieldOptional "pDeviceRenderAreas"
-               VkDeviceGroupRenderPassBeginInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDeviceRenderAreas"
-               VkDeviceGroupRenderPassBeginInfo
-             =
-             #{offset VkDeviceGroupRenderPassBeginInfo, pDeviceRenderAreas}
-        type FieldIsArray "pDeviceRenderAreas"
-               VkDeviceGroupRenderPassBeginInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupRenderPassBeginInfo, pDeviceRenderAreas}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDeviceRenderAreas" VkDeviceGroupRenderPassBeginInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupRenderPassBeginInfo, pDeviceRenderAreas})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, pDeviceRenderAreas}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDeviceRenderAreas" VkDeviceGroupRenderPassBeginInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupRenderPassBeginInfo, pDeviceRenderAreas}
-
-instance Show VkDeviceGroupRenderPassBeginInfo where
-        showsPrec d x
-          = showString "VkDeviceGroupRenderPassBeginInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "deviceMask = " .
-                            showsPrec d (getField @"deviceMask" x) .
-                              showString ", " .
-                                showString "deviceRenderAreaCount = " .
-                                  showsPrec d (getField @"deviceRenderAreaCount" x) .
-                                    showString ", " .
-                                      showString "pDeviceRenderAreas = " .
-                                        showsPrec d (getField @"pDeviceRenderAreas" x) .
-                                          showChar '}'
-
--- | Alias for `VkDeviceGroupRenderPassBeginInfo`
-type VkDeviceGroupRenderPassBeginInfoKHR =
-     VkDeviceGroupRenderPassBeginInfo
-
--- | > typedef struct VkDeviceGroupSubmitInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         waitSemaphoreCount;
---   >     const uint32_t*    pWaitSemaphoreDeviceIndices;
---   >     uint32_t         commandBufferCount;
---   >     const uint32_t*    pCommandBufferDeviceMasks;
---   >     uint32_t         signalSemaphoreCount;
---   >     const uint32_t*  pSignalSemaphoreDeviceIndices;
---   > } VkDeviceGroupSubmitInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfo registry at www.khronos.org>
-type VkDeviceGroupSubmitInfo =
-     VulkanStruct VkDeviceGroupSubmitInfo' -- ' closing tick for hsc2hs
-
-data VkDeviceGroupSubmitInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGroupSubmitInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupSubmitInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupSubmitInfo where
-        sizeOf ~_ = #{size VkDeviceGroupSubmitInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceGroupSubmitInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGroupSubmitInfo where
-        type StructFields VkDeviceGroupSubmitInfo =
-             '["sType", "pNext", "waitSemaphoreCount", -- ' closing tick for hsc2hs
-               "pWaitSemaphoreDeviceIndices", "commandBufferCount",
-               "pCommandBufferDeviceMasks", "signalSemaphoreCount",
-               "pSignalSemaphoreDeviceIndices"]
-        type CUnionType VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupSubmitInfo = '[VkSubmitInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupSubmitInfo where
-        type FieldType "sType" VkDeviceGroupSubmitInfo = VkStructureType
-        type FieldOptional "sType" VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupSubmitInfo =
-             #{offset VkDeviceGroupSubmitInfo, sType}
-        type FieldIsArray "sType" VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceGroupSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGroupSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGroupSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupSubmitInfo where
-        type FieldType "pNext" VkDeviceGroupSubmitInfo = Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupSubmitInfo =
-             #{offset VkDeviceGroupSubmitInfo, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceGroupSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGroupSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGroupSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "waitSemaphoreCount" VkDeviceGroupSubmitInfo where
-        type FieldType "waitSemaphoreCount" VkDeviceGroupSubmitInfo =
-             Word32
-        type FieldOptional "waitSemaphoreCount" VkDeviceGroupSubmitInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "waitSemaphoreCount" VkDeviceGroupSubmitInfo =
-             #{offset VkDeviceGroupSubmitInfo, waitSemaphoreCount}
-        type FieldIsArray "waitSemaphoreCount" VkDeviceGroupSubmitInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "waitSemaphoreCount" VkDeviceGroupSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfo, waitSemaphoreCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "waitSemaphoreCount" VkDeviceGroupSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pWaitSemaphoreDeviceIndices" VkDeviceGroupSubmitInfo
-         where
-        type FieldType "pWaitSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfo
-             = Ptr Word32
-        type FieldOptional "pWaitSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pWaitSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfo
-             =
-             #{offset VkDeviceGroupSubmitInfo, pWaitSemaphoreDeviceIndices}
-        type FieldIsArray "pWaitSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfo, pWaitSemaphoreDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pWaitSemaphoreDeviceIndices" VkDeviceGroupSubmitInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfo, pWaitSemaphoreDeviceIndices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfo, pWaitSemaphoreDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pWaitSemaphoreDeviceIndices" VkDeviceGroupSubmitInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfo, pWaitSemaphoreDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         HasField "commandBufferCount" VkDeviceGroupSubmitInfo where
-        type FieldType "commandBufferCount" VkDeviceGroupSubmitInfo =
-             Word32
-        type FieldOptional "commandBufferCount" VkDeviceGroupSubmitInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "commandBufferCount" VkDeviceGroupSubmitInfo =
-             #{offset VkDeviceGroupSubmitInfo, commandBufferCount}
-        type FieldIsArray "commandBufferCount" VkDeviceGroupSubmitInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfo, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "commandBufferCount" VkDeviceGroupSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfo, commandBufferCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfo, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "commandBufferCount" VkDeviceGroupSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfo, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfo where
-        type FieldType "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfo
-             = Ptr Word32
-        type FieldOptional "pCommandBufferDeviceMasks"
-               VkDeviceGroupSubmitInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pCommandBufferDeviceMasks"
-               VkDeviceGroupSubmitInfo
-             =
-             #{offset VkDeviceGroupSubmitInfo, pCommandBufferDeviceMasks}
-        type FieldIsArray "pCommandBufferDeviceMasks"
-               VkDeviceGroupSubmitInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfo, pCommandBufferDeviceMasks}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfo, pCommandBufferDeviceMasks})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfo, pCommandBufferDeviceMasks}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pCommandBufferDeviceMasks" VkDeviceGroupSubmitInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfo, pCommandBufferDeviceMasks}
-
-instance {-# OVERLAPPING #-}
-         HasField "signalSemaphoreCount" VkDeviceGroupSubmitInfo where
-        type FieldType "signalSemaphoreCount" VkDeviceGroupSubmitInfo =
-             Word32
-        type FieldOptional "signalSemaphoreCount" VkDeviceGroupSubmitInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "signalSemaphoreCount" VkDeviceGroupSubmitInfo =
-             #{offset VkDeviceGroupSubmitInfo, signalSemaphoreCount}
-        type FieldIsArray "signalSemaphoreCount" VkDeviceGroupSubmitInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "signalSemaphoreCount" VkDeviceGroupSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfo, signalSemaphoreCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "signalSemaphoreCount" VkDeviceGroupSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSignalSemaphoreDeviceIndices" VkDeviceGroupSubmitInfo
-         where
-        type FieldType "pSignalSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfo
-             = Ptr Word32
-        type FieldOptional "pSignalSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSignalSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfo
-             =
-             #{offset VkDeviceGroupSubmitInfo, pSignalSemaphoreDeviceIndices}
-        type FieldIsArray "pSignalSemaphoreDeviceIndices"
-               VkDeviceGroupSubmitInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSubmitInfo, pSignalSemaphoreDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSignalSemaphoreDeviceIndices"
-           VkDeviceGroupSubmitInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSubmitInfo, pSignalSemaphoreDeviceIndices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSubmitInfo, pSignalSemaphoreDeviceIndices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSignalSemaphoreDeviceIndices"
-           VkDeviceGroupSubmitInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSubmitInfo, pSignalSemaphoreDeviceIndices}
-
-instance Show VkDeviceGroupSubmitInfo where
-        showsPrec d x
-          = showString "VkDeviceGroupSubmitInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "waitSemaphoreCount = " .
-                            showsPrec d (getField @"waitSemaphoreCount" x) .
-                              showString ", " .
-                                showString "pWaitSemaphoreDeviceIndices = " .
-                                  showsPrec d (getField @"pWaitSemaphoreDeviceIndices" x) .
-                                    showString ", " .
-                                      showString "commandBufferCount = " .
-                                        showsPrec d (getField @"commandBufferCount" x) .
-                                          showString ", " .
-                                            showString "pCommandBufferDeviceMasks = " .
-                                              showsPrec d (getField @"pCommandBufferDeviceMasks" x)
-                                                .
-                                                showString ", " .
-                                                  showString "signalSemaphoreCount = " .
-                                                    showsPrec d (getField @"signalSemaphoreCount" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString
-                                                          "pSignalSemaphoreDeviceIndices = "
-                                                          .
-                                                          showsPrec d
-                                                            (getField
-                                                               @"pSignalSemaphoreDeviceIndices"
-                                                               x)
-                                                            . showChar '}'
-
--- | Alias for `VkDeviceGroupSubmitInfo`
-type VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo
-
--- | > typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDeviceGroupPresentModeFlagsKHR                         modes;
---   > } VkDeviceGroupSwapchainCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupSwapchainCreateInfoKHR VkDeviceGroupSwapchainCreateInfoKHR registry at www.khronos.org>
-type VkDeviceGroupSwapchainCreateInfoKHR =
-     VulkanStruct VkDeviceGroupSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
-
-data VkDeviceGroupSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceGroupSwapchainCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceGroupSwapchainCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceGroupSwapchainCreateInfoKHR where
-        sizeOf ~_ = #{size VkDeviceGroupSwapchainCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceGroupSwapchainCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceGroupSwapchainCreateInfoKHR where
-        type StructFields VkDeviceGroupSwapchainCreateInfoKHR =
-             '["sType", "pNext", "modes"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceGroupSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceGroupSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceGroupSwapchainCreateInfoKHR =
-             '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceGroupSwapchainCreateInfoKHR where
-        type FieldType "sType" VkDeviceGroupSwapchainCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceGroupSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceGroupSwapchainCreateInfoKHR =
-             #{offset VkDeviceGroupSwapchainCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkDeviceGroupSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceGroupSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSwapchainCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceGroupSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceGroupSwapchainCreateInfoKHR where
-        type FieldType "pNext" VkDeviceGroupSwapchainCreateInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceGroupSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceGroupSwapchainCreateInfoKHR =
-             #{offset VkDeviceGroupSwapchainCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkDeviceGroupSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceGroupSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSwapchainCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceGroupSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "modes" VkDeviceGroupSwapchainCreateInfoKHR where
-        type FieldType "modes" VkDeviceGroupSwapchainCreateInfoKHR =
-             VkDeviceGroupPresentModeFlagsKHR
-        type FieldOptional "modes" VkDeviceGroupSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "modes" VkDeviceGroupSwapchainCreateInfoKHR =
-             #{offset VkDeviceGroupSwapchainCreateInfoKHR, modes}
-        type FieldIsArray "modes" VkDeviceGroupSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceGroupSwapchainCreateInfoKHR, modes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "modes" VkDeviceGroupSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceGroupSwapchainCreateInfoKHR, modes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHR, modes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "modes" VkDeviceGroupSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceGroupSwapchainCreateInfoKHR, modes}
-
-instance Show VkDeviceGroupSwapchainCreateInfoKHR where
-        showsPrec d x
-          = showString "VkDeviceGroupSwapchainCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "modes = " .
-                            showsPrec d (getField @"modes" x) . showChar '}'
-
--- | > typedef struct VkDeviceQueueCreateInfo {
---   >     VkStructureType sType;
---   >     const void*     pNext;
---   >     VkDeviceQueueCreateFlags    flags;
---   >     uint32_t        queueFamilyIndex;
---   >     uint32_t        queueCount;
---   >     const float*    pQueuePriorities;
---   > } VkDeviceQueueCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueCreateInfo VkDeviceQueueCreateInfo registry at www.khronos.org>
-type VkDeviceQueueCreateInfo =
-     VulkanStruct VkDeviceQueueCreateInfo' -- ' closing tick for hsc2hs
-
-data VkDeviceQueueCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceQueueCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceQueueCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceQueueCreateInfo where
-        sizeOf ~_ = #{size VkDeviceQueueCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceQueueCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceQueueCreateInfo where
-        type StructFields VkDeviceQueueCreateInfo =
-             '["sType", "pNext", "flags", "queueFamilyIndex", "queueCount", -- ' closing tick for hsc2hs
-               "pQueuePriorities"]
-        type CUnionType VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceQueueCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceQueueCreateInfo where
-        type FieldType "sType" VkDeviceQueueCreateInfo = VkStructureType
-        type FieldOptional "sType" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceQueueCreateInfo =
-             #{offset VkDeviceQueueCreateInfo, sType}
-        type FieldIsArray "sType" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceQueueCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceQueueCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceQueueCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceQueueCreateInfo where
-        type FieldType "pNext" VkDeviceQueueCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceQueueCreateInfo =
-             #{offset VkDeviceQueueCreateInfo, pNext}
-        type FieldIsArray "pNext" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceQueueCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceQueueCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceQueueCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDeviceQueueCreateInfo where
-        type FieldType "flags" VkDeviceQueueCreateInfo =
-             VkDeviceQueueCreateFlags
-        type FieldOptional "flags" VkDeviceQueueCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDeviceQueueCreateInfo =
-             #{offset VkDeviceQueueCreateInfo, flags}
-        type FieldIsArray "flags" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceQueueCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDeviceQueueCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDeviceQueueCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFamilyIndex" VkDeviceQueueCreateInfo where
-        type FieldType "queueFamilyIndex" VkDeviceQueueCreateInfo = Word32
-        type FieldOptional "queueFamilyIndex" VkDeviceQueueCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueFamilyIndex" VkDeviceQueueCreateInfo =
-             #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
-        type FieldIsArray "queueFamilyIndex" VkDeviceQueueCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueFamilyIndex" VkDeviceQueueCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, queueFamilyIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueFamilyIndex" VkDeviceQueueCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueCount" VkDeviceQueueCreateInfo where
-        type FieldType "queueCount" VkDeviceQueueCreateInfo = Word32
-        type FieldOptional "queueCount" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueCount" VkDeviceQueueCreateInfo =
-             #{offset VkDeviceQueueCreateInfo, queueCount}
-        type FieldIsArray "queueCount" VkDeviceQueueCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceQueueCreateInfo, queueCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueCount" VkDeviceQueueCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, queueCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, queueCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueCount" VkDeviceQueueCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, queueCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pQueuePriorities" VkDeviceQueueCreateInfo where
-        type FieldType "pQueuePriorities" VkDeviceQueueCreateInfo =
-             Ptr #{type float}
-        type FieldOptional "pQueuePriorities" VkDeviceQueueCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pQueuePriorities" VkDeviceQueueCreateInfo =
-             #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
-        type FieldIsArray "pQueuePriorities" VkDeviceQueueCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pQueuePriorities" VkDeviceQueueCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueCreateInfo, pQueuePriorities})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pQueuePriorities" VkDeviceQueueCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
-
-instance Show VkDeviceQueueCreateInfo where
-        showsPrec d x
-          = showString "VkDeviceQueueCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "queueFamilyIndex = " .
-                                  showsPrec d (getField @"queueFamilyIndex" x) .
-                                    showString ", " .
-                                      showString "queueCount = " .
-                                        showsPrec d (getField @"queueCount" x) .
-                                          showString ", " .
-                                            showString "pQueuePriorities = " .
-                                              showsPrec d (getField @"pQueuePriorities" x) .
-                                                showChar '}'
-
--- | > typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                    pNext;
---   >     VkQueueGlobalPriorityEXT       globalPriority;
---   > } VkDeviceQueueGlobalPriorityCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueGlobalPriorityCreateInfoEXT VkDeviceQueueGlobalPriorityCreateInfoEXT registry at www.khronos.org>
-type VkDeviceQueueGlobalPriorityCreateInfoEXT =
-     VulkanStruct VkDeviceQueueGlobalPriorityCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDeviceQueueGlobalPriorityCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        sizeOf ~_
-          = #{size VkDeviceQueueGlobalPriorityCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDeviceQueueGlobalPriorityCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceQueueGlobalPriorityCreateInfoEXT
-         where
-        type StructFields VkDeviceQueueGlobalPriorityCreateInfoEXT =
-             '["sType", "pNext", "globalPriority"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceQueueGlobalPriorityCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceQueueGlobalPriorityCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceQueueGlobalPriorityCreateInfoEXT =
-             '[VkDeviceQueueCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        type FieldType "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT =
-             #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
-        type FieldIsArray "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceQueueGlobalPriorityCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        type FieldType "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT =
-             Ptr Void
-        type FieldOptional "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT =
-             #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceQueueGlobalPriorityCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "globalPriority" VkDeviceQueueGlobalPriorityCreateInfoEXT
-         where
-        type FieldType "globalPriority"
-               VkDeviceQueueGlobalPriorityCreateInfoEXT
-             = VkQueueGlobalPriorityEXT
-        type FieldOptional "globalPriority"
-               VkDeviceQueueGlobalPriorityCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "globalPriority"
-               VkDeviceQueueGlobalPriorityCreateInfoEXT
-             =
-             #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
-        type FieldIsArray "globalPriority"
-               VkDeviceQueueGlobalPriorityCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "globalPriority"
-           VkDeviceQueueGlobalPriorityCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "globalPriority"
-           VkDeviceQueueGlobalPriorityCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
-
-instance Show VkDeviceQueueGlobalPriorityCreateInfoEXT where
-        showsPrec d x
-          = showString "VkDeviceQueueGlobalPriorityCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "globalPriority = " .
-                            showsPrec d (getField @"globalPriority" x) . showChar '}'
-
--- | > typedef struct VkDeviceQueueInfo2 {
---   >     VkStructureType sType;
---   >     const void*                         pNext;
---   >     VkDeviceQueueCreateFlags            flags;
---   >     uint32_t                            queueFamilyIndex;
---   >     uint32_t                            queueIndex;
---   > } VkDeviceQueueInfo2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueInfo2 VkDeviceQueueInfo2 registry at www.khronos.org>
-type VkDeviceQueueInfo2 = VulkanStruct VkDeviceQueueInfo2' -- ' closing tick for hsc2hs
-
-data VkDeviceQueueInfo2' -- ' closing tick for hsc2hs
-
-instance Eq VkDeviceQueueInfo2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDeviceQueueInfo2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDeviceQueueInfo2 where
-        sizeOf ~_ = #{size VkDeviceQueueInfo2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDeviceQueueInfo2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDeviceQueueInfo2 where
-        type StructFields VkDeviceQueueInfo2 =
-             '["sType", "pNext", "flags", "queueFamilyIndex", "queueIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDeviceQueueInfo2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkDeviceQueueInfo2
-         where
-        type FieldType "sType" VkDeviceQueueInfo2 = VkStructureType
-        type FieldOptional "sType" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDeviceQueueInfo2 =
-             #{offset VkDeviceQueueInfo2, sType}
-        type FieldIsArray "sType" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceQueueInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDeviceQueueInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueInfo2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDeviceQueueInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueInfo2, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkDeviceQueueInfo2
-         where
-        type FieldType "pNext" VkDeviceQueueInfo2 = Ptr Void
-        type FieldOptional "pNext" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDeviceQueueInfo2 =
-             #{offset VkDeviceQueueInfo2, pNext}
-        type FieldIsArray "pNext" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceQueueInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDeviceQueueInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueInfo2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDeviceQueueInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueInfo2, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkDeviceQueueInfo2
-         where
-        type FieldType "flags" VkDeviceQueueInfo2 =
-             VkDeviceQueueCreateFlags
-        type FieldOptional "flags" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDeviceQueueInfo2 =
-             #{offset VkDeviceQueueInfo2, flags}
-        type FieldIsArray "flags" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceQueueInfo2, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDeviceQueueInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueInfo2, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueInfo2, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDeviceQueueInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueInfo2, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFamilyIndex" VkDeviceQueueInfo2 where
-        type FieldType "queueFamilyIndex" VkDeviceQueueInfo2 = Word32
-        type FieldOptional "queueFamilyIndex" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueFamilyIndex" VkDeviceQueueInfo2 =
-             #{offset VkDeviceQueueInfo2, queueFamilyIndex}
-        type FieldIsArray "queueFamilyIndex" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDeviceQueueInfo2, queueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueFamilyIndex" VkDeviceQueueInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueInfo2, queueFamilyIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueInfo2, queueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueFamilyIndex" VkDeviceQueueInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueInfo2, queueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueIndex" VkDeviceQueueInfo2 where
-        type FieldType "queueIndex" VkDeviceQueueInfo2 = Word32
-        type FieldOptional "queueIndex" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueIndex" VkDeviceQueueInfo2 =
-             #{offset VkDeviceQueueInfo2, queueIndex}
-        type FieldIsArray "queueIndex" VkDeviceQueueInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDeviceQueueInfo2, queueIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueIndex" VkDeviceQueueInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDeviceQueueInfo2, queueIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDeviceQueueInfo2, queueIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueIndex" VkDeviceQueueInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDeviceQueueInfo2, queueIndex}
-
-instance Show VkDeviceQueueInfo2 where
-        showsPrec d x
-          = showString "VkDeviceQueueInfo2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "queueFamilyIndex = " .
-                                  showsPrec d (getField @"queueFamilyIndex" x) .
-                                    showString ", " .
-                                      showString "queueIndex = " .
-                                        showsPrec d (getField @"queueIndex" x) . showChar '}'
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Device
+       (VkDeviceCreateInfo, VkDeviceEventInfoEXT,
+        VkDeviceGeneratedCommandsFeaturesNVX,
+        VkDeviceGeneratedCommandsLimitsNVX, VkDeviceGroupBindSparseInfo,
+        VkDeviceGroupBindSparseInfoKHR,
+        VkDeviceGroupCommandBufferBeginInfo,
+        VkDeviceGroupCommandBufferBeginInfoKHR,
+        VkDeviceGroupDeviceCreateInfo, VkDeviceGroupDeviceCreateInfoKHR,
+        VkDeviceGroupPresentCapabilitiesKHR, VkDeviceGroupPresentInfoKHR,
+        VkDeviceGroupRenderPassBeginInfo,
+        VkDeviceGroupRenderPassBeginInfoKHR, VkDeviceGroupSubmitInfo,
+        VkDeviceGroupSubmitInfoKHR, VkDeviceGroupSwapchainCreateInfoKHR,
+        VkDeviceQueueCreateInfo, VkDeviceQueueGlobalPriorityCreateInfoEXT,
+        VkDeviceQueueInfo2)
+       where
+import Graphics.Vulkan.Constants                           (VK_MAX_DEVICE_GROUP_SIZE)
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes                     (VkBool32)
+import Graphics.Vulkan.Types.Bitmasks                      (VkDeviceCreateFlags)
+import Graphics.Vulkan.Types.Enum.Device                   (VkDeviceEventTypeEXT,
+                                                            VkDeviceGroupPresentModeFlagBitsKHR,
+                                                            VkDeviceGroupPresentModeFlagsKHR,
+                                                            VkDeviceQueueCreateFlags)
+import Graphics.Vulkan.Types.Enum.Queue                    (VkQueueGlobalPriorityEXT)
+import Graphics.Vulkan.Types.Enum.StructureType            (VkStructureType)
+import Graphics.Vulkan.Types.Handles                       (VkPhysicalDevice)
+import Graphics.Vulkan.Types.Struct.Bind                   (VkBindSparseInfo)
+import Graphics.Vulkan.Types.Struct.Command                (VkCommandBufferBeginInfo)
+import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
+import Graphics.Vulkan.Types.Struct.Present                (VkPresentInfoKHR)
+import Graphics.Vulkan.Types.Struct.Rect                   (VkRect2D)
+import Graphics.Vulkan.Types.Struct.RenderPass             (VkRenderPassBeginInfo)
+import Graphics.Vulkan.Types.Struct.SubmitInfo             (VkSubmitInfo)
+import Graphics.Vulkan.Types.Struct.SwapchainC             (VkSwapchainCreateInfoKHR)
+
+-- | > typedef struct VkDeviceCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*     pNext;
+--   >     VkDeviceCreateFlags    flags;
+--   >     uint32_t        queueCreateInfoCount;
+--   >     const VkDeviceQueueCreateInfo* pQueueCreateInfos;
+--   >     uint32_t               enabledLayerCount;
+--   >     const char* const*      ppEnabledLayerNames;
+--   >     uint32_t               enabledExtensionCount;
+--   >     const char* const*      ppEnabledExtensionNames;
+--   >     const VkPhysicalDeviceFeatures* pEnabledFeatures;
+--   > } VkDeviceCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceCreateInfo VkDeviceCreateInfo registry at www.khronos.org>
+type VkDeviceCreateInfo = VkStruct VkDeviceCreateInfo' -- ' closing tick for hsc2hs
+
+data VkDeviceCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceCreateInfo where
+    type StructRep VkDeviceCreateInfo =
+         'StructMeta "VkDeviceCreateInfo" VkDeviceCreateInfo  -- ' closing tick for hsc2hs
+                                                             #{size VkDeviceCreateInfo}
+           #{alignment VkDeviceCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDeviceCreateFlags 'True 
+                                                           #{offset VkDeviceCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueCreateInfoCount" Word32 'False 
+                                                              #{offset VkDeviceCreateInfo, queueCreateInfoCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pQueueCreateInfos" (Ptr VkDeviceQueueCreateInfo) -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkDeviceCreateInfo, pQueueCreateInfos}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "enabledLayerCount" Word32 'True 
+                                                          #{offset VkDeviceCreateInfo, enabledLayerCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ppEnabledLayerNames" (Ptr CString) 'False 
+                                                                    #{offset VkDeviceCreateInfo, ppEnabledLayerNames}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "enabledExtensionCount" Word32 'True 
+                                                              #{offset VkDeviceCreateInfo, enabledExtensionCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ppEnabledExtensionNames" (Ptr CString) 'False
+                #{offset VkDeviceCreateInfo, ppEnabledExtensionNames}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pEnabledFeatures" (Ptr VkPhysicalDeviceFeatures) 'True
+                #{offset VkDeviceCreateInfo, pEnabledFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceEventInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDeviceEventTypeEXT             deviceEvent;
+--   > } VkDeviceEventInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceEventInfoEXT VkDeviceEventInfoEXT registry at www.khronos.org>
+type VkDeviceEventInfoEXT = VkStruct VkDeviceEventInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDeviceEventInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceEventInfoEXT where
+    type StructRep VkDeviceEventInfoEXT =
+         'StructMeta "VkDeviceEventInfoEXT" VkDeviceEventInfoEXT  -- ' closing tick for hsc2hs
+                                                                 #{size VkDeviceEventInfoEXT}
+           #{alignment VkDeviceEventInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceEventInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceEventInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceEvent" VkDeviceEventTypeEXT 'False 
+                                                                   #{offset VkDeviceEventInfoEXT, deviceEvent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkBool32                         computeBindingPointSupport;
+--   > } VkDeviceGeneratedCommandsFeaturesNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGeneratedCommandsFeaturesNVX VkDeviceGeneratedCommandsFeaturesNVX registry at www.khronos.org>
+type VkDeviceGeneratedCommandsFeaturesNVX =
+     VkStruct VkDeviceGeneratedCommandsFeaturesNVX' -- ' closing tick for hsc2hs
+
+data VkDeviceGeneratedCommandsFeaturesNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGeneratedCommandsFeaturesNVX where
+    type StructRep VkDeviceGeneratedCommandsFeaturesNVX =
+         'StructMeta "VkDeviceGeneratedCommandsFeaturesNVX" -- ' closing tick for hsc2hs
+           VkDeviceGeneratedCommandsFeaturesNVX
+           #{size VkDeviceGeneratedCommandsFeaturesNVX}
+           #{alignment VkDeviceGeneratedCommandsFeaturesNVX}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGeneratedCommandsFeaturesNVX, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGeneratedCommandsFeaturesNVX, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "computeBindingPointSupport" VkBool32 'False 
+                                                                      #{offset VkDeviceGeneratedCommandsFeaturesNVX, computeBindingPointSupport}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceGeneratedCommandsLimitsNVX {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         maxIndirectCommandsLayoutTokenCount;
+--   >     uint32_t                         maxObjectEntryCounts;
+--   >     uint32_t                         minSequenceCountBufferOffsetAlignment;
+--   >     uint32_t                         minSequenceIndexBufferOffsetAlignment;
+--   >     uint32_t                         minCommandsTokenBufferOffsetAlignment;
+--   > } VkDeviceGeneratedCommandsLimitsNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGeneratedCommandsLimitsNVX VkDeviceGeneratedCommandsLimitsNVX registry at www.khronos.org>
+type VkDeviceGeneratedCommandsLimitsNVX =
+     VkStruct VkDeviceGeneratedCommandsLimitsNVX' -- ' closing tick for hsc2hs
+
+data VkDeviceGeneratedCommandsLimitsNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGeneratedCommandsLimitsNVX where
+    type StructRep VkDeviceGeneratedCommandsLimitsNVX =
+         'StructMeta "VkDeviceGeneratedCommandsLimitsNVX" -- ' closing tick for hsc2hs
+           VkDeviceGeneratedCommandsLimitsNVX
+           #{size VkDeviceGeneratedCommandsLimitsNVX}
+           #{alignment VkDeviceGeneratedCommandsLimitsNVX}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGeneratedCommandsLimitsNVX, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGeneratedCommandsLimitsNVX, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxIndirectCommandsLayoutTokenCount" Word32 'False
+                #{offset VkDeviceGeneratedCommandsLimitsNVX, maxIndirectCommandsLayoutTokenCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxObjectEntryCounts" Word32 'False 
+                                                              #{offset VkDeviceGeneratedCommandsLimitsNVX, maxObjectEntryCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minSequenceCountBufferOffsetAlignment" Word32 'False
+                #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceCountBufferOffsetAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minSequenceIndexBufferOffsetAlignment" Word32 'False
+                #{offset VkDeviceGeneratedCommandsLimitsNVX, minSequenceIndexBufferOffsetAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minCommandsTokenBufferOffsetAlignment" Word32 'False
+                #{offset VkDeviceGeneratedCommandsLimitsNVX, minCommandsTokenBufferOffsetAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceGroupBindSparseInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         resourceDeviceIndex;
+--   >     uint32_t                         memoryDeviceIndex;
+--   > } VkDeviceGroupBindSparseInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfo registry at www.khronos.org>
+type VkDeviceGroupBindSparseInfo =
+     VkStruct VkDeviceGroupBindSparseInfo' -- ' closing tick for hsc2hs
+
+data VkDeviceGroupBindSparseInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGroupBindSparseInfo where
+    type StructRep VkDeviceGroupBindSparseInfo =
+         'StructMeta "VkDeviceGroupBindSparseInfo" -- ' closing tick for hsc2hs
+           VkDeviceGroupBindSparseInfo
+           #{size VkDeviceGroupBindSparseInfo}
+           #{alignment VkDeviceGroupBindSparseInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGroupBindSparseInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGroupBindSparseInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "resourceDeviceIndex" Word32 'False 
+                                                             #{offset VkDeviceGroupBindSparseInfo, resourceDeviceIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryDeviceIndex" Word32 'False 
+                                                           #{offset VkDeviceGroupBindSparseInfo, memoryDeviceIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkBindSparseInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkDeviceGroupBindSparseInfo`
+type VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo
+
+-- | > typedef struct VkDeviceGroupCommandBufferBeginInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         deviceMask;
+--   > } VkDeviceGroupCommandBufferBeginInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfo registry at www.khronos.org>
+type VkDeviceGroupCommandBufferBeginInfo =
+     VkStruct VkDeviceGroupCommandBufferBeginInfo' -- ' closing tick for hsc2hs
+
+data VkDeviceGroupCommandBufferBeginInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGroupCommandBufferBeginInfo where
+    type StructRep VkDeviceGroupCommandBufferBeginInfo =
+         'StructMeta "VkDeviceGroupCommandBufferBeginInfo" -- ' closing tick for hsc2hs
+           VkDeviceGroupCommandBufferBeginInfo
+           #{size VkDeviceGroupCommandBufferBeginInfo}
+           #{alignment VkDeviceGroupCommandBufferBeginInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGroupCommandBufferBeginInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGroupCommandBufferBeginInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceMask" Word32 'False 
+                                                    #{offset VkDeviceGroupCommandBufferBeginInfo, deviceMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkCommandBufferBeginInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkDeviceGroupCommandBufferBeginInfo`
+type VkDeviceGroupCommandBufferBeginInfoKHR =
+     VkDeviceGroupCommandBufferBeginInfo
+
+-- | > typedef struct VkDeviceGroupDeviceCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         physicalDeviceCount;
+--   >     const VkPhysicalDevice*  pPhysicalDevices;
+--   > } VkDeviceGroupDeviceCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfo registry at www.khronos.org>
+type VkDeviceGroupDeviceCreateInfo =
+     VkStruct VkDeviceGroupDeviceCreateInfo' -- ' closing tick for hsc2hs
+
+data VkDeviceGroupDeviceCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGroupDeviceCreateInfo where
+    type StructRep VkDeviceGroupDeviceCreateInfo =
+         'StructMeta "VkDeviceGroupDeviceCreateInfo" -- ' closing tick for hsc2hs
+           VkDeviceGroupDeviceCreateInfo
+           #{size VkDeviceGroupDeviceCreateInfo}
+           #{alignment VkDeviceGroupDeviceCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGroupDeviceCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGroupDeviceCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "physicalDeviceCount" Word32 'True 
+                                                            #{offset VkDeviceGroupDeviceCreateInfo, physicalDeviceCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pPhysicalDevices" (Ptr VkPhysicalDevice) 'False
+                #{offset VkDeviceGroupDeviceCreateInfo, pPhysicalDevices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkDeviceGroupDeviceCreateInfo`
+type VkDeviceGroupDeviceCreateInfoKHR =
+     VkDeviceGroupDeviceCreateInfo
+
+-- | > typedef struct VkDeviceGroupPresentCapabilitiesKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         presentMask[VK_MAX_DEVICE_GROUP_SIZE];
+--   >     VkDeviceGroupPresentModeFlagsKHR modes;
+--   > } VkDeviceGroupPresentCapabilitiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupPresentCapabilitiesKHR VkDeviceGroupPresentCapabilitiesKHR registry at www.khronos.org>
+type VkDeviceGroupPresentCapabilitiesKHR =
+     VkStruct VkDeviceGroupPresentCapabilitiesKHR' -- ' closing tick for hsc2hs
+
+data VkDeviceGroupPresentCapabilitiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGroupPresentCapabilitiesKHR where
+    type StructRep VkDeviceGroupPresentCapabilitiesKHR =
+         'StructMeta "VkDeviceGroupPresentCapabilitiesKHR" -- ' closing tick for hsc2hs
+           VkDeviceGroupPresentCapabilitiesKHR
+           #{size VkDeviceGroupPresentCapabilitiesKHR}
+           #{alignment VkDeviceGroupPresentCapabilitiesKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGroupPresentCapabilitiesKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGroupPresentCapabilitiesKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "presentMask" Word32 'False 
+                                                     #{offset VkDeviceGroupPresentCapabilitiesKHR, presentMask}
+                VK_MAX_DEVICE_GROUP_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "modes" VkDeviceGroupPresentModeFlagsKHR 'False
+                #{offset VkDeviceGroupPresentCapabilitiesKHR, modes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceGroupPresentInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t         swapchainCount;
+--   >     const uint32_t* pDeviceMasks;
+--   >     VkDeviceGroupPresentModeFlagBitsKHR mode;
+--   > } VkDeviceGroupPresentInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupPresentInfoKHR VkDeviceGroupPresentInfoKHR registry at www.khronos.org>
+type VkDeviceGroupPresentInfoKHR =
+     VkStruct VkDeviceGroupPresentInfoKHR' -- ' closing tick for hsc2hs
+
+data VkDeviceGroupPresentInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGroupPresentInfoKHR where
+    type StructRep VkDeviceGroupPresentInfoKHR =
+         'StructMeta "VkDeviceGroupPresentInfoKHR" -- ' closing tick for hsc2hs
+           VkDeviceGroupPresentInfoKHR
+           #{size VkDeviceGroupPresentInfoKHR}
+           #{alignment VkDeviceGroupPresentInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGroupPresentInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGroupPresentInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "swapchainCount" Word32 'True 
+                                                       #{offset VkDeviceGroupPresentInfoKHR, swapchainCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDeviceMasks" (Ptr Word32) 'False 
+                                                            #{offset VkDeviceGroupPresentInfoKHR, pDeviceMasks}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mode" VkDeviceGroupPresentModeFlagBitsKHR 'False
+                #{offset VkDeviceGroupPresentInfoKHR, mode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceGroupRenderPassBeginInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         deviceMask;
+--   >     uint32_t         deviceRenderAreaCount;
+--   >     const VkRect2D*  pDeviceRenderAreas;
+--   > } VkDeviceGroupRenderPassBeginInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfo registry at www.khronos.org>
+type VkDeviceGroupRenderPassBeginInfo =
+     VkStruct VkDeviceGroupRenderPassBeginInfo' -- ' closing tick for hsc2hs
+
+data VkDeviceGroupRenderPassBeginInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGroupRenderPassBeginInfo where
+    type StructRep VkDeviceGroupRenderPassBeginInfo =
+         'StructMeta "VkDeviceGroupRenderPassBeginInfo" -- ' closing tick for hsc2hs
+           VkDeviceGroupRenderPassBeginInfo
+           #{size VkDeviceGroupRenderPassBeginInfo}
+           #{alignment VkDeviceGroupRenderPassBeginInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGroupRenderPassBeginInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGroupRenderPassBeginInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceMask" Word32 'False 
+                                                    #{offset VkDeviceGroupRenderPassBeginInfo, deviceMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceRenderAreaCount" Word32 'True 
+                                                              #{offset VkDeviceGroupRenderPassBeginInfo, deviceRenderAreaCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDeviceRenderAreas" (Ptr VkRect2D) 'False 
+                                                                    #{offset VkDeviceGroupRenderPassBeginInfo, pDeviceRenderAreas}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkRenderPassBeginInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkDeviceGroupRenderPassBeginInfo`
+type VkDeviceGroupRenderPassBeginInfoKHR =
+     VkDeviceGroupRenderPassBeginInfo
+
+-- | > typedef struct VkDeviceGroupSubmitInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t         waitSemaphoreCount;
+--   >     const uint32_t*    pWaitSemaphoreDeviceIndices;
+--   >     uint32_t         commandBufferCount;
+--   >     const uint32_t*    pCommandBufferDeviceMasks;
+--   >     uint32_t         signalSemaphoreCount;
+--   >     const uint32_t*  pSignalSemaphoreDeviceIndices;
+--   > } VkDeviceGroupSubmitInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfo registry at www.khronos.org>
+type VkDeviceGroupSubmitInfo = VkStruct VkDeviceGroupSubmitInfo' -- ' closing tick for hsc2hs
+
+data VkDeviceGroupSubmitInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGroupSubmitInfo where
+    type StructRep VkDeviceGroupSubmitInfo =
+         'StructMeta "VkDeviceGroupSubmitInfo" VkDeviceGroupSubmitInfo -- ' closing tick for hsc2hs
+           #{size VkDeviceGroupSubmitInfo}
+           #{alignment VkDeviceGroupSubmitInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGroupSubmitInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGroupSubmitInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "waitSemaphoreCount" Word32 'True 
+                                                           #{offset VkDeviceGroupSubmitInfo, waitSemaphoreCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pWaitSemaphoreDeviceIndices" (Ptr Word32) 'False
+                #{offset VkDeviceGroupSubmitInfo, pWaitSemaphoreDeviceIndices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "commandBufferCount" Word32 'True 
+                                                           #{offset VkDeviceGroupSubmitInfo, commandBufferCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pCommandBufferDeviceMasks" (Ptr Word32) 'False
+                #{offset VkDeviceGroupSubmitInfo, pCommandBufferDeviceMasks}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "signalSemaphoreCount" Word32 'True 
+                                                             #{offset VkDeviceGroupSubmitInfo, signalSemaphoreCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSignalSemaphoreDeviceIndices" (Ptr Word32) 'False
+                #{offset VkDeviceGroupSubmitInfo, pSignalSemaphoreDeviceIndices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSubmitInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkDeviceGroupSubmitInfo`
+type VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo
+
+-- | > typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDeviceGroupPresentModeFlagsKHR                         modes;
+--   > } VkDeviceGroupSwapchainCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceGroupSwapchainCreateInfoKHR VkDeviceGroupSwapchainCreateInfoKHR registry at www.khronos.org>
+type VkDeviceGroupSwapchainCreateInfoKHR =
+     VkStruct VkDeviceGroupSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
+
+data VkDeviceGroupSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceGroupSwapchainCreateInfoKHR where
+    type StructRep VkDeviceGroupSwapchainCreateInfoKHR =
+         'StructMeta "VkDeviceGroupSwapchainCreateInfoKHR" -- ' closing tick for hsc2hs
+           VkDeviceGroupSwapchainCreateInfoKHR
+           #{size VkDeviceGroupSwapchainCreateInfoKHR}
+           #{alignment VkDeviceGroupSwapchainCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceGroupSwapchainCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceGroupSwapchainCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "modes" VkDeviceGroupPresentModeFlagsKHR 'False
+                #{offset VkDeviceGroupSwapchainCreateInfoKHR, modes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceQueueCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*     pNext;
+--   >     VkDeviceQueueCreateFlags    flags;
+--   >     uint32_t        queueFamilyIndex;
+--   >     uint32_t        queueCount;
+--   >     const float*    pQueuePriorities;
+--   > } VkDeviceQueueCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueCreateInfo VkDeviceQueueCreateInfo registry at www.khronos.org>
+type VkDeviceQueueCreateInfo = VkStruct VkDeviceQueueCreateInfo' -- ' closing tick for hsc2hs
+
+data VkDeviceQueueCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceQueueCreateInfo where
+    type StructRep VkDeviceQueueCreateInfo =
+         'StructMeta "VkDeviceQueueCreateInfo" VkDeviceQueueCreateInfo -- ' closing tick for hsc2hs
+           #{size VkDeviceQueueCreateInfo}
+           #{alignment VkDeviceQueueCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceQueueCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceQueueCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDeviceQueueCreateFlags 'True 
+                                                                #{offset VkDeviceQueueCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueFamilyIndex" Word32 'False 
+                                                          #{offset VkDeviceQueueCreateInfo, queueFamilyIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueCount" Word32 'False 
+                                                    #{offset VkDeviceQueueCreateInfo, queueCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pQueuePriorities" (Ptr  -- ' closing tick for hsc2hs
+                                                 #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkDeviceQueueCreateInfo, pQueuePriorities}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                    pNext;
+--   >     VkQueueGlobalPriorityEXT       globalPriority;
+--   > } VkDeviceQueueGlobalPriorityCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueGlobalPriorityCreateInfoEXT VkDeviceQueueGlobalPriorityCreateInfoEXT registry at www.khronos.org>
+type VkDeviceQueueGlobalPriorityCreateInfoEXT =
+     VkStruct VkDeviceQueueGlobalPriorityCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDeviceQueueGlobalPriorityCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceQueueGlobalPriorityCreateInfoEXT
+         where
+    type StructRep VkDeviceQueueGlobalPriorityCreateInfoEXT =
+         'StructMeta "VkDeviceQueueGlobalPriorityCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkDeviceQueueGlobalPriorityCreateInfoEXT
+           #{size VkDeviceQueueGlobalPriorityCreateInfoEXT}
+           #{alignment VkDeviceQueueGlobalPriorityCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "globalPriority" VkQueueGlobalPriorityEXT 'False
+                #{offset VkDeviceQueueGlobalPriorityCreateInfoEXT, globalPriority}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkDeviceQueueCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDeviceQueueInfo2 {
+--   >     VkStructureType sType;
+--   >     const void*                         pNext;
+--   >     VkDeviceQueueCreateFlags            flags;
+--   >     uint32_t                            queueFamilyIndex;
+--   >     uint32_t                            queueIndex;
+--   > } VkDeviceQueueInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDeviceQueueInfo2 VkDeviceQueueInfo2 registry at www.khronos.org>
+type VkDeviceQueueInfo2 = VkStruct VkDeviceQueueInfo2' -- ' closing tick for hsc2hs
+
+data VkDeviceQueueInfo2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDeviceQueueInfo2 where
+    type StructRep VkDeviceQueueInfo2 =
+         'StructMeta "VkDeviceQueueInfo2" VkDeviceQueueInfo2  -- ' closing tick for hsc2hs
+                                                             #{size VkDeviceQueueInfo2}
+           #{alignment VkDeviceQueueInfo2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDeviceQueueInfo2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDeviceQueueInfo2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDeviceQueueCreateFlags 'False 
+                                                                 #{offset VkDeviceQueueInfo2, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueFamilyIndex" Word32 'False 
+                                                          #{offset VkDeviceQueueInfo2, queueFamilyIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueIndex" Word32 'False 
+                                                    #{offset VkDeviceQueueInfo2, queueIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/DispatchIndirectCommand.hsc b/src-gen/Graphics/Vulkan/Types/Struct/DispatchIndirectCommand.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/DispatchIndirectCommand.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/DispatchIndirectCommand.hsc
@@ -2,17 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.DispatchIndirectCommand
-       (VkDispatchIndirectCommand, VkDispatchIndirectCommand') where -- ' closing tick for hsc2hs
-import Foreign.Storable                 (Storable (..))
+       (VkDispatchIndirectCommand) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDispatchIndirectCommand {
 --   >     uint32_t               x;
@@ -22,140 +18,30 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDispatchIndirectCommand VkDispatchIndirectCommand registry at www.khronos.org>
 type VkDispatchIndirectCommand =
-     VulkanStruct VkDispatchIndirectCommand' -- ' closing tick for hsc2hs
+     VkStruct VkDispatchIndirectCommand' -- ' closing tick for hsc2hs
 
 data VkDispatchIndirectCommand' -- ' closing tick for hsc2hs
 
-instance Eq VkDispatchIndirectCommand where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDispatchIndirectCommand where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDispatchIndirectCommand where
-        sizeOf ~_ = #{size VkDispatchIndirectCommand}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDispatchIndirectCommand}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDispatchIndirectCommand where
-        type StructFields VkDispatchIndirectCommand = '["x", "y", "z"] -- ' closing tick for hsc2hs
-        type CUnionType VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDispatchIndirectCommand = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "x" VkDispatchIndirectCommand
-         where
-        type FieldType "x" VkDispatchIndirectCommand = Word32
-        type FieldOptional "x" VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "x" VkDispatchIndirectCommand =
-             #{offset VkDispatchIndirectCommand, x}
-        type FieldIsArray "x" VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDispatchIndirectCommand, x}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "x" VkDispatchIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, x})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDispatchIndirectCommand, x}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "x" VkDispatchIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDispatchIndirectCommand, x}
-
-instance {-# OVERLAPPING #-} HasField "y" VkDispatchIndirectCommand
-         where
-        type FieldType "y" VkDispatchIndirectCommand = Word32
-        type FieldOptional "y" VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "y" VkDispatchIndirectCommand =
-             #{offset VkDispatchIndirectCommand, y}
-        type FieldIsArray "y" VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDispatchIndirectCommand, y}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "y" VkDispatchIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, y})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDispatchIndirectCommand, y}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "y" VkDispatchIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDispatchIndirectCommand, y}
-
-instance {-# OVERLAPPING #-} HasField "z" VkDispatchIndirectCommand
-         where
-        type FieldType "z" VkDispatchIndirectCommand = Word32
-        type FieldOptional "z" VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "z" VkDispatchIndirectCommand =
-             #{offset VkDispatchIndirectCommand, z}
-        type FieldIsArray "z" VkDispatchIndirectCommand = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDispatchIndirectCommand, z}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "z" VkDispatchIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDispatchIndirectCommand, z})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDispatchIndirectCommand, z}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "z" VkDispatchIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDispatchIndirectCommand, z}
-
-instance Show VkDispatchIndirectCommand where
-        showsPrec d x
-          = showString "VkDispatchIndirectCommand {" .
-              showString "x = " .
-                showsPrec d (getField @"x" x) .
-                  showString ", " .
-                    showString "y = " .
-                      showsPrec d (getField @"y" x) .
-                        showString ", " .
-                          showString "z = " . showsPrec d (getField @"z" x) . showChar '}'
+    type StructRep VkDispatchIndirectCommand =
+         'StructMeta "VkDispatchIndirectCommand" VkDispatchIndirectCommand -- ' closing tick for hsc2hs
+           #{size VkDispatchIndirectCommand}
+           #{alignment VkDispatchIndirectCommand}
+           '[('FieldMeta "x" Word32 'False  -- ' closing tick for hsc2hs
+                                           #{offset VkDispatchIndirectCommand, x}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "y" Word32 'False 
+                                           #{offset VkDispatchIndirectCommand, y}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "z" Word32 'False 
+                                           #{offset VkDispatchIndirectCommand, z}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Display.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Display.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Display.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Display.hsc
@@ -2,3068 +2,685 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Display
-       (VkDisplayEventInfoEXT, VkDisplayEventInfoEXT', -- ' closing tick for hsc2hs
-        VkDisplayModeCreateInfoKHR, VkDisplayModeCreateInfoKHR', -- ' closing tick for hsc2hs
-        VkDisplayModeParametersKHR, VkDisplayModeParametersKHR', -- ' closing tick for hsc2hs
-        VkDisplayModeProperties2KHR, VkDisplayModeProperties2KHR', -- ' closing tick for hsc2hs
-        VkDisplayModePropertiesKHR, VkDisplayModePropertiesKHR', -- ' closing tick for hsc2hs
-        VkDisplayPlaneCapabilities2KHR, VkDisplayPlaneCapabilities2KHR', -- ' closing tick for hsc2hs
-        VkDisplayPlaneCapabilitiesKHR, VkDisplayPlaneCapabilitiesKHR', -- ' closing tick for hsc2hs
-        VkDisplayPlaneInfo2KHR, VkDisplayPlaneInfo2KHR', -- ' closing tick for hsc2hs
-        VkDisplayPlaneProperties2KHR, VkDisplayPlaneProperties2KHR', -- ' closing tick for hsc2hs
-        VkDisplayPlanePropertiesKHR, VkDisplayPlanePropertiesKHR', -- ' closing tick for hsc2hs
-        VkDisplayPowerInfoEXT, VkDisplayPowerInfoEXT', -- ' closing tick for hsc2hs
-        VkDisplayPresentInfoKHR, VkDisplayPresentInfoKHR', -- ' closing tick for hsc2hs
-        VkDisplayProperties2KHR, VkDisplayProperties2KHR', -- ' closing tick for hsc2hs
-        VkDisplayPropertiesKHR, VkDisplayPropertiesKHR', -- ' closing tick for hsc2hs
-        VkDisplaySurfaceCreateInfoKHR, VkDisplaySurfaceCreateInfoKHR') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes          (VkBool32)
-import Graphics.Vulkan.Types.Bitmasks           (VkDisplayModeCreateFlagsKHR,
-                                                 VkDisplaySurfaceCreateFlagsKHR)
-import Graphics.Vulkan.Types.Enum.Display       (VkDisplayEventTypeEXT,
-                                                 VkDisplayPlaneAlphaFlagBitsKHR,
-                                                 VkDisplayPlaneAlphaFlagsKHR,
-                                                 VkDisplayPowerStateEXT)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Enum.Surface       (VkSurfaceTransformFlagBitsKHR,
-                                                 VkSurfaceTransformFlagsKHR)
-import Graphics.Vulkan.Types.Handles            (VkDisplayKHR, VkDisplayModeKHR)
-import Graphics.Vulkan.Types.Struct.Extent      (VkExtent2D)
-import Graphics.Vulkan.Types.Struct.Offset      (VkOffset2D)
-import Graphics.Vulkan.Types.Struct.Present     (VkPresentInfoKHR)
-import Graphics.Vulkan.Types.Struct.Rect        (VkRect2D)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkDisplayEventInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDisplayEventTypeEXT            displayEvent;
---   > } VkDisplayEventInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayEventInfoEXT VkDisplayEventInfoEXT registry at www.khronos.org>
-type VkDisplayEventInfoEXT = VulkanStruct VkDisplayEventInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDisplayEventInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayEventInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayEventInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayEventInfoEXT where
-        sizeOf ~_ = #{size VkDisplayEventInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayEventInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayEventInfoEXT where
-        type StructFields VkDisplayEventInfoEXT =
-             '["sType", "pNext", "displayEvent"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayEventInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkDisplayEventInfoEXT
-         where
-        type FieldType "sType" VkDisplayEventInfoEXT = VkStructureType
-        type FieldOptional "sType" VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayEventInfoEXT =
-             #{offset VkDisplayEventInfoEXT, sType}
-        type FieldIsArray "sType" VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayEventInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayEventInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayEventInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayEventInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayEventInfoEXT, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkDisplayEventInfoEXT
-         where
-        type FieldType "pNext" VkDisplayEventInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayEventInfoEXT =
-             #{offset VkDisplayEventInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayEventInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayEventInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayEventInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayEventInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayEventInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayEvent" VkDisplayEventInfoEXT where
-        type FieldType "displayEvent" VkDisplayEventInfoEXT =
-             VkDisplayEventTypeEXT
-        type FieldOptional "displayEvent" VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayEvent" VkDisplayEventInfoEXT =
-             #{offset VkDisplayEventInfoEXT, displayEvent}
-        type FieldIsArray "displayEvent" VkDisplayEventInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayEventInfoEXT, displayEvent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayEvent" VkDisplayEventInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayEventInfoEXT, displayEvent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayEventInfoEXT, displayEvent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayEvent" VkDisplayEventInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayEventInfoEXT, displayEvent}
-
-instance Show VkDisplayEventInfoEXT where
-        showsPrec d x
-          = showString "VkDisplayEventInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "displayEvent = " .
-                            showsPrec d (getField @"displayEvent" x) . showChar '}'
-
--- | > typedef struct VkDisplayModeCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDisplayModeCreateFlagsKHR      flags;
---   >     VkDisplayModeParametersKHR       parameters;
---   > } VkDisplayModeCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModeCreateInfoKHR VkDisplayModeCreateInfoKHR registry at www.khronos.org>
-type VkDisplayModeCreateInfoKHR =
-     VulkanStruct VkDisplayModeCreateInfoKHR' -- ' closing tick for hsc2hs
-
-data VkDisplayModeCreateInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayModeCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayModeCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayModeCreateInfoKHR where
-        sizeOf ~_ = #{size VkDisplayModeCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayModeCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayModeCreateInfoKHR where
-        type StructFields VkDisplayModeCreateInfoKHR =
-             '["sType", "pNext", "flags", "parameters"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayModeCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDisplayModeCreateInfoKHR where
-        type FieldType "sType" VkDisplayModeCreateInfoKHR = VkStructureType
-        type FieldOptional "sType" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayModeCreateInfoKHR =
-             #{offset VkDisplayModeCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayModeCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayModeCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDisplayModeCreateInfoKHR where
-        type FieldType "pNext" VkDisplayModeCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayModeCreateInfoKHR =
-             #{offset VkDisplayModeCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayModeCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayModeCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDisplayModeCreateInfoKHR where
-        type FieldType "flags" VkDisplayModeCreateInfoKHR =
-             VkDisplayModeCreateFlagsKHR
-        type FieldOptional "flags" VkDisplayModeCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDisplayModeCreateInfoKHR =
-             #{offset VkDisplayModeCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDisplayModeCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDisplayModeCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "parameters" VkDisplayModeCreateInfoKHR where
-        type FieldType "parameters" VkDisplayModeCreateInfoKHR =
-             VkDisplayModeParametersKHR
-        type FieldOptional "parameters" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "parameters" VkDisplayModeCreateInfoKHR =
-             #{offset VkDisplayModeCreateInfoKHR, parameters}
-        type FieldIsArray "parameters" VkDisplayModeCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeCreateInfoKHR, parameters}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "parameters" VkDisplayModeCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeCreateInfoKHR, parameters})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeCreateInfoKHR, parameters}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "parameters" VkDisplayModeCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeCreateInfoKHR, parameters}
-
-instance Show VkDisplayModeCreateInfoKHR where
-        showsPrec d x
-          = showString "VkDisplayModeCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "parameters = " .
-                                  showsPrec d (getField @"parameters" x) . showChar '}'
-
--- | > typedef struct VkDisplayModeParametersKHR {
---   >     VkExtent2D                       visibleRegion;
---   >     uint32_t                         refreshRate;
---   > } VkDisplayModeParametersKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModeParametersKHR VkDisplayModeParametersKHR registry at www.khronos.org>
-type VkDisplayModeParametersKHR =
-     VulkanStruct VkDisplayModeParametersKHR' -- ' closing tick for hsc2hs
-
-data VkDisplayModeParametersKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayModeParametersKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayModeParametersKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayModeParametersKHR where
-        sizeOf ~_ = #{size VkDisplayModeParametersKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayModeParametersKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayModeParametersKHR where
-        type StructFields VkDisplayModeParametersKHR =
-             '["visibleRegion", "refreshRate"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayModeParametersKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayModeParametersKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayModeParametersKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "visibleRegion" VkDisplayModeParametersKHR where
-        type FieldType "visibleRegion" VkDisplayModeParametersKHR =
-             VkExtent2D
-        type FieldOptional "visibleRegion" VkDisplayModeParametersKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "visibleRegion" VkDisplayModeParametersKHR =
-             #{offset VkDisplayModeParametersKHR, visibleRegion}
-        type FieldIsArray "visibleRegion" VkDisplayModeParametersKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeParametersKHR, visibleRegion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "visibleRegion" VkDisplayModeParametersKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeParametersKHR, visibleRegion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeParametersKHR, visibleRegion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "visibleRegion" VkDisplayModeParametersKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeParametersKHR, visibleRegion}
-
-instance {-# OVERLAPPING #-}
-         HasField "refreshRate" VkDisplayModeParametersKHR where
-        type FieldType "refreshRate" VkDisplayModeParametersKHR = Word32
-        type FieldOptional "refreshRate" VkDisplayModeParametersKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "refreshRate" VkDisplayModeParametersKHR =
-             #{offset VkDisplayModeParametersKHR, refreshRate}
-        type FieldIsArray "refreshRate" VkDisplayModeParametersKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeParametersKHR, refreshRate}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "refreshRate" VkDisplayModeParametersKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeParametersKHR, refreshRate})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeParametersKHR, refreshRate}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "refreshRate" VkDisplayModeParametersKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeParametersKHR, refreshRate}
-
-instance Show VkDisplayModeParametersKHR where
-        showsPrec d x
-          = showString "VkDisplayModeParametersKHR {" .
-              showString "visibleRegion = " .
-                showsPrec d (getField @"visibleRegion" x) .
-                  showString ", " .
-                    showString "refreshRate = " .
-                      showsPrec d (getField @"refreshRate" x) . showChar '}'
-
--- | > typedef struct VkDisplayModeProperties2KHR {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkDisplayModePropertiesKHR displayModeProperties;
---   > } VkDisplayModeProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModeProperties2KHR VkDisplayModeProperties2KHR registry at www.khronos.org>
-type VkDisplayModeProperties2KHR =
-     VulkanStruct VkDisplayModeProperties2KHR' -- ' closing tick for hsc2hs
-
-data VkDisplayModeProperties2KHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayModeProperties2KHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayModeProperties2KHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayModeProperties2KHR where
-        sizeOf ~_ = #{size VkDisplayModeProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayModeProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayModeProperties2KHR where
-        type StructFields VkDisplayModeProperties2KHR =
-             '["sType", "pNext", "displayModeProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayModeProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayModeProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDisplayModeProperties2KHR where
-        type FieldType "sType" VkDisplayModeProperties2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayModeProperties2KHR =
-             #{offset VkDisplayModeProperties2KHR, sType}
-        type FieldIsArray "sType" VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayModeProperties2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeProperties2KHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayModeProperties2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDisplayModeProperties2KHR where
-        type FieldType "pNext" VkDisplayModeProperties2KHR = Ptr Void
-        type FieldOptional "pNext" VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayModeProperties2KHR =
-             #{offset VkDisplayModeProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkDisplayModeProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayModeProperties2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeProperties2KHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayModeProperties2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayModeProperties" VkDisplayModeProperties2KHR where
-        type FieldType "displayModeProperties" VkDisplayModeProperties2KHR
-             = VkDisplayModePropertiesKHR
-        type FieldOptional "displayModeProperties"
-               VkDisplayModeProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayModeProperties"
-               VkDisplayModeProperties2KHR
-             =
-             #{offset VkDisplayModeProperties2KHR, displayModeProperties}
-        type FieldIsArray "displayModeProperties"
-               VkDisplayModeProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModeProperties2KHR, displayModeProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayModeProperties" VkDisplayModeProperties2KHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModeProperties2KHR, displayModeProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModeProperties2KHR, displayModeProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayModeProperties" VkDisplayModeProperties2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModeProperties2KHR, displayModeProperties}
-
-instance Show VkDisplayModeProperties2KHR where
-        showsPrec d x
-          = showString "VkDisplayModeProperties2KHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "displayModeProperties = " .
-                            showsPrec d (getField @"displayModeProperties" x) . showChar '}'
-
--- | > typedef struct VkDisplayModePropertiesKHR {
---   >     VkDisplayModeKHR                 displayMode;
---   >     VkDisplayModeParametersKHR       parameters;
---   > } VkDisplayModePropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModePropertiesKHR VkDisplayModePropertiesKHR registry at www.khronos.org>
-type VkDisplayModePropertiesKHR =
-     VulkanStruct VkDisplayModePropertiesKHR' -- ' closing tick for hsc2hs
-
-data VkDisplayModePropertiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayModePropertiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayModePropertiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayModePropertiesKHR where
-        sizeOf ~_ = #{size VkDisplayModePropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayModePropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayModePropertiesKHR where
-        type StructFields VkDisplayModePropertiesKHR =
-             '["displayMode", "parameters"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayModePropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayModePropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayModePropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "displayMode" VkDisplayModePropertiesKHR where
-        type FieldType "displayMode" VkDisplayModePropertiesKHR =
-             VkDisplayModeKHR
-        type FieldOptional "displayMode" VkDisplayModePropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayMode" VkDisplayModePropertiesKHR =
-             #{offset VkDisplayModePropertiesKHR, displayMode}
-        type FieldIsArray "displayMode" VkDisplayModePropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModePropertiesKHR, displayMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayMode" VkDisplayModePropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModePropertiesKHR, displayMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModePropertiesKHR, displayMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayMode" VkDisplayModePropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModePropertiesKHR, displayMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "parameters" VkDisplayModePropertiesKHR where
-        type FieldType "parameters" VkDisplayModePropertiesKHR =
-             VkDisplayModeParametersKHR
-        type FieldOptional "parameters" VkDisplayModePropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "parameters" VkDisplayModePropertiesKHR =
-             #{offset VkDisplayModePropertiesKHR, parameters}
-        type FieldIsArray "parameters" VkDisplayModePropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayModePropertiesKHR, parameters}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "parameters" VkDisplayModePropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayModePropertiesKHR, parameters})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayModePropertiesKHR, parameters}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "parameters" VkDisplayModePropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayModePropertiesKHR, parameters}
-
-instance Show VkDisplayModePropertiesKHR where
-        showsPrec d x
-          = showString "VkDisplayModePropertiesKHR {" .
-              showString "displayMode = " .
-                showsPrec d (getField @"displayMode" x) .
-                  showString ", " .
-                    showString "parameters = " .
-                      showsPrec d (getField @"parameters" x) . showChar '}'
-
--- | > typedef struct VkDisplayPlaneCapabilities2KHR {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkDisplayPlaneCapabilitiesKHR capabilities;
---   > } VkDisplayPlaneCapabilities2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneCapabilities2KHR VkDisplayPlaneCapabilities2KHR registry at www.khronos.org>
-type VkDisplayPlaneCapabilities2KHR =
-     VulkanStruct VkDisplayPlaneCapabilities2KHR' -- ' closing tick for hsc2hs
-
-data VkDisplayPlaneCapabilities2KHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayPlaneCapabilities2KHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayPlaneCapabilities2KHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayPlaneCapabilities2KHR where
-        sizeOf ~_ = #{size VkDisplayPlaneCapabilities2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDisplayPlaneCapabilities2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayPlaneCapabilities2KHR where
-        type StructFields VkDisplayPlaneCapabilities2KHR =
-             '["sType", "pNext", "capabilities"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayPlaneCapabilities2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayPlaneCapabilities2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDisplayPlaneCapabilities2KHR where
-        type FieldType "sType" VkDisplayPlaneCapabilities2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayPlaneCapabilities2KHR =
-             #{offset VkDisplayPlaneCapabilities2KHR, sType}
-        type FieldIsArray "sType" VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilities2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayPlaneCapabilities2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilities2KHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilities2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayPlaneCapabilities2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilities2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDisplayPlaneCapabilities2KHR where
-        type FieldType "pNext" VkDisplayPlaneCapabilities2KHR = Ptr Void
-        type FieldOptional "pNext" VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayPlaneCapabilities2KHR =
-             #{offset VkDisplayPlaneCapabilities2KHR, pNext}
-        type FieldIsArray "pNext" VkDisplayPlaneCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilities2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayPlaneCapabilities2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilities2KHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilities2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayPlaneCapabilities2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilities2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "capabilities" VkDisplayPlaneCapabilities2KHR where
-        type FieldType "capabilities" VkDisplayPlaneCapabilities2KHR =
-             VkDisplayPlaneCapabilitiesKHR
-        type FieldOptional "capabilities" VkDisplayPlaneCapabilities2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "capabilities" VkDisplayPlaneCapabilities2KHR =
-             #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
-        type FieldIsArray "capabilities" VkDisplayPlaneCapabilities2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "capabilities" VkDisplayPlaneCapabilities2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilities2KHR, capabilities})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "capabilities" VkDisplayPlaneCapabilities2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
-
-instance Show VkDisplayPlaneCapabilities2KHR where
-        showsPrec d x
-          = showString "VkDisplayPlaneCapabilities2KHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "capabilities = " .
-                            showsPrec d (getField @"capabilities" x) . showChar '}'
-
--- | > typedef struct VkDisplayPlaneCapabilitiesKHR {
---   >     VkDisplayPlaneAlphaFlagsKHR      supportedAlpha;
---   >     VkOffset2D                       minSrcPosition;
---   >     VkOffset2D                       maxSrcPosition;
---   >     VkExtent2D                       minSrcExtent;
---   >     VkExtent2D                       maxSrcExtent;
---   >     VkOffset2D                       minDstPosition;
---   >     VkOffset2D                       maxDstPosition;
---   >     VkExtent2D                       minDstExtent;
---   >     VkExtent2D                       maxDstExtent;
---   > } VkDisplayPlaneCapabilitiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneCapabilitiesKHR VkDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
-type VkDisplayPlaneCapabilitiesKHR =
-     VulkanStruct VkDisplayPlaneCapabilitiesKHR' -- ' closing tick for hsc2hs
-
-data VkDisplayPlaneCapabilitiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayPlaneCapabilitiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayPlaneCapabilitiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayPlaneCapabilitiesKHR where
-        sizeOf ~_ = #{size VkDisplayPlaneCapabilitiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDisplayPlaneCapabilitiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayPlaneCapabilitiesKHR where
-        type StructFields VkDisplayPlaneCapabilitiesKHR =
-             '["supportedAlpha", "minSrcPosition", "maxSrcPosition", -- ' closing tick for hsc2hs
-               "minSrcExtent", "maxSrcExtent", "minDstPosition", "maxDstPosition",
-               "minDstExtent", "maxDstExtent"]
-        type CUnionType VkDisplayPlaneCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayPlaneCapabilitiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayPlaneCapabilitiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
-             VkDisplayPlaneAlphaFlagsKHR
-        type FieldOptional "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
-        type FieldIsArray "supportedAlpha" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedAlpha" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
-
-instance {-# OVERLAPPING #-}
-         HasField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "minSrcPosition" VkDisplayPlaneCapabilitiesKHR =
-             VkOffset2D
-        type FieldOptional "minSrcPosition" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minSrcPosition" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
-        type FieldIsArray "minSrcPosition" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minSrcPosition" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR =
-             VkOffset2D
-        type FieldOptional "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
-        type FieldIsArray "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSrcPosition" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
-
-instance {-# OVERLAPPING #-}
-         HasField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "minSrcExtent" VkDisplayPlaneCapabilitiesKHR =
-             VkExtent2D
-        type FieldOptional "minSrcExtent" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minSrcExtent" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
-        type FieldIsArray "minSrcExtent" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minSrcExtent" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR =
-             VkExtent2D
-        type FieldOptional "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
-        type FieldIsArray "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSrcExtent" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "minDstPosition" VkDisplayPlaneCapabilitiesKHR =
-             VkOffset2D
-        type FieldOptional "minDstPosition" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minDstPosition" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
-        type FieldIsArray "minDstPosition" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minDstPosition" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "maxDstPosition" VkDisplayPlaneCapabilitiesKHR =
-             VkOffset2D
-        type FieldOptional "maxDstPosition" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDstPosition" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
-        type FieldIsArray "maxDstPosition" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDstPosition" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
-
-instance {-# OVERLAPPING #-}
-         HasField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "minDstExtent" VkDisplayPlaneCapabilitiesKHR =
-             VkExtent2D
-        type FieldOptional "minDstExtent" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minDstExtent" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
-        type FieldIsArray "minDstExtent" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minDstExtent" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR where
-        type FieldType "maxDstExtent" VkDisplayPlaneCapabilitiesKHR =
-             VkExtent2D
-        type FieldOptional "maxDstExtent" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDstExtent" VkDisplayPlaneCapabilitiesKHR =
-             #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
-        type FieldIsArray "maxDstExtent" VkDisplayPlaneCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDstExtent" VkDisplayPlaneCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
-
-instance Show VkDisplayPlaneCapabilitiesKHR where
-        showsPrec d x
-          = showString "VkDisplayPlaneCapabilitiesKHR {" .
-              showString "supportedAlpha = " .
-                showsPrec d (getField @"supportedAlpha" x) .
-                  showString ", " .
-                    showString "minSrcPosition = " .
-                      showsPrec d (getField @"minSrcPosition" x) .
-                        showString ", " .
-                          showString "maxSrcPosition = " .
-                            showsPrec d (getField @"maxSrcPosition" x) .
-                              showString ", " .
-                                showString "minSrcExtent = " .
-                                  showsPrec d (getField @"minSrcExtent" x) .
-                                    showString ", " .
-                                      showString "maxSrcExtent = " .
-                                        showsPrec d (getField @"maxSrcExtent" x) .
-                                          showString ", " .
-                                            showString "minDstPosition = " .
-                                              showsPrec d (getField @"minDstPosition" x) .
-                                                showString ", " .
-                                                  showString "maxDstPosition = " .
-                                                    showsPrec d (getField @"maxDstPosition" x) .
-                                                      showString ", " .
-                                                        showString "minDstExtent = " .
-                                                          showsPrec d (getField @"minDstExtent" x) .
-                                                            showString ", " .
-                                                              showString "maxDstExtent = " .
-                                                                showsPrec d
-                                                                  (getField @"maxDstExtent" x)
-                                                                  . showChar '}'
-
--- | > typedef struct VkDisplayPlaneInfo2KHR {
---   >     VkStructureType sType;
---   >     const void* pNext;
---   >     VkDisplayModeKHR mode;
---   >     uint32_t planeIndex;
---   > } VkDisplayPlaneInfo2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneInfo2KHR VkDisplayPlaneInfo2KHR registry at www.khronos.org>
-type VkDisplayPlaneInfo2KHR = VulkanStruct VkDisplayPlaneInfo2KHR' -- ' closing tick for hsc2hs
-
-data VkDisplayPlaneInfo2KHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayPlaneInfo2KHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayPlaneInfo2KHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayPlaneInfo2KHR where
-        sizeOf ~_ = #{size VkDisplayPlaneInfo2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayPlaneInfo2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayPlaneInfo2KHR where
-        type StructFields VkDisplayPlaneInfo2KHR =
-             '["sType", "pNext", "mode", "planeIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayPlaneInfo2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDisplayPlaneInfo2KHR where
-        type FieldType "sType" VkDisplayPlaneInfo2KHR = VkStructureType
-        type FieldOptional "sType" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayPlaneInfo2KHR =
-             #{offset VkDisplayPlaneInfo2KHR, sType}
-        type FieldIsArray "sType" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayPlaneInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayPlaneInfo2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneInfo2KHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayPlaneInfo2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDisplayPlaneInfo2KHR where
-        type FieldType "pNext" VkDisplayPlaneInfo2KHR = Ptr Void
-        type FieldOptional "pNext" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayPlaneInfo2KHR =
-             #{offset VkDisplayPlaneInfo2KHR, pNext}
-        type FieldIsArray "pNext" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayPlaneInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayPlaneInfo2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneInfo2KHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayPlaneInfo2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-} HasField "mode" VkDisplayPlaneInfo2KHR
-         where
-        type FieldType "mode" VkDisplayPlaneInfo2KHR = VkDisplayModeKHR
-        type FieldOptional "mode" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mode" VkDisplayPlaneInfo2KHR =
-             #{offset VkDisplayPlaneInfo2KHR, mode}
-        type FieldIsArray "mode" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayPlaneInfo2KHR, mode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mode" VkDisplayPlaneInfo2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneInfo2KHR, mode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneInfo2KHR, mode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mode" VkDisplayPlaneInfo2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneInfo2KHR, mode}
-
-instance {-# OVERLAPPING #-}
-         HasField "planeIndex" VkDisplayPlaneInfo2KHR where
-        type FieldType "planeIndex" VkDisplayPlaneInfo2KHR = Word32
-        type FieldOptional "planeIndex" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "planeIndex" VkDisplayPlaneInfo2KHR =
-             #{offset VkDisplayPlaneInfo2KHR, planeIndex}
-        type FieldIsArray "planeIndex" VkDisplayPlaneInfo2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneInfo2KHR, planeIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "planeIndex" VkDisplayPlaneInfo2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneInfo2KHR, planeIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneInfo2KHR, planeIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "planeIndex" VkDisplayPlaneInfo2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneInfo2KHR, planeIndex}
-
-instance Show VkDisplayPlaneInfo2KHR where
-        showsPrec d x
-          = showString "VkDisplayPlaneInfo2KHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "mode = " .
-                            showsPrec d (getField @"mode" x) .
-                              showString ", " .
-                                showString "planeIndex = " .
-                                  showsPrec d (getField @"planeIndex" x) . showChar '}'
-
--- | > typedef struct VkDisplayPlaneProperties2KHR {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkDisplayPlanePropertiesKHR displayPlaneProperties;
---   > } VkDisplayPlaneProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneProperties2KHR VkDisplayPlaneProperties2KHR registry at www.khronos.org>
-type VkDisplayPlaneProperties2KHR =
-     VulkanStruct VkDisplayPlaneProperties2KHR' -- ' closing tick for hsc2hs
-
-data VkDisplayPlaneProperties2KHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayPlaneProperties2KHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayPlaneProperties2KHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayPlaneProperties2KHR where
-        sizeOf ~_ = #{size VkDisplayPlaneProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDisplayPlaneProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayPlaneProperties2KHR where
-        type StructFields VkDisplayPlaneProperties2KHR =
-             '["sType", "pNext", "displayPlaneProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayPlaneProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayPlaneProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDisplayPlaneProperties2KHR where
-        type FieldType "sType" VkDisplayPlaneProperties2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayPlaneProperties2KHR =
-             #{offset VkDisplayPlaneProperties2KHR, sType}
-        type FieldIsArray "sType" VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayPlaneProperties2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneProperties2KHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayPlaneProperties2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDisplayPlaneProperties2KHR where
-        type FieldType "pNext" VkDisplayPlaneProperties2KHR = Ptr Void
-        type FieldOptional "pNext" VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayPlaneProperties2KHR =
-             #{offset VkDisplayPlaneProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkDisplayPlaneProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayPlaneProperties2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneProperties2KHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayPlaneProperties2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayPlaneProperties" VkDisplayPlaneProperties2KHR
-         where
-        type FieldType "displayPlaneProperties"
-               VkDisplayPlaneProperties2KHR
-             = VkDisplayPlanePropertiesKHR
-        type FieldOptional "displayPlaneProperties"
-               VkDisplayPlaneProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayPlaneProperties"
-               VkDisplayPlaneProperties2KHR
-             =
-             #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
-        type FieldIsArray "displayPlaneProperties"
-               VkDisplayPlaneProperties2KHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayPlaneProperties" VkDisplayPlaneProperties2KHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayPlaneProperties" VkDisplayPlaneProperties2KHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
-
-instance Show VkDisplayPlaneProperties2KHR where
-        showsPrec d x
-          = showString "VkDisplayPlaneProperties2KHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "displayPlaneProperties = " .
-                            showsPrec d (getField @"displayPlaneProperties" x) . showChar '}'
-
--- | > typedef struct VkDisplayPlanePropertiesKHR {
---   >     VkDisplayKHR                     currentDisplay;
---   >     uint32_t                         currentStackIndex;
---   > } VkDisplayPlanePropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlanePropertiesKHR VkDisplayPlanePropertiesKHR registry at www.khronos.org>
-type VkDisplayPlanePropertiesKHR =
-     VulkanStruct VkDisplayPlanePropertiesKHR' -- ' closing tick for hsc2hs
-
-data VkDisplayPlanePropertiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayPlanePropertiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayPlanePropertiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayPlanePropertiesKHR where
-        sizeOf ~_ = #{size VkDisplayPlanePropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayPlanePropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayPlanePropertiesKHR where
-        type StructFields VkDisplayPlanePropertiesKHR =
-             '["currentDisplay", "currentStackIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayPlanePropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayPlanePropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayPlanePropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "currentDisplay" VkDisplayPlanePropertiesKHR where
-        type FieldType "currentDisplay" VkDisplayPlanePropertiesKHR =
-             VkDisplayKHR
-        type FieldOptional "currentDisplay" VkDisplayPlanePropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "currentDisplay" VkDisplayPlanePropertiesKHR =
-             #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
-        type FieldIsArray "currentDisplay" VkDisplayPlanePropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "currentDisplay" VkDisplayPlanePropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlanePropertiesKHR, currentDisplay})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "currentDisplay" VkDisplayPlanePropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
-
-instance {-# OVERLAPPING #-}
-         HasField "currentStackIndex" VkDisplayPlanePropertiesKHR where
-        type FieldType "currentStackIndex" VkDisplayPlanePropertiesKHR =
-             Word32
-        type FieldOptional "currentStackIndex" VkDisplayPlanePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "currentStackIndex" VkDisplayPlanePropertiesKHR =
-             #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
-        type FieldIsArray "currentStackIndex" VkDisplayPlanePropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "currentStackIndex" VkDisplayPlanePropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPlanePropertiesKHR, currentStackIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "currentStackIndex" VkDisplayPlanePropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
-
-instance Show VkDisplayPlanePropertiesKHR where
-        showsPrec d x
-          = showString "VkDisplayPlanePropertiesKHR {" .
-              showString "currentDisplay = " .
-                showsPrec d (getField @"currentDisplay" x) .
-                  showString ", " .
-                    showString "currentStackIndex = " .
-                      showsPrec d (getField @"currentStackIndex" x) . showChar '}'
-
--- | > typedef struct VkDisplayPowerInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDisplayPowerStateEXT           powerState;
---   > } VkDisplayPowerInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPowerInfoEXT VkDisplayPowerInfoEXT registry at www.khronos.org>
-type VkDisplayPowerInfoEXT = VulkanStruct VkDisplayPowerInfoEXT' -- ' closing tick for hsc2hs
-
-data VkDisplayPowerInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayPowerInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayPowerInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayPowerInfoEXT where
-        sizeOf ~_ = #{size VkDisplayPowerInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayPowerInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayPowerInfoEXT where
-        type StructFields VkDisplayPowerInfoEXT =
-             '["sType", "pNext", "powerState"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayPowerInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkDisplayPowerInfoEXT
-         where
-        type FieldType "sType" VkDisplayPowerInfoEXT = VkStructureType
-        type FieldOptional "sType" VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayPowerInfoEXT =
-             #{offset VkDisplayPowerInfoEXT, sType}
-        type FieldIsArray "sType" VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayPowerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayPowerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPowerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayPowerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkDisplayPowerInfoEXT
-         where
-        type FieldType "pNext" VkDisplayPowerInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayPowerInfoEXT =
-             #{offset VkDisplayPowerInfoEXT, pNext}
-        type FieldIsArray "pNext" VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayPowerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayPowerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPowerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayPowerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "powerState" VkDisplayPowerInfoEXT where
-        type FieldType "powerState" VkDisplayPowerInfoEXT =
-             VkDisplayPowerStateEXT
-        type FieldOptional "powerState" VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "powerState" VkDisplayPowerInfoEXT =
-             #{offset VkDisplayPowerInfoEXT, powerState}
-        type FieldIsArray "powerState" VkDisplayPowerInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPowerInfoEXT, powerState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "powerState" VkDisplayPowerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPowerInfoEXT, powerState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPowerInfoEXT, powerState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "powerState" VkDisplayPowerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPowerInfoEXT, powerState}
-
-instance Show VkDisplayPowerInfoEXT where
-        showsPrec d x
-          = showString "VkDisplayPowerInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "powerState = " .
-                            showsPrec d (getField @"powerState" x) . showChar '}'
-
--- | > typedef struct VkDisplayPresentInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkRect2D                         srcRect;
---   >     VkRect2D                         dstRect;
---   >     VkBool32                         persistent;
---   > } VkDisplayPresentInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPresentInfoKHR VkDisplayPresentInfoKHR registry at www.khronos.org>
-type VkDisplayPresentInfoKHR =
-     VulkanStruct VkDisplayPresentInfoKHR' -- ' closing tick for hsc2hs
-
-data VkDisplayPresentInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayPresentInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayPresentInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayPresentInfoKHR where
-        sizeOf ~_ = #{size VkDisplayPresentInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayPresentInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayPresentInfoKHR where
-        type StructFields VkDisplayPresentInfoKHR =
-             '["sType", "pNext", "srcRect", "dstRect", "persistent"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayPresentInfoKHR = '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDisplayPresentInfoKHR where
-        type FieldType "sType" VkDisplayPresentInfoKHR = VkStructureType
-        type FieldOptional "sType" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayPresentInfoKHR =
-             #{offset VkDisplayPresentInfoKHR, sType}
-        type FieldIsArray "sType" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDisplayPresentInfoKHR where
-        type FieldType "pNext" VkDisplayPresentInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayPresentInfoKHR =
-             #{offset VkDisplayPresentInfoKHR, pNext}
-        type FieldIsArray "pNext" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcRect" VkDisplayPresentInfoKHR where
-        type FieldType "srcRect" VkDisplayPresentInfoKHR = VkRect2D
-        type FieldOptional "srcRect" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcRect" VkDisplayPresentInfoKHR =
-             #{offset VkDisplayPresentInfoKHR, srcRect}
-        type FieldIsArray "srcRect" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPresentInfoKHR, srcRect}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcRect" VkDisplayPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, srcRect})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, srcRect}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcRect" VkDisplayPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, srcRect}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstRect" VkDisplayPresentInfoKHR where
-        type FieldType "dstRect" VkDisplayPresentInfoKHR = VkRect2D
-        type FieldOptional "dstRect" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstRect" VkDisplayPresentInfoKHR =
-             #{offset VkDisplayPresentInfoKHR, dstRect}
-        type FieldIsArray "dstRect" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPresentInfoKHR, dstRect}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstRect" VkDisplayPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, dstRect})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, dstRect}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstRect" VkDisplayPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, dstRect}
-
-instance {-# OVERLAPPING #-}
-         HasField "persistent" VkDisplayPresentInfoKHR where
-        type FieldType "persistent" VkDisplayPresentInfoKHR = VkBool32
-        type FieldOptional "persistent" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "persistent" VkDisplayPresentInfoKHR =
-             #{offset VkDisplayPresentInfoKHR, persistent}
-        type FieldIsArray "persistent" VkDisplayPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPresentInfoKHR, persistent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "persistent" VkDisplayPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPresentInfoKHR, persistent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPresentInfoKHR, persistent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "persistent" VkDisplayPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPresentInfoKHR, persistent}
-
-instance Show VkDisplayPresentInfoKHR where
-        showsPrec d x
-          = showString "VkDisplayPresentInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "srcRect = " .
-                            showsPrec d (getField @"srcRect" x) .
-                              showString ", " .
-                                showString "dstRect = " .
-                                  showsPrec d (getField @"dstRect" x) .
-                                    showString ", " .
-                                      showString "persistent = " .
-                                        showsPrec d (getField @"persistent" x) . showChar '}'
-
--- | > typedef struct VkDisplayProperties2KHR {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkDisplayPropertiesKHR displayProperties;
---   > } VkDisplayProperties2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayProperties2KHR VkDisplayProperties2KHR registry at www.khronos.org>
-type VkDisplayProperties2KHR =
-     VulkanStruct VkDisplayProperties2KHR' -- ' closing tick for hsc2hs
-
-data VkDisplayProperties2KHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayProperties2KHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayProperties2KHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayProperties2KHR where
-        sizeOf ~_ = #{size VkDisplayProperties2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayProperties2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayProperties2KHR where
-        type StructFields VkDisplayProperties2KHR =
-             '["sType", "pNext", "displayProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayProperties2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayProperties2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDisplayProperties2KHR where
-        type FieldType "sType" VkDisplayProperties2KHR = VkStructureType
-        type FieldOptional "sType" VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplayProperties2KHR =
-             #{offset VkDisplayProperties2KHR, sType}
-        type FieldIsArray "sType" VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplayProperties2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayProperties2KHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplayProperties2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayProperties2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDisplayProperties2KHR where
-        type FieldType "pNext" VkDisplayProperties2KHR = Ptr Void
-        type FieldOptional "pNext" VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplayProperties2KHR =
-             #{offset VkDisplayProperties2KHR, pNext}
-        type FieldIsArray "pNext" VkDisplayProperties2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplayProperties2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayProperties2KHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplayProperties2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayProperties2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayProperties" VkDisplayProperties2KHR where
-        type FieldType "displayProperties" VkDisplayProperties2KHR =
-             VkDisplayPropertiesKHR
-        type FieldOptional "displayProperties" VkDisplayProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayProperties" VkDisplayProperties2KHR =
-             #{offset VkDisplayProperties2KHR, displayProperties}
-        type FieldIsArray "displayProperties" VkDisplayProperties2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayProperties2KHR, displayProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayProperties" VkDisplayProperties2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayProperties2KHR, displayProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayProperties2KHR, displayProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayProperties" VkDisplayProperties2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayProperties2KHR, displayProperties}
-
-instance Show VkDisplayProperties2KHR where
-        showsPrec d x
-          = showString "VkDisplayProperties2KHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "displayProperties = " .
-                            showsPrec d (getField @"displayProperties" x) . showChar '}'
-
--- | > typedef struct VkDisplayPropertiesKHR {
---   >     VkDisplayKHR                     display;
---   >     const char*                      displayName;
---   >     VkExtent2D                       physicalDimensions;
---   >     VkExtent2D                       physicalResolution;
---   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
---   >     VkBool32                         planeReorderPossible;
---   >     VkBool32                         persistentContent;
---   > } VkDisplayPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPropertiesKHR VkDisplayPropertiesKHR registry at www.khronos.org>
-type VkDisplayPropertiesKHR = VulkanStruct VkDisplayPropertiesKHR' -- ' closing tick for hsc2hs
-
-data VkDisplayPropertiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplayPropertiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplayPropertiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplayPropertiesKHR where
-        sizeOf ~_ = #{size VkDisplayPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDisplayPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplayPropertiesKHR where
-        type StructFields VkDisplayPropertiesKHR =
-             '["display", "displayName", "physicalDimensions", -- ' closing tick for hsc2hs
-               "physicalResolution", "supportedTransforms",
-               "planeReorderPossible", "persistentContent"]
-        type CUnionType VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplayPropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkDisplayPropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "display" VkDisplayPropertiesKHR where
-        type FieldType "display" VkDisplayPropertiesKHR = VkDisplayKHR
-        type FieldOptional "display" VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "display" VkDisplayPropertiesKHR =
-             #{offset VkDisplayPropertiesKHR, display}
-        type FieldIsArray "display" VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkDisplayPropertiesKHR, display}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "display" VkDisplayPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, display})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, display}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "display" VkDisplayPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, display}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayName" VkDisplayPropertiesKHR where
-        type FieldType "displayName" VkDisplayPropertiesKHR = CString
-        type FieldOptional "displayName" VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayName" VkDisplayPropertiesKHR =
-             #{offset VkDisplayPropertiesKHR, displayName}
-        type FieldIsArray "displayName" VkDisplayPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPropertiesKHR, displayName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayName" VkDisplayPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, displayName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, displayName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayName" VkDisplayPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, displayName}
-
-instance {-# OVERLAPPING #-}
-         HasField "physicalDimensions" VkDisplayPropertiesKHR where
-        type FieldType "physicalDimensions" VkDisplayPropertiesKHR =
-             VkExtent2D
-        type FieldOptional "physicalDimensions" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "physicalDimensions" VkDisplayPropertiesKHR =
-             #{offset VkDisplayPropertiesKHR, physicalDimensions}
-        type FieldIsArray "physicalDimensions" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPropertiesKHR, physicalDimensions}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "physicalDimensions" VkDisplayPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, physicalDimensions})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, physicalDimensions}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "physicalDimensions" VkDisplayPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, physicalDimensions}
-
-instance {-# OVERLAPPING #-}
-         HasField "physicalResolution" VkDisplayPropertiesKHR where
-        type FieldType "physicalResolution" VkDisplayPropertiesKHR =
-             VkExtent2D
-        type FieldOptional "physicalResolution" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "physicalResolution" VkDisplayPropertiesKHR =
-             #{offset VkDisplayPropertiesKHR, physicalResolution}
-        type FieldIsArray "physicalResolution" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPropertiesKHR, physicalResolution}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "physicalResolution" VkDisplayPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, physicalResolution})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, physicalResolution}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "physicalResolution" VkDisplayPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, physicalResolution}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedTransforms" VkDisplayPropertiesKHR where
-        type FieldType "supportedTransforms" VkDisplayPropertiesKHR =
-             VkSurfaceTransformFlagsKHR
-        type FieldOptional "supportedTransforms" VkDisplayPropertiesKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedTransforms" VkDisplayPropertiesKHR =
-             #{offset VkDisplayPropertiesKHR, supportedTransforms}
-        type FieldIsArray "supportedTransforms" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPropertiesKHR, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedTransforms" VkDisplayPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, supportedTransforms})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedTransforms" VkDisplayPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         HasField "planeReorderPossible" VkDisplayPropertiesKHR where
-        type FieldType "planeReorderPossible" VkDisplayPropertiesKHR =
-             VkBool32
-        type FieldOptional "planeReorderPossible" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "planeReorderPossible" VkDisplayPropertiesKHR =
-             #{offset VkDisplayPropertiesKHR, planeReorderPossible}
-        type FieldIsArray "planeReorderPossible" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPropertiesKHR, planeReorderPossible}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "planeReorderPossible" VkDisplayPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, planeReorderPossible})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, planeReorderPossible}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "planeReorderPossible" VkDisplayPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, planeReorderPossible}
-
-instance {-# OVERLAPPING #-}
-         HasField "persistentContent" VkDisplayPropertiesKHR where
-        type FieldType "persistentContent" VkDisplayPropertiesKHR =
-             VkBool32
-        type FieldOptional "persistentContent" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "persistentContent" VkDisplayPropertiesKHR =
-             #{offset VkDisplayPropertiesKHR, persistentContent}
-        type FieldIsArray "persistentContent" VkDisplayPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplayPropertiesKHR, persistentContent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "persistentContent" VkDisplayPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplayPropertiesKHR, persistentContent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplayPropertiesKHR, persistentContent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "persistentContent" VkDisplayPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplayPropertiesKHR, persistentContent}
-
-instance Show VkDisplayPropertiesKHR where
-        showsPrec d x
-          = showString "VkDisplayPropertiesKHR {" .
-              showString "display = " .
-                showsPrec d (getField @"display" x) .
-                  showString ", " .
-                    showString "displayName = " .
-                      showsPrec d (getField @"displayName" x) .
-                        showString ", " .
-                          showString "physicalDimensions = " .
-                            showsPrec d (getField @"physicalDimensions" x) .
-                              showString ", " .
-                                showString "physicalResolution = " .
-                                  showsPrec d (getField @"physicalResolution" x) .
-                                    showString ", " .
-                                      showString "supportedTransforms = " .
-                                        showsPrec d (getField @"supportedTransforms" x) .
-                                          showString ", " .
-                                            showString "planeReorderPossible = " .
-                                              showsPrec d (getField @"planeReorderPossible" x) .
-                                                showString ", " .
-                                                  showString "persistentContent = " .
-                                                    showsPrec d (getField @"persistentContent" x) .
-                                                      showChar '}'
-
--- | > typedef struct VkDisplaySurfaceCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDisplaySurfaceCreateFlagsKHR   flags;
---   >     VkDisplayModeKHR                 displayMode;
---   >     uint32_t                         planeIndex;
---   >     uint32_t                         planeStackIndex;
---   >     VkSurfaceTransformFlagBitsKHR    transform;
---   >     float                            globalAlpha;
---   >     VkDisplayPlaneAlphaFlagBitsKHR   alphaMode;
---   >     VkExtent2D                       imageExtent;
---   > } VkDisplaySurfaceCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplaySurfaceCreateInfoKHR VkDisplaySurfaceCreateInfoKHR registry at www.khronos.org>
-type VkDisplaySurfaceCreateInfoKHR =
-     VulkanStruct VkDisplaySurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
-
-data VkDisplaySurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkDisplaySurfaceCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDisplaySurfaceCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDisplaySurfaceCreateInfoKHR where
-        sizeOf ~_ = #{size VkDisplaySurfaceCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDisplaySurfaceCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkDisplaySurfaceCreateInfoKHR where
-        type StructFields VkDisplaySurfaceCreateInfoKHR =
-             '["sType", "pNext", "flags", "displayMode", "planeIndex", -- ' closing tick for hsc2hs
-               "planeStackIndex", "transform", "globalAlpha", "alphaMode",
-               "imageExtent"]
-        type CUnionType VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDisplaySurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "sType" VkDisplaySurfaceCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "pNext" VkDisplaySurfaceCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "flags" VkDisplaySurfaceCreateInfoKHR =
-             VkDisplaySurfaceCreateFlagsKHR
-        type FieldOptional "flags" VkDisplaySurfaceCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkDisplaySurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayMode" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "displayMode" VkDisplaySurfaceCreateInfoKHR =
-             VkDisplayModeKHR
-        type FieldOptional "displayMode" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayMode" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
-        type FieldIsArray "displayMode" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayMode" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, displayMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayMode" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "planeIndex" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "planeIndex" VkDisplaySurfaceCreateInfoKHR = Word32
-        type FieldOptional "planeIndex" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "planeIndex" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
-        type FieldIsArray "planeIndex" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "planeIndex" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "planeIndex" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "planeStackIndex" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "planeStackIndex" VkDisplaySurfaceCreateInfoKHR =
-             Word32
-        type FieldOptional "planeStackIndex" VkDisplaySurfaceCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "planeStackIndex" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
-        type FieldIsArray "planeStackIndex" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "planeStackIndex" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "planeStackIndex" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "transform" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "transform" VkDisplaySurfaceCreateInfoKHR =
-             VkSurfaceTransformFlagBitsKHR
-        type FieldOptional "transform" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "transform" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, transform}
-        type FieldIsArray "transform" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, transform}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "transform" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, transform})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, transform}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "transform" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, transform}
-
-instance {-# OVERLAPPING #-}
-         HasField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "globalAlpha" VkDisplaySurfaceCreateInfoKHR =
-             #{type float}
-        type FieldOptional "globalAlpha" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "globalAlpha" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
-        type FieldIsArray "globalAlpha" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "globalAlpha" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
-
-instance {-# OVERLAPPING #-}
-         HasField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "alphaMode" VkDisplaySurfaceCreateInfoKHR =
-             VkDisplayPlaneAlphaFlagBitsKHR
-        type FieldOptional "alphaMode" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "alphaMode" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
-        type FieldIsArray "alphaMode" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "alphaMode" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
-        type FieldType "imageExtent" VkDisplaySurfaceCreateInfoKHR =
-             VkExtent2D
-        type FieldOptional "imageExtent" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageExtent" VkDisplaySurfaceCreateInfoKHR =
-             #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
-        type FieldIsArray "imageExtent" VkDisplaySurfaceCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageExtent" VkDisplaySurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
-
-instance Show VkDisplaySurfaceCreateInfoKHR where
-        showsPrec d x
-          = showString "VkDisplaySurfaceCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "displayMode = " .
-                                  showsPrec d (getField @"displayMode" x) .
-                                    showString ", " .
-                                      showString "planeIndex = " .
-                                        showsPrec d (getField @"planeIndex" x) .
-                                          showString ", " .
-                                            showString "planeStackIndex = " .
-                                              showsPrec d (getField @"planeStackIndex" x) .
-                                                showString ", " .
-                                                  showString "transform = " .
-                                                    showsPrec d (getField @"transform" x) .
-                                                      showString ", " .
-                                                        showString "globalAlpha = " .
-                                                          showsPrec d (getField @"globalAlpha" x) .
-                                                            showString ", " .
-                                                              showString "alphaMode = " .
-                                                                showsPrec d
-                                                                  (getField @"alphaMode" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "imageExtent = " .
-                                                                      showsPrec d
-                                                                        (getField @"imageExtent" x)
-                                                                        . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Display
+       (VkDisplayEventInfoEXT, VkDisplayModeCreateInfoKHR,
+        VkDisplayModeParametersKHR, VkDisplayModeProperties2KHR,
+        VkDisplayModePropertiesKHR, VkDisplayPlaneCapabilities2KHR,
+        VkDisplayPlaneCapabilitiesKHR, VkDisplayPlaneInfo2KHR,
+        VkDisplayPlaneProperties2KHR, VkDisplayPlanePropertiesKHR,
+        VkDisplayPowerInfoEXT, VkDisplayPresentInfoKHR,
+        VkDisplayProperties2KHR, VkDisplayPropertiesKHR,
+        VkDisplaySurfaceCreateInfoKHR)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes          (VkBool32)
+import Graphics.Vulkan.Types.Bitmasks           (VkDisplayModeCreateFlagsKHR,
+                                                 VkDisplaySurfaceCreateFlagsKHR)
+import Graphics.Vulkan.Types.Enum.Display       (VkDisplayEventTypeEXT,
+                                                 VkDisplayPlaneAlphaFlagBitsKHR,
+                                                 VkDisplayPlaneAlphaFlagsKHR,
+                                                 VkDisplayPowerStateEXT)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Enum.Surface       (VkSurfaceTransformFlagBitsKHR,
+                                                 VkSurfaceTransformFlagsKHR)
+import Graphics.Vulkan.Types.Handles            (VkDisplayKHR, VkDisplayModeKHR)
+import Graphics.Vulkan.Types.Struct.Extent      (VkExtent2D)
+import Graphics.Vulkan.Types.Struct.Offset      (VkOffset2D)
+import Graphics.Vulkan.Types.Struct.Present     (VkPresentInfoKHR)
+import Graphics.Vulkan.Types.Struct.Rect        (VkRect2D)
+
+-- | > typedef struct VkDisplayEventInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDisplayEventTypeEXT            displayEvent;
+--   > } VkDisplayEventInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayEventInfoEXT VkDisplayEventInfoEXT registry at www.khronos.org>
+type VkDisplayEventInfoEXT = VkStruct VkDisplayEventInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDisplayEventInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayEventInfoEXT where
+    type StructRep VkDisplayEventInfoEXT =
+         'StructMeta "VkDisplayEventInfoEXT" VkDisplayEventInfoEXT  -- ' closing tick for hsc2hs
+                                                                   #{size VkDisplayEventInfoEXT}
+           #{alignment VkDisplayEventInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayEventInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayEventInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayEvent" VkDisplayEventTypeEXT 'False 
+                                                                     #{offset VkDisplayEventInfoEXT, displayEvent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayModeCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDisplayModeCreateFlagsKHR      flags;
+--   >     VkDisplayModeParametersKHR       parameters;
+--   > } VkDisplayModeCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModeCreateInfoKHR VkDisplayModeCreateInfoKHR registry at www.khronos.org>
+type VkDisplayModeCreateInfoKHR =
+     VkStruct VkDisplayModeCreateInfoKHR' -- ' closing tick for hsc2hs
+
+data VkDisplayModeCreateInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayModeCreateInfoKHR where
+    type StructRep VkDisplayModeCreateInfoKHR =
+         'StructMeta "VkDisplayModeCreateInfoKHR" VkDisplayModeCreateInfoKHR -- ' closing tick for hsc2hs
+           #{size VkDisplayModeCreateInfoKHR}
+           #{alignment VkDisplayModeCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayModeCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayModeCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDisplayModeCreateFlagsKHR 'True 
+                                                                   #{offset VkDisplayModeCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "parameters" VkDisplayModeParametersKHR 'False
+                #{offset VkDisplayModeCreateInfoKHR, parameters}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayModeParametersKHR {
+--   >     VkExtent2D                       visibleRegion;
+--   >     uint32_t                         refreshRate;
+--   > } VkDisplayModeParametersKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModeParametersKHR VkDisplayModeParametersKHR registry at www.khronos.org>
+type VkDisplayModeParametersKHR =
+     VkStruct VkDisplayModeParametersKHR' -- ' closing tick for hsc2hs
+
+data VkDisplayModeParametersKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayModeParametersKHR where
+    type StructRep VkDisplayModeParametersKHR =
+         'StructMeta "VkDisplayModeParametersKHR" VkDisplayModeParametersKHR -- ' closing tick for hsc2hs
+           #{size VkDisplayModeParametersKHR}
+           #{alignment VkDisplayModeParametersKHR}
+           '[('FieldMeta "visibleRegion" VkExtent2D 'False  -- ' closing tick for hsc2hs
+                                                           #{offset VkDisplayModeParametersKHR, visibleRegion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "refreshRate" Word32 'False 
+                                                     #{offset VkDisplayModeParametersKHR, refreshRate}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayModeProperties2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDisplayModePropertiesKHR displayModeProperties;
+--   > } VkDisplayModeProperties2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModeProperties2KHR VkDisplayModeProperties2KHR registry at www.khronos.org>
+type VkDisplayModeProperties2KHR =
+     VkStruct VkDisplayModeProperties2KHR' -- ' closing tick for hsc2hs
+
+data VkDisplayModeProperties2KHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayModeProperties2KHR where
+    type StructRep VkDisplayModeProperties2KHR =
+         'StructMeta "VkDisplayModeProperties2KHR" -- ' closing tick for hsc2hs
+           VkDisplayModeProperties2KHR
+           #{size VkDisplayModeProperties2KHR}
+           #{alignment VkDisplayModeProperties2KHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayModeProperties2KHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayModeProperties2KHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayModeProperties" VkDisplayModePropertiesKHR -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkDisplayModeProperties2KHR, displayModeProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayModePropertiesKHR {
+--   >     VkDisplayModeKHR                 displayMode;
+--   >     VkDisplayModeParametersKHR       parameters;
+--   > } VkDisplayModePropertiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayModePropertiesKHR VkDisplayModePropertiesKHR registry at www.khronos.org>
+type VkDisplayModePropertiesKHR =
+     VkStruct VkDisplayModePropertiesKHR' -- ' closing tick for hsc2hs
+
+data VkDisplayModePropertiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayModePropertiesKHR where
+    type StructRep VkDisplayModePropertiesKHR =
+         'StructMeta "VkDisplayModePropertiesKHR" VkDisplayModePropertiesKHR -- ' closing tick for hsc2hs
+           #{size VkDisplayModePropertiesKHR}
+           #{alignment VkDisplayModePropertiesKHR}
+           '[('FieldMeta "displayMode" VkDisplayModeKHR 'False  -- ' closing tick for hsc2hs
+                                                               #{offset VkDisplayModePropertiesKHR, displayMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "parameters" VkDisplayModeParametersKHR 'False
+                #{offset VkDisplayModePropertiesKHR, parameters}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayPlaneCapabilities2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDisplayPlaneCapabilitiesKHR capabilities;
+--   > } VkDisplayPlaneCapabilities2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneCapabilities2KHR VkDisplayPlaneCapabilities2KHR registry at www.khronos.org>
+type VkDisplayPlaneCapabilities2KHR =
+     VkStruct VkDisplayPlaneCapabilities2KHR' -- ' closing tick for hsc2hs
+
+data VkDisplayPlaneCapabilities2KHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayPlaneCapabilities2KHR where
+    type StructRep VkDisplayPlaneCapabilities2KHR =
+         'StructMeta "VkDisplayPlaneCapabilities2KHR" -- ' closing tick for hsc2hs
+           VkDisplayPlaneCapabilities2KHR
+           #{size VkDisplayPlaneCapabilities2KHR}
+           #{alignment VkDisplayPlaneCapabilities2KHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayPlaneCapabilities2KHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayPlaneCapabilities2KHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "capabilities" VkDisplayPlaneCapabilitiesKHR 'False
+                #{offset VkDisplayPlaneCapabilities2KHR, capabilities}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayPlaneCapabilitiesKHR {
+--   >     VkDisplayPlaneAlphaFlagsKHR      supportedAlpha;
+--   >     VkOffset2D                       minSrcPosition;
+--   >     VkOffset2D                       maxSrcPosition;
+--   >     VkExtent2D                       minSrcExtent;
+--   >     VkExtent2D                       maxSrcExtent;
+--   >     VkOffset2D                       minDstPosition;
+--   >     VkOffset2D                       maxDstPosition;
+--   >     VkExtent2D                       minDstExtent;
+--   >     VkExtent2D                       maxDstExtent;
+--   > } VkDisplayPlaneCapabilitiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneCapabilitiesKHR VkDisplayPlaneCapabilitiesKHR registry at www.khronos.org>
+type VkDisplayPlaneCapabilitiesKHR =
+     VkStruct VkDisplayPlaneCapabilitiesKHR' -- ' closing tick for hsc2hs
+
+data VkDisplayPlaneCapabilitiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayPlaneCapabilitiesKHR where
+    type StructRep VkDisplayPlaneCapabilitiesKHR =
+         'StructMeta "VkDisplayPlaneCapabilitiesKHR" -- ' closing tick for hsc2hs
+           VkDisplayPlaneCapabilitiesKHR
+           #{size VkDisplayPlaneCapabilitiesKHR}
+           #{alignment VkDisplayPlaneCapabilitiesKHR}
+           '[('FieldMeta "supportedAlpha" VkDisplayPlaneAlphaFlagsKHR 'True -- ' closing tick for hsc2hs
+                #{offset VkDisplayPlaneCapabilitiesKHR, supportedAlpha}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minSrcPosition" VkOffset2D 'False 
+                                                            #{offset VkDisplayPlaneCapabilitiesKHR, minSrcPosition}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSrcPosition" VkOffset2D 'False 
+                                                            #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcPosition}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minSrcExtent" VkExtent2D 'False 
+                                                          #{offset VkDisplayPlaneCapabilitiesKHR, minSrcExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSrcExtent" VkExtent2D 'False 
+                                                          #{offset VkDisplayPlaneCapabilitiesKHR, maxSrcExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minDstPosition" VkOffset2D 'False 
+                                                            #{offset VkDisplayPlaneCapabilitiesKHR, minDstPosition}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDstPosition" VkOffset2D 'False 
+                                                            #{offset VkDisplayPlaneCapabilitiesKHR, maxDstPosition}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minDstExtent" VkExtent2D 'False 
+                                                          #{offset VkDisplayPlaneCapabilitiesKHR, minDstExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDstExtent" VkExtent2D 'False 
+                                                          #{offset VkDisplayPlaneCapabilitiesKHR, maxDstExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayPlaneInfo2KHR {
+--   >     VkStructureType sType;
+--   >     const void* pNext;
+--   >     VkDisplayModeKHR mode;
+--   >     uint32_t planeIndex;
+--   > } VkDisplayPlaneInfo2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneInfo2KHR VkDisplayPlaneInfo2KHR registry at www.khronos.org>
+type VkDisplayPlaneInfo2KHR = VkStruct VkDisplayPlaneInfo2KHR' -- ' closing tick for hsc2hs
+
+data VkDisplayPlaneInfo2KHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayPlaneInfo2KHR where
+    type StructRep VkDisplayPlaneInfo2KHR =
+         'StructMeta "VkDisplayPlaneInfo2KHR" VkDisplayPlaneInfo2KHR -- ' closing tick for hsc2hs
+           #{size VkDisplayPlaneInfo2KHR}
+           #{alignment VkDisplayPlaneInfo2KHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayPlaneInfo2KHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayPlaneInfo2KHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mode" VkDisplayModeKHR 'False 
+                                                        #{offset VkDisplayPlaneInfo2KHR, mode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "planeIndex" Word32 'False 
+                                                    #{offset VkDisplayPlaneInfo2KHR, planeIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayPlaneProperties2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDisplayPlanePropertiesKHR displayPlaneProperties;
+--   > } VkDisplayPlaneProperties2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlaneProperties2KHR VkDisplayPlaneProperties2KHR registry at www.khronos.org>
+type VkDisplayPlaneProperties2KHR =
+     VkStruct VkDisplayPlaneProperties2KHR' -- ' closing tick for hsc2hs
+
+data VkDisplayPlaneProperties2KHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayPlaneProperties2KHR where
+    type StructRep VkDisplayPlaneProperties2KHR =
+         'StructMeta "VkDisplayPlaneProperties2KHR" -- ' closing tick for hsc2hs
+           VkDisplayPlaneProperties2KHR
+           #{size VkDisplayPlaneProperties2KHR}
+           #{alignment VkDisplayPlaneProperties2KHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayPlaneProperties2KHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayPlaneProperties2KHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayPlaneProperties" VkDisplayPlanePropertiesKHR -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkDisplayPlaneProperties2KHR, displayPlaneProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayPlanePropertiesKHR {
+--   >     VkDisplayKHR                     currentDisplay;
+--   >     uint32_t                         currentStackIndex;
+--   > } VkDisplayPlanePropertiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPlanePropertiesKHR VkDisplayPlanePropertiesKHR registry at www.khronos.org>
+type VkDisplayPlanePropertiesKHR =
+     VkStruct VkDisplayPlanePropertiesKHR' -- ' closing tick for hsc2hs
+
+data VkDisplayPlanePropertiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayPlanePropertiesKHR where
+    type StructRep VkDisplayPlanePropertiesKHR =
+         'StructMeta "VkDisplayPlanePropertiesKHR" -- ' closing tick for hsc2hs
+           VkDisplayPlanePropertiesKHR
+           #{size VkDisplayPlanePropertiesKHR}
+           #{alignment VkDisplayPlanePropertiesKHR}
+           '[('FieldMeta "currentDisplay" VkDisplayKHR 'False  -- ' closing tick for hsc2hs
+                                                              #{offset VkDisplayPlanePropertiesKHR, currentDisplay}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "currentStackIndex" Word32 'False 
+                                                           #{offset VkDisplayPlanePropertiesKHR, currentStackIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayPowerInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDisplayPowerStateEXT           powerState;
+--   > } VkDisplayPowerInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPowerInfoEXT VkDisplayPowerInfoEXT registry at www.khronos.org>
+type VkDisplayPowerInfoEXT = VkStruct VkDisplayPowerInfoEXT' -- ' closing tick for hsc2hs
+
+data VkDisplayPowerInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayPowerInfoEXT where
+    type StructRep VkDisplayPowerInfoEXT =
+         'StructMeta "VkDisplayPowerInfoEXT" VkDisplayPowerInfoEXT  -- ' closing tick for hsc2hs
+                                                                   #{size VkDisplayPowerInfoEXT}
+           #{alignment VkDisplayPowerInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayPowerInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayPowerInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "powerState" VkDisplayPowerStateEXT 'False 
+                                                                    #{offset VkDisplayPowerInfoEXT, powerState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayPresentInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkRect2D                         srcRect;
+--   >     VkRect2D                         dstRect;
+--   >     VkBool32                         persistent;
+--   > } VkDisplayPresentInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPresentInfoKHR VkDisplayPresentInfoKHR registry at www.khronos.org>
+type VkDisplayPresentInfoKHR = VkStruct VkDisplayPresentInfoKHR' -- ' closing tick for hsc2hs
+
+data VkDisplayPresentInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayPresentInfoKHR where
+    type StructRep VkDisplayPresentInfoKHR =
+         'StructMeta "VkDisplayPresentInfoKHR" VkDisplayPresentInfoKHR -- ' closing tick for hsc2hs
+           #{size VkDisplayPresentInfoKHR}
+           #{alignment VkDisplayPresentInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayPresentInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayPresentInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcRect" VkRect2D 'False 
+                                                   #{offset VkDisplayPresentInfoKHR, srcRect}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstRect" VkRect2D 'False 
+                                                   #{offset VkDisplayPresentInfoKHR, dstRect}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "persistent" VkBool32 'False 
+                                                      #{offset VkDisplayPresentInfoKHR, persistent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayProperties2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDisplayPropertiesKHR displayProperties;
+--   > } VkDisplayProperties2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayProperties2KHR VkDisplayProperties2KHR registry at www.khronos.org>
+type VkDisplayProperties2KHR = VkStruct VkDisplayProperties2KHR' -- ' closing tick for hsc2hs
+
+data VkDisplayProperties2KHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayProperties2KHR where
+    type StructRep VkDisplayProperties2KHR =
+         'StructMeta "VkDisplayProperties2KHR" VkDisplayProperties2KHR -- ' closing tick for hsc2hs
+           #{size VkDisplayProperties2KHR}
+           #{alignment VkDisplayProperties2KHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplayProperties2KHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplayProperties2KHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayProperties" VkDisplayPropertiesKHR 'False
+                #{offset VkDisplayProperties2KHR, displayProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplayPropertiesKHR {
+--   >     VkDisplayKHR                     display;
+--   >     const char*                      displayName;
+--   >     VkExtent2D                       physicalDimensions;
+--   >     VkExtent2D                       physicalResolution;
+--   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
+--   >     VkBool32                         planeReorderPossible;
+--   >     VkBool32                         persistentContent;
+--   > } VkDisplayPropertiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplayPropertiesKHR VkDisplayPropertiesKHR registry at www.khronos.org>
+type VkDisplayPropertiesKHR = VkStruct VkDisplayPropertiesKHR' -- ' closing tick for hsc2hs
+
+data VkDisplayPropertiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplayPropertiesKHR where
+    type StructRep VkDisplayPropertiesKHR =
+         'StructMeta "VkDisplayPropertiesKHR" VkDisplayPropertiesKHR -- ' closing tick for hsc2hs
+           #{size VkDisplayPropertiesKHR}
+           #{alignment VkDisplayPropertiesKHR}
+           '[('FieldMeta "display" VkDisplayKHR 'False  -- ' closing tick for hsc2hs
+                                                       #{offset VkDisplayPropertiesKHR, display}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayName" CString 'False 
+                                                      #{offset VkDisplayPropertiesKHR, displayName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "physicalDimensions" VkExtent2D 'False 
+                                                                #{offset VkDisplayPropertiesKHR, physicalDimensions}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "physicalResolution" VkExtent2D 'False 
+                                                                #{offset VkDisplayPropertiesKHR, physicalResolution}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedTransforms" VkSurfaceTransformFlagsKHR 'True
+                #{offset VkDisplayPropertiesKHR, supportedTransforms}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "planeReorderPossible" VkBool32 'False 
+                                                                #{offset VkDisplayPropertiesKHR, planeReorderPossible}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "persistentContent" VkBool32 'False 
+                                                             #{offset VkDisplayPropertiesKHR, persistentContent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkDisplaySurfaceCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDisplaySurfaceCreateFlagsKHR   flags;
+--   >     VkDisplayModeKHR                 displayMode;
+--   >     uint32_t                         planeIndex;
+--   >     uint32_t                         planeStackIndex;
+--   >     VkSurfaceTransformFlagBitsKHR    transform;
+--   >     float                            globalAlpha;
+--   >     VkDisplayPlaneAlphaFlagBitsKHR   alphaMode;
+--   >     VkExtent2D                       imageExtent;
+--   > } VkDisplaySurfaceCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDisplaySurfaceCreateInfoKHR VkDisplaySurfaceCreateInfoKHR registry at www.khronos.org>
+type VkDisplaySurfaceCreateInfoKHR =
+     VkStruct VkDisplaySurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+
+data VkDisplaySurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkDisplaySurfaceCreateInfoKHR where
+    type StructRep VkDisplaySurfaceCreateInfoKHR =
+         'StructMeta "VkDisplaySurfaceCreateInfoKHR" -- ' closing tick for hsc2hs
+           VkDisplaySurfaceCreateInfoKHR
+           #{size VkDisplaySurfaceCreateInfoKHR}
+           #{alignment VkDisplaySurfaceCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkDisplaySurfaceCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkDisplaySurfaceCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkDisplaySurfaceCreateFlagsKHR 'True 
+                                                                      #{offset VkDisplaySurfaceCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayMode" VkDisplayModeKHR 'False 
+                                                               #{offset VkDisplaySurfaceCreateInfoKHR, displayMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "planeIndex" Word32 'False 
+                                                    #{offset VkDisplaySurfaceCreateInfoKHR, planeIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "planeStackIndex" Word32 'False 
+                                                         #{offset VkDisplaySurfaceCreateInfoKHR, planeStackIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "transform" VkSurfaceTransformFlagBitsKHR 'False
+                #{offset VkDisplaySurfaceCreateInfoKHR, transform}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "globalAlpha" ( -- ' closing tick for hsc2hs
+                                        #{type float}
+                                        ) 'False -- ' closing tick for hsc2hs
+                #{offset VkDisplaySurfaceCreateInfoKHR, globalAlpha}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "alphaMode" VkDisplayPlaneAlphaFlagBitsKHR 'False
+                #{offset VkDisplaySurfaceCreateInfoKHR, alphaMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageExtent" VkExtent2D 'False 
+                                                         #{offset VkDisplaySurfaceCreateInfoKHR, imageExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/DrawInd.hsc b/src-gen/Graphics/Vulkan/Types/Struct/DrawInd.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/DrawInd.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/DrawInd.hsc
@@ -2,19 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.DrawInd
-       (VkDrawIndexedIndirectCommand, VkDrawIndexedIndirectCommand', -- ' closing tick for hsc2hs
-        VkDrawIndirectCommand, VkDrawIndirectCommand') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                 (Storable (..))
+       (VkDrawIndexedIndirectCommand, VkDrawIndirectCommand) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkDrawIndexedIndirectCommand {
 --   >     uint32_t               indexCount;
@@ -26,232 +20,44 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDrawIndexedIndirectCommand VkDrawIndexedIndirectCommand registry at www.khronos.org>
 type VkDrawIndexedIndirectCommand =
-     VulkanStruct VkDrawIndexedIndirectCommand' -- ' closing tick for hsc2hs
+     VkStruct VkDrawIndexedIndirectCommand' -- ' closing tick for hsc2hs
 
 data VkDrawIndexedIndirectCommand' -- ' closing tick for hsc2hs
 
-instance Eq VkDrawIndexedIndirectCommand where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDrawIndexedIndirectCommand where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDrawIndexedIndirectCommand where
-        sizeOf ~_ = #{size VkDrawIndexedIndirectCommand}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkDrawIndexedIndirectCommand}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDrawIndexedIndirectCommand where
-        type StructFields VkDrawIndexedIndirectCommand =
-             '["indexCount", "instanceCount", "firstIndex", "vertexOffset", -- ' closing tick for hsc2hs
-               "firstInstance"]
-        type CUnionType VkDrawIndexedIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDrawIndexedIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDrawIndexedIndirectCommand = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "indexCount" VkDrawIndexedIndirectCommand where
-        type FieldType "indexCount" VkDrawIndexedIndirectCommand = Word32
-        type FieldOptional "indexCount" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "indexCount" VkDrawIndexedIndirectCommand =
-             #{offset VkDrawIndexedIndirectCommand, indexCount}
-        type FieldIsArray "indexCount" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndexedIndirectCommand, indexCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "indexCount" VkDrawIndexedIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, indexCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, indexCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "indexCount" VkDrawIndexedIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, indexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "instanceCount" VkDrawIndexedIndirectCommand where
-        type FieldType "instanceCount" VkDrawIndexedIndirectCommand =
-             Word32
-        type FieldOptional "instanceCount" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "instanceCount" VkDrawIndexedIndirectCommand =
-             #{offset VkDrawIndexedIndirectCommand, instanceCount}
-        type FieldIsArray "instanceCount" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndexedIndirectCommand, instanceCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "instanceCount" VkDrawIndexedIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, instanceCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, instanceCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "instanceCount" VkDrawIndexedIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, instanceCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "firstIndex" VkDrawIndexedIndirectCommand where
-        type FieldType "firstIndex" VkDrawIndexedIndirectCommand = Word32
-        type FieldOptional "firstIndex" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "firstIndex" VkDrawIndexedIndirectCommand =
-             #{offset VkDrawIndexedIndirectCommand, firstIndex}
-        type FieldIsArray "firstIndex" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndexedIndirectCommand, firstIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "firstIndex" VkDrawIndexedIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, firstIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, firstIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "firstIndex" VkDrawIndexedIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, firstIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "vertexOffset" VkDrawIndexedIndirectCommand where
-        type FieldType "vertexOffset" VkDrawIndexedIndirectCommand = Int32
-        type FieldOptional "vertexOffset" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "vertexOffset" VkDrawIndexedIndirectCommand =
-             #{offset VkDrawIndexedIndirectCommand, vertexOffset}
-        type FieldIsArray "vertexOffset" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndexedIndirectCommand, vertexOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vertexOffset" VkDrawIndexedIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, vertexOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, vertexOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vertexOffset" VkDrawIndexedIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, vertexOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "firstInstance" VkDrawIndexedIndirectCommand where
-        type FieldType "firstInstance" VkDrawIndexedIndirectCommand =
-             Word32
-        type FieldOptional "firstInstance" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "firstInstance" VkDrawIndexedIndirectCommand =
-             #{offset VkDrawIndexedIndirectCommand, firstInstance}
-        type FieldIsArray "firstInstance" VkDrawIndexedIndirectCommand =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndexedIndirectCommand, firstInstance}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "firstInstance" VkDrawIndexedIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndexedIndirectCommand, firstInstance})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndexedIndirectCommand, firstInstance}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "firstInstance" VkDrawIndexedIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndexedIndirectCommand, firstInstance}
-
-instance Show VkDrawIndexedIndirectCommand where
-        showsPrec d x
-          = showString "VkDrawIndexedIndirectCommand {" .
-              showString "indexCount = " .
-                showsPrec d (getField @"indexCount" x) .
-                  showString ", " .
-                    showString "instanceCount = " .
-                      showsPrec d (getField @"instanceCount" x) .
-                        showString ", " .
-                          showString "firstIndex = " .
-                            showsPrec d (getField @"firstIndex" x) .
-                              showString ", " .
-                                showString "vertexOffset = " .
-                                  showsPrec d (getField @"vertexOffset" x) .
-                                    showString ", " .
-                                      showString "firstInstance = " .
-                                        showsPrec d (getField @"firstInstance" x) . showChar '}'
+    type StructRep VkDrawIndexedIndirectCommand =
+         'StructMeta "VkDrawIndexedIndirectCommand" -- ' closing tick for hsc2hs
+           VkDrawIndexedIndirectCommand
+           #{size VkDrawIndexedIndirectCommand}
+           #{alignment VkDrawIndexedIndirectCommand}
+           '[('FieldMeta "indexCount" Word32 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkDrawIndexedIndirectCommand, indexCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "instanceCount" Word32 'False 
+                                                       #{offset VkDrawIndexedIndirectCommand, instanceCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "firstIndex" Word32 'False 
+                                                    #{offset VkDrawIndexedIndirectCommand, firstIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "vertexOffset" Int32 'False 
+                                                     #{offset VkDrawIndexedIndirectCommand, vertexOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "firstInstance" Word32 'False 
+                                                       #{offset VkDrawIndexedIndirectCommand, firstInstance}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkDrawIndirectCommand {
 --   >     uint32_t               vertexCount;
@@ -261,180 +67,35 @@
 --   > } VkDrawIndirectCommand;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkDrawIndirectCommand VkDrawIndirectCommand registry at www.khronos.org>
-type VkDrawIndirectCommand = VulkanStruct VkDrawIndirectCommand' -- ' closing tick for hsc2hs
+type VkDrawIndirectCommand = VkStruct VkDrawIndirectCommand' -- ' closing tick for hsc2hs
 
 data VkDrawIndirectCommand' -- ' closing tick for hsc2hs
 
-instance Eq VkDrawIndirectCommand where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkDrawIndirectCommand where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkDrawIndirectCommand where
-        sizeOf ~_ = #{size VkDrawIndirectCommand}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkDrawIndirectCommand}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkDrawIndirectCommand where
-        type StructFields VkDrawIndirectCommand =
-             '["vertexCount", "instanceCount", "firstVertex", "firstInstance"] -- ' closing tick for hsc2hs
-        type CUnionType VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkDrawIndirectCommand = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "vertexCount" VkDrawIndirectCommand where
-        type FieldType "vertexCount" VkDrawIndirectCommand = Word32
-        type FieldOptional "vertexCount" VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "vertexCount" VkDrawIndirectCommand =
-             #{offset VkDrawIndirectCommand, vertexCount}
-        type FieldIsArray "vertexCount" VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndirectCommand, vertexCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vertexCount" VkDrawIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, vertexCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndirectCommand, vertexCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vertexCount" VkDrawIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndirectCommand, vertexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "instanceCount" VkDrawIndirectCommand where
-        type FieldType "instanceCount" VkDrawIndirectCommand = Word32
-        type FieldOptional "instanceCount" VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "instanceCount" VkDrawIndirectCommand =
-             #{offset VkDrawIndirectCommand, instanceCount}
-        type FieldIsArray "instanceCount" VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndirectCommand, instanceCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "instanceCount" VkDrawIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, instanceCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndirectCommand, instanceCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "instanceCount" VkDrawIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndirectCommand, instanceCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "firstVertex" VkDrawIndirectCommand where
-        type FieldType "firstVertex" VkDrawIndirectCommand = Word32
-        type FieldOptional "firstVertex" VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "firstVertex" VkDrawIndirectCommand =
-             #{offset VkDrawIndirectCommand, firstVertex}
-        type FieldIsArray "firstVertex" VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndirectCommand, firstVertex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "firstVertex" VkDrawIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, firstVertex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndirectCommand, firstVertex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "firstVertex" VkDrawIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndirectCommand, firstVertex}
-
-instance {-# OVERLAPPING #-}
-         HasField "firstInstance" VkDrawIndirectCommand where
-        type FieldType "firstInstance" VkDrawIndirectCommand = Word32
-        type FieldOptional "firstInstance" VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "firstInstance" VkDrawIndirectCommand =
-             #{offset VkDrawIndirectCommand, firstInstance}
-        type FieldIsArray "firstInstance" VkDrawIndirectCommand = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkDrawIndirectCommand, firstInstance}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "firstInstance" VkDrawIndirectCommand where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkDrawIndirectCommand, firstInstance})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkDrawIndirectCommand, firstInstance}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "firstInstance" VkDrawIndirectCommand where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkDrawIndirectCommand, firstInstance}
-
-instance Show VkDrawIndirectCommand where
-        showsPrec d x
-          = showString "VkDrawIndirectCommand {" .
-              showString "vertexCount = " .
-                showsPrec d (getField @"vertexCount" x) .
-                  showString ", " .
-                    showString "instanceCount = " .
-                      showsPrec d (getField @"instanceCount" x) .
-                        showString ", " .
-                          showString "firstVertex = " .
-                            showsPrec d (getField @"firstVertex" x) .
-                              showString ", " .
-                                showString "firstInstance = " .
-                                  showsPrec d (getField @"firstInstance" x) . showChar '}'
+    type StructRep VkDrawIndirectCommand =
+         'StructMeta "VkDrawIndirectCommand" VkDrawIndirectCommand  -- ' closing tick for hsc2hs
+                                                                   #{size VkDrawIndirectCommand}
+           #{alignment VkDrawIndirectCommand}
+           '[('FieldMeta "vertexCount" Word32 'False  -- ' closing tick for hsc2hs
+                                                     #{offset VkDrawIndirectCommand, vertexCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "instanceCount" Word32 'False 
+                                                       #{offset VkDrawIndirectCommand, instanceCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "firstVertex" Word32 'False 
+                                                     #{offset VkDrawIndirectCommand, firstVertex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "firstInstance" Word32 'False 
+                                                       #{offset VkDrawIndirectCommand, firstInstance}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/EventCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/EventCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/EventCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/EventCreateInfo.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.EventCreateInfo
-       (VkEventCreateInfo, VkEventCreateInfo') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkEventCreateInfo) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkEventCreateFlags)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkEventCreateInfo {
 --   >     VkStructureType sType;
@@ -23,141 +19,30 @@
 --   > } VkEventCreateInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkEventCreateInfo VkEventCreateInfo registry at www.khronos.org>
-type VkEventCreateInfo = VulkanStruct VkEventCreateInfo' -- ' closing tick for hsc2hs
+type VkEventCreateInfo = VkStruct VkEventCreateInfo' -- ' closing tick for hsc2hs
 
 data VkEventCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkEventCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkEventCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkEventCreateInfo where
-        sizeOf ~_ = #{size VkEventCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkEventCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkEventCreateInfo where
-        type StructFields VkEventCreateInfo = '["sType", "pNext", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkEventCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkEventCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkEventCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkEventCreateInfo
-         where
-        type FieldType "sType" VkEventCreateInfo = VkStructureType
-        type FieldOptional "sType" VkEventCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkEventCreateInfo =
-             #{offset VkEventCreateInfo, sType}
-        type FieldIsArray "sType" VkEventCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkEventCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkEventCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkEventCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkEventCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkEventCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkEventCreateInfo
-         where
-        type FieldType "pNext" VkEventCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkEventCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkEventCreateInfo =
-             #{offset VkEventCreateInfo, pNext}
-        type FieldIsArray "pNext" VkEventCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkEventCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkEventCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkEventCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkEventCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkEventCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkEventCreateInfo
-         where
-        type FieldType "flags" VkEventCreateInfo = VkEventCreateFlags
-        type FieldOptional "flags" VkEventCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkEventCreateInfo =
-             #{offset VkEventCreateInfo, flags}
-        type FieldIsArray "flags" VkEventCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkEventCreateInfo, flags}
-
-instance {-# OVERLAPPING #-} CanReadField "flags" VkEventCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkEventCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkEventCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkEventCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkEventCreateInfo, flags}
-
-instance Show VkEventCreateInfo where
-        showsPrec d x
-          = showString "VkEventCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) . showChar '}'
+    type StructRep VkEventCreateInfo =
+         'StructMeta "VkEventCreateInfo" VkEventCreateInfo  -- ' closing tick for hsc2hs
+                                                           #{size VkEventCreateInfo}
+           #{alignment VkEventCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkEventCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkEventCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkEventCreateFlags 'True 
+                                                          #{offset VkEventCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Export.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Export.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Export.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Export.hsc
@@ -2,20 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Export
-       (VkExportFenceCreateInfo, VkExportFenceCreateInfo', -- ' closing tick for hsc2hs
-        VkExportFenceCreateInfoKHR, VkExportMemoryAllocateInfo,
-        VkExportMemoryAllocateInfo', VkExportMemoryAllocateInfoKHR, -- ' closing tick for hsc2hs
-        VkExportMemoryAllocateInfoNV, VkExportMemoryAllocateInfoNV', -- ' closing tick for hsc2hs
-        VkExportSemaphoreCreateInfo, VkExportSemaphoreCreateInfo', -- ' closing tick for hsc2hs
+       (VkExportFenceCreateInfo, VkExportFenceCreateInfoKHR,
+        VkExportMemoryAllocateInfo, VkExportMemoryAllocateInfoKHR,
+        VkExportMemoryAllocateInfoNV, VkExportSemaphoreCreateInfo,
         VkExportSemaphoreCreateInfoKHR)
        where
-import Foreign.Storable                         (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.External      (VkExternalFenceHandleTypeFlags,
@@ -26,7 +21,6 @@
 import Graphics.Vulkan.Types.Struct.Fence       (VkFenceCreateInfo)
 import Graphics.Vulkan.Types.Struct.Memory      (VkMemoryAllocateInfo)
 import Graphics.Vulkan.Types.Struct.Semaphore   (VkSemaphoreCreateInfo)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExportFenceCreateInfo {
 --   >     VkStructureType sType;
@@ -35,148 +29,33 @@
 --   > } VkExportFenceCreateInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportFenceCreateInfo VkExportFenceCreateInfo registry at www.khronos.org>
-type VkExportFenceCreateInfo =
-     VulkanStruct VkExportFenceCreateInfo' -- ' closing tick for hsc2hs
+type VkExportFenceCreateInfo = VkStruct VkExportFenceCreateInfo' -- ' closing tick for hsc2hs
 
 data VkExportFenceCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkExportFenceCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportFenceCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportFenceCreateInfo where
-        sizeOf ~_ = #{size VkExportFenceCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExportFenceCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkExportFenceCreateInfo where
-        type StructFields VkExportFenceCreateInfo =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportFenceCreateInfo = '[VkFenceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportFenceCreateInfo where
-        type FieldType "sType" VkExportFenceCreateInfo = VkStructureType
-        type FieldOptional "sType" VkExportFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportFenceCreateInfo =
-             #{offset VkExportFenceCreateInfo, sType}
-        type FieldIsArray "sType" VkExportFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExportFenceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExportFenceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportFenceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExportFenceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportFenceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportFenceCreateInfo where
-        type FieldType "pNext" VkExportFenceCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkExportFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportFenceCreateInfo =
-             #{offset VkExportFenceCreateInfo, pNext}
-        type FieldIsArray "pNext" VkExportFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExportFenceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExportFenceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportFenceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExportFenceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportFenceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExportFenceCreateInfo where
-        type FieldType "handleTypes" VkExportFenceCreateInfo =
-             VkExternalFenceHandleTypeFlags
-        type FieldOptional "handleTypes" VkExportFenceCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExportFenceCreateInfo =
-             #{offset VkExportFenceCreateInfo, handleTypes}
-        type FieldIsArray "handleTypes" VkExportFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceCreateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleTypes" VkExportFenceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceCreateInfo, handleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportFenceCreateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleTypes" VkExportFenceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportFenceCreateInfo, handleTypes}
-
-instance Show VkExportFenceCreateInfo where
-        showsPrec d x
-          = showString "VkExportFenceCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleTypes = " .
-                            showsPrec d (getField @"handleTypes" x) . showChar '}'
+    type StructRep VkExportFenceCreateInfo =
+         'StructMeta "VkExportFenceCreateInfo" VkExportFenceCreateInfo -- ' closing tick for hsc2hs
+           #{size VkExportFenceCreateInfo}
+           #{alignment VkExportFenceCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExportFenceCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExportFenceCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleTypes" VkExternalFenceHandleTypeFlags 'True
+                #{offset VkExportFenceCreateInfo, handleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkFenceCreateInfo] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkExportFenceCreateInfo`
 type VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo
@@ -189,150 +68,33 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportMemoryAllocateInfo VkExportMemoryAllocateInfo registry at www.khronos.org>
 type VkExportMemoryAllocateInfo =
-     VulkanStruct VkExportMemoryAllocateInfo' -- ' closing tick for hsc2hs
+     VkStruct VkExportMemoryAllocateInfo' -- ' closing tick for hsc2hs
 
 data VkExportMemoryAllocateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkExportMemoryAllocateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportMemoryAllocateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportMemoryAllocateInfo where
-        sizeOf ~_ = #{size VkExportMemoryAllocateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExportMemoryAllocateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkExportMemoryAllocateInfo where
-        type StructFields VkExportMemoryAllocateInfo =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportMemoryAllocateInfo =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportMemoryAllocateInfo where
-        type FieldType "sType" VkExportMemoryAllocateInfo = VkStructureType
-        type FieldOptional "sType" VkExportMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportMemoryAllocateInfo =
-             #{offset VkExportMemoryAllocateInfo, sType}
-        type FieldIsArray "sType" VkExportMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExportMemoryAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExportMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportMemoryAllocateInfo where
-        type FieldType "pNext" VkExportMemoryAllocateInfo = Ptr Void
-        type FieldOptional "pNext" VkExportMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportMemoryAllocateInfo =
-             #{offset VkExportMemoryAllocateInfo, pNext}
-        type FieldIsArray "pNext" VkExportMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExportMemoryAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExportMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExportMemoryAllocateInfo where
-        type FieldType "handleTypes" VkExportMemoryAllocateInfo =
-             VkExternalMemoryHandleTypeFlags
-        type FieldOptional "handleTypes" VkExportMemoryAllocateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExportMemoryAllocateInfo =
-             #{offset VkExportMemoryAllocateInfo, handleTypes}
-        type FieldIsArray "handleTypes" VkExportMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleTypes" VkExportMemoryAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfo, handleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleTypes" VkExportMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfo, handleTypes}
-
-instance Show VkExportMemoryAllocateInfo where
-        showsPrec d x
-          = showString "VkExportMemoryAllocateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleTypes = " .
-                            showsPrec d (getField @"handleTypes" x) . showChar '}'
+    type StructRep VkExportMemoryAllocateInfo =
+         'StructMeta "VkExportMemoryAllocateInfo" VkExportMemoryAllocateInfo -- ' closing tick for hsc2hs
+           #{size VkExportMemoryAllocateInfo}
+           #{alignment VkExportMemoryAllocateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExportMemoryAllocateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExportMemoryAllocateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleTypes" VkExternalMemoryHandleTypeFlags 'True
+                #{offset VkExportMemoryAllocateInfo, handleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkExportMemoryAllocateInfo`
 type VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo
@@ -345,154 +107,34 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportMemoryAllocateInfoNV VkExportMemoryAllocateInfoNV registry at www.khronos.org>
 type VkExportMemoryAllocateInfoNV =
-     VulkanStruct VkExportMemoryAllocateInfoNV' -- ' closing tick for hsc2hs
+     VkStruct VkExportMemoryAllocateInfoNV' -- ' closing tick for hsc2hs
 
 data VkExportMemoryAllocateInfoNV' -- ' closing tick for hsc2hs
 
-instance Eq VkExportMemoryAllocateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportMemoryAllocateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportMemoryAllocateInfoNV where
-        sizeOf ~_ = #{size VkExportMemoryAllocateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExportMemoryAllocateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkExportMemoryAllocateInfoNV where
-        type StructFields VkExportMemoryAllocateInfoNV =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportMemoryAllocateInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportMemoryAllocateInfoNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportMemoryAllocateInfoNV =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportMemoryAllocateInfoNV where
-        type FieldType "sType" VkExportMemoryAllocateInfoNV =
-             VkStructureType
-        type FieldOptional "sType" VkExportMemoryAllocateInfoNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportMemoryAllocateInfoNV =
-             #{offset VkExportMemoryAllocateInfoNV, sType}
-        type FieldIsArray "sType" VkExportMemoryAllocateInfoNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExportMemoryAllocateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExportMemoryAllocateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportMemoryAllocateInfoNV where
-        type FieldType "pNext" VkExportMemoryAllocateInfoNV = Ptr Void
-        type FieldOptional "pNext" VkExportMemoryAllocateInfoNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportMemoryAllocateInfoNV =
-             #{offset VkExportMemoryAllocateInfoNV, pNext}
-        type FieldIsArray "pNext" VkExportMemoryAllocateInfoNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExportMemoryAllocateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExportMemoryAllocateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExportMemoryAllocateInfoNV where
-        type FieldType "handleTypes" VkExportMemoryAllocateInfoNV =
-             VkExternalMemoryHandleTypeFlagsNV
-        type FieldOptional "handleTypes" VkExportMemoryAllocateInfoNV =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExportMemoryAllocateInfoNV =
-             #{offset VkExportMemoryAllocateInfoNV, handleTypes}
-        type FieldIsArray "handleTypes" VkExportMemoryAllocateInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryAllocateInfoNV, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleTypes" VkExportMemoryAllocateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryAllocateInfoNV, handleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryAllocateInfoNV, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleTypes" VkExportMemoryAllocateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryAllocateInfoNV, handleTypes}
-
-instance Show VkExportMemoryAllocateInfoNV where
-        showsPrec d x
-          = showString "VkExportMemoryAllocateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleTypes = " .
-                            showsPrec d (getField @"handleTypes" x) . showChar '}'
+    type StructRep VkExportMemoryAllocateInfoNV =
+         'StructMeta "VkExportMemoryAllocateInfoNV" -- ' closing tick for hsc2hs
+           VkExportMemoryAllocateInfoNV
+           #{size VkExportMemoryAllocateInfoNV}
+           #{alignment VkExportMemoryAllocateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExportMemoryAllocateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExportMemoryAllocateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleTypes" VkExternalMemoryHandleTypeFlagsNV 'True
+                #{offset VkExportMemoryAllocateInfoNV, handleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkExportSemaphoreCreateInfo {
 --   >     VkStructureType sType;
@@ -502,153 +144,34 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfo registry at www.khronos.org>
 type VkExportSemaphoreCreateInfo =
-     VulkanStruct VkExportSemaphoreCreateInfo' -- ' closing tick for hsc2hs
+     VkStruct VkExportSemaphoreCreateInfo' -- ' closing tick for hsc2hs
 
 data VkExportSemaphoreCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkExportSemaphoreCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportSemaphoreCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportSemaphoreCreateInfo where
-        sizeOf ~_ = #{size VkExportSemaphoreCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExportSemaphoreCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkExportSemaphoreCreateInfo where
-        type StructFields VkExportSemaphoreCreateInfo =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportSemaphoreCreateInfo =
-             '[VkSemaphoreCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportSemaphoreCreateInfo where
-        type FieldType "sType" VkExportSemaphoreCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkExportSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportSemaphoreCreateInfo =
-             #{offset VkExportSemaphoreCreateInfo, sType}
-        type FieldIsArray "sType" VkExportSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExportSemaphoreCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportSemaphoreCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExportSemaphoreCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportSemaphoreCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportSemaphoreCreateInfo where
-        type FieldType "pNext" VkExportSemaphoreCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkExportSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportSemaphoreCreateInfo =
-             #{offset VkExportSemaphoreCreateInfo, pNext}
-        type FieldIsArray "pNext" VkExportSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExportSemaphoreCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportSemaphoreCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExportSemaphoreCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportSemaphoreCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExportSemaphoreCreateInfo where
-        type FieldType "handleTypes" VkExportSemaphoreCreateInfo =
-             VkExternalSemaphoreHandleTypeFlags
-        type FieldOptional "handleTypes" VkExportSemaphoreCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExportSemaphoreCreateInfo =
-             #{offset VkExportSemaphoreCreateInfo, handleTypes}
-        type FieldIsArray "handleTypes" VkExportSemaphoreCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreCreateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleTypes" VkExportSemaphoreCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreCreateInfo, handleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportSemaphoreCreateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleTypes" VkExportSemaphoreCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportSemaphoreCreateInfo, handleTypes}
-
-instance Show VkExportSemaphoreCreateInfo where
-        showsPrec d x
-          = showString "VkExportSemaphoreCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleTypes = " .
-                            showsPrec d (getField @"handleTypes" x) . showChar '}'
+    type StructRep VkExportSemaphoreCreateInfo =
+         'StructMeta "VkExportSemaphoreCreateInfo" -- ' closing tick for hsc2hs
+           VkExportSemaphoreCreateInfo
+           #{size VkExportSemaphoreCreateInfo}
+           #{alignment VkExportSemaphoreCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExportSemaphoreCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExportSemaphoreCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleTypes" VkExternalSemaphoreHandleTypeFlags 'True
+                #{offset VkExportSemaphoreCreateInfo, handleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSemaphoreCreateInfo] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkExportSemaphoreCreateInfo`
 type VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/ExtensionProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/ExtensionProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/ExtensionProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/ExtensionProperties.hsc
@@ -1,24 +1,15 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.ExtensionProperties
-       (VkExtensionProperties, VkExtensionProperties') where -- ' closing tick for hsc2hs
-import Foreign.Storable                 (Storable (..))
-import Graphics.Vulkan.Constants        (VK_MAX_EXTENSION_NAME_SIZE,
-                                         pattern VK_MAX_EXTENSION_NAME_SIZE)
+       (VkExtensionProperties) where
+import Graphics.Vulkan.Constants        (VK_MAX_EXTENSION_NAME_SIZE)
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExtensionProperties {
 --   >     char            extensionName[VK_MAX_EXTENSION_NAME_SIZE];
@@ -26,134 +17,25 @@
 --   > } VkExtensionProperties;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExtensionProperties VkExtensionProperties registry at www.khronos.org>
-type VkExtensionProperties = VulkanStruct VkExtensionProperties' -- ' closing tick for hsc2hs
+type VkExtensionProperties = VkStruct VkExtensionProperties' -- ' closing tick for hsc2hs
 
 data VkExtensionProperties' -- ' closing tick for hsc2hs
 
-instance Eq VkExtensionProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExtensionProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExtensionProperties where
-        sizeOf ~_ = #{size VkExtensionProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExtensionProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkExtensionProperties where
-        type StructFields VkExtensionProperties =
-             '["extensionName", "specVersion"] -- ' closing tick for hsc2hs
-        type CUnionType VkExtensionProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExtensionProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExtensionProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "extensionName" VkExtensionProperties where
-        type FieldType "extensionName" VkExtensionProperties = CChar
-        type FieldOptional "extensionName" VkExtensionProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extensionName" VkExtensionProperties =
-             #{offset VkExtensionProperties, extensionName}
-        type FieldIsArray "extensionName" VkExtensionProperties = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExtensionProperties, extensionName}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "extensionName" VkExtensionProperties where
-        type FieldArrayLength "extensionName" VkExtensionProperties =
-             VK_MAX_EXTENSION_NAME_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_EXTENSION_NAME_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkExtensionProperties, extensionName} +
-                      sizeOf (undefined :: CChar) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkExtensionProperties, extensionName} +
-                 sizeOf (undefined :: CChar) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "extensionName" VkExtensionProperties where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkExtensionProperties, extensionName} +
-                 sizeOf (undefined :: CChar) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "specVersion" VkExtensionProperties where
-        type FieldType "specVersion" VkExtensionProperties = Word32
-        type FieldOptional "specVersion" VkExtensionProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "specVersion" VkExtensionProperties =
-             #{offset VkExtensionProperties, specVersion}
-        type FieldIsArray "specVersion" VkExtensionProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExtensionProperties, specVersion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "specVersion" VkExtensionProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtensionProperties, specVersion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExtensionProperties, specVersion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "specVersion" VkExtensionProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExtensionProperties, specVersion}
-
-instance Show VkExtensionProperties where
-        showsPrec d x
-          = showString "VkExtensionProperties {" .
-              (showString "extensionName = [" .
-                 showsPrec d
-                   (let s = sizeOf
-                              (undefined :: FieldType "extensionName" VkExtensionProperties)
-                        o = fieldOffset @"extensionName" @VkExtensionProperties
-                        f i
-                          = peekByteOff (unsafePtr x) i ::
-                              IO (FieldType "extensionName" VkExtensionProperties)
-                      in
-                      unsafeDupablePerformIO . mapM f $
-                        map (\ i -> o + i * s) [0 .. VK_MAX_EXTENSION_NAME_SIZE - 1])
-                   . showChar ']')
-                .
-                showString ", " .
-                  showString "specVersion = " .
-                    showsPrec d (getField @"specVersion" x) . showChar '}'
+    type StructRep VkExtensionProperties =
+         'StructMeta "VkExtensionProperties" VkExtensionProperties  -- ' closing tick for hsc2hs
+                                                                   #{size VkExtensionProperties}
+           #{alignment VkExtensionProperties}
+           '[('FieldMeta "extensionName" CChar 'False  -- ' closing tick for hsc2hs
+                                                      #{offset VkExtensionProperties, extensionName}
+                VK_MAX_EXTENSION_NAME_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "specVersion" Word32 'False 
+                                                     #{offset VkExtensionProperties, specVersion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Extent.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Extent.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Extent.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Extent.hsc
@@ -2,17 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Extent
-       (VkExtent2D, VkExtent2D', VkExtent3D, VkExtent3D') where
-import Foreign.Storable                 (Storable (..))
+module Graphics.Vulkan.Types.Struct.Extent (VkExtent2D, VkExtent3D)
+       where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkExtent2D {
 --   >     uint32_t        width;
@@ -20,104 +16,28 @@
 --   > } VkExtent2D;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExtent2D VkExtent2D registry at www.khronos.org>
-type VkExtent2D = VulkanStruct VkExtent2D' -- ' closing tick for hsc2hs
+type VkExtent2D = VkStruct VkExtent2D' -- ' closing tick for hsc2hs
 
 data VkExtent2D' -- ' closing tick for hsc2hs
 
-instance Eq VkExtent2D where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExtent2D where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExtent2D where
-        sizeOf ~_ = #{size VkExtent2D}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExtent2D}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkExtent2D where
-        type StructFields VkExtent2D = '["width", "height"] -- ' closing tick for hsc2hs
-        type CUnionType VkExtent2D = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExtent2D = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExtent2D = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "width" VkExtent2D where
-        type FieldType "width" VkExtent2D = Word32
-        type FieldOptional "width" VkExtent2D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "width" VkExtent2D =
-             #{offset VkExtent2D, width}
-        type FieldIsArray "width" VkExtent2D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExtent2D, width}
-
-instance {-# OVERLAPPING #-} CanReadField "width" VkExtent2D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent2D, width})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkExtent2D, width}
-
-instance {-# OVERLAPPING #-} CanWriteField "width" VkExtent2D where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExtent2D, width}
-
-instance {-# OVERLAPPING #-} HasField "height" VkExtent2D where
-        type FieldType "height" VkExtent2D = Word32
-        type FieldOptional "height" VkExtent2D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "height" VkExtent2D =
-             #{offset VkExtent2D, height}
-        type FieldIsArray "height" VkExtent2D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExtent2D, height}
-
-instance {-# OVERLAPPING #-} CanReadField "height" VkExtent2D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent2D, height})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExtent2D, height}
-
-instance {-# OVERLAPPING #-} CanWriteField "height" VkExtent2D
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExtent2D, height}
-
-instance Show VkExtent2D where
-        showsPrec d x
-          = showString "VkExtent2D {" .
-              showString "width = " .
-                showsPrec d (getField @"width" x) .
-                  showString ", " .
-                    showString "height = " .
-                      showsPrec d (getField @"height" x) . showChar '}'
+    type StructRep VkExtent2D =
+         'StructMeta "VkExtent2D" VkExtent2D  -- ' closing tick for hsc2hs
+                                             #{size VkExtent2D}
+           #{alignment VkExtent2D}
+           '[('FieldMeta "width" Word32 'False  -- ' closing tick for hsc2hs
+                                               #{offset VkExtent2D, width}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "height" Word32 'False 
+                                                #{offset VkExtent2D, height}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkExtent3D {
 --   >     uint32_t        width;
@@ -126,131 +46,30 @@
 --   > } VkExtent3D;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExtent3D VkExtent3D registry at www.khronos.org>
-type VkExtent3D = VulkanStruct VkExtent3D' -- ' closing tick for hsc2hs
+type VkExtent3D = VkStruct VkExtent3D' -- ' closing tick for hsc2hs
 
 data VkExtent3D' -- ' closing tick for hsc2hs
 
-instance Eq VkExtent3D where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExtent3D where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExtent3D where
-        sizeOf ~_ = #{size VkExtent3D}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExtent3D}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkExtent3D where
-        type StructFields VkExtent3D = '["width", "height", "depth"] -- ' closing tick for hsc2hs
-        type CUnionType VkExtent3D = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExtent3D = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExtent3D = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "width" VkExtent3D where
-        type FieldType "width" VkExtent3D = Word32
-        type FieldOptional "width" VkExtent3D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "width" VkExtent3D =
-             #{offset VkExtent3D, width}
-        type FieldIsArray "width" VkExtent3D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExtent3D, width}
-
-instance {-# OVERLAPPING #-} CanReadField "width" VkExtent3D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent3D, width})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkExtent3D, width}
-
-instance {-# OVERLAPPING #-} CanWriteField "width" VkExtent3D where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExtent3D, width}
-
-instance {-# OVERLAPPING #-} HasField "height" VkExtent3D where
-        type FieldType "height" VkExtent3D = Word32
-        type FieldOptional "height" VkExtent3D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "height" VkExtent3D =
-             #{offset VkExtent3D, height}
-        type FieldIsArray "height" VkExtent3D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExtent3D, height}
-
-instance {-# OVERLAPPING #-} CanReadField "height" VkExtent3D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent3D, height})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExtent3D, height}
-
-instance {-# OVERLAPPING #-} CanWriteField "height" VkExtent3D
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExtent3D, height}
-
-instance {-# OVERLAPPING #-} HasField "depth" VkExtent3D where
-        type FieldType "depth" VkExtent3D = Word32
-        type FieldOptional "depth" VkExtent3D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depth" VkExtent3D =
-             #{offset VkExtent3D, depth}
-        type FieldIsArray "depth" VkExtent3D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExtent3D, depth}
-
-instance {-# OVERLAPPING #-} CanReadField "depth" VkExtent3D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExtent3D, depth})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkExtent3D, depth}
-
-instance {-# OVERLAPPING #-} CanWriteField "depth" VkExtent3D where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExtent3D, depth}
-
-instance Show VkExtent3D where
-        showsPrec d x
-          = showString "VkExtent3D {" .
-              showString "width = " .
-                showsPrec d (getField @"width" x) .
-                  showString ", " .
-                    showString "height = " .
-                      showsPrec d (getField @"height" x) .
-                        showString ", " .
-                          showString "depth = " .
-                            showsPrec d (getField @"depth" x) . showChar '}'
+    type StructRep VkExtent3D =
+         'StructMeta "VkExtent3D" VkExtent3D  -- ' closing tick for hsc2hs
+                                             #{size VkExtent3D}
+           #{alignment VkExtent3D}
+           '[('FieldMeta "width" Word32 'False  -- ' closing tick for hsc2hs
+                                               #{offset VkExtent3D, width}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "height" Word32 'False 
+                                                #{offset VkExtent3D, height}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depth" Word32 'False 
+                                               #{offset VkExtent3D, depth}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/External.hsc b/src-gen/Graphics/Vulkan/Types/Struct/External.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/External.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/External.hsc
@@ -2,1815 +2,441 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.External
-       (VkExternalBufferProperties, VkExternalBufferProperties', -- ' closing tick for hsc2hs
-        VkExternalBufferPropertiesKHR, VkExternalFenceProperties,
-        VkExternalFenceProperties', VkExternalFencePropertiesKHR, -- ' closing tick for hsc2hs
-        VkExternalImageFormatProperties, VkExternalImageFormatProperties', -- ' closing tick for hsc2hs
-        VkExternalImageFormatPropertiesKHR,
-        VkExternalImageFormatPropertiesNV,
-        VkExternalImageFormatPropertiesNV', -- ' closing tick for hsc2hs
-        VkExternalMemoryBufferCreateInfo,
-        VkExternalMemoryBufferCreateInfo', -- ' closing tick for hsc2hs
-        VkExternalMemoryBufferCreateInfoKHR,
-        VkExternalMemoryImageCreateInfo, VkExternalMemoryImageCreateInfo', -- ' closing tick for hsc2hs
-        VkExternalMemoryImageCreateInfoKHR,
-        VkExternalMemoryImageCreateInfoNV,
-        VkExternalMemoryImageCreateInfoNV', VkExternalMemoryProperties, -- ' closing tick for hsc2hs
-        VkExternalMemoryProperties', VkExternalMemoryPropertiesKHR, -- ' closing tick for hsc2hs
-        VkExternalSemaphoreProperties, VkExternalSemaphoreProperties', -- ' closing tick for hsc2hs
-        VkExternalSemaphorePropertiesKHR)
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.Enum.External      (VkExternalFenceFeatureFlags,
-                                                 VkExternalFenceHandleTypeFlags,
-                                                 VkExternalMemoryFeatureFlags,
-                                                 VkExternalMemoryFeatureFlagsNV,
-                                                 VkExternalMemoryHandleTypeFlags,
-                                                 VkExternalMemoryHandleTypeFlagsNV,
-                                                 VkExternalSemaphoreFeatureFlags,
-                                                 VkExternalSemaphoreHandleTypeFlags)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Struct.Buffer      (VkBufferCreateInfo)
-import Graphics.Vulkan.Types.Struct.Image       (VkImageCreateInfo,
-                                                 VkImageFormatProperties,
-                                                 VkImageFormatProperties2)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkExternalBufferProperties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkExternalMemoryProperties    externalMemoryProperties;
---   > } VkExternalBufferProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalBufferProperties VkExternalBufferProperties registry at www.khronos.org>
-type VkExternalBufferProperties =
-     VulkanStruct VkExternalBufferProperties' -- ' closing tick for hsc2hs
-
-data VkExternalBufferProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalBufferProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalBufferProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalBufferProperties where
-        sizeOf ~_ = #{size VkExternalBufferProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExternalBufferProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalBufferProperties where
-        type StructFields VkExternalBufferProperties =
-             '["sType", "pNext", "externalMemoryProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalBufferProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalBufferProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalBufferProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalBufferProperties where
-        type FieldType "sType" VkExternalBufferProperties = VkStructureType
-        type FieldOptional "sType" VkExternalBufferProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalBufferProperties =
-             #{offset VkExternalBufferProperties, sType}
-        type FieldIsArray "sType" VkExternalBufferProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalBufferProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExternalBufferProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalBufferProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalBufferProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExternalBufferProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalBufferProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalBufferProperties where
-        type FieldType "pNext" VkExternalBufferProperties = Ptr Void
-        type FieldOptional "pNext" VkExternalBufferProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalBufferProperties =
-             #{offset VkExternalBufferProperties, pNext}
-        type FieldIsArray "pNext" VkExternalBufferProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalBufferProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExternalBufferProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalBufferProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalBufferProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExternalBufferProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalBufferProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalMemoryProperties" VkExternalBufferProperties
-         where
-        type FieldType "externalMemoryProperties"
-               VkExternalBufferProperties
-             = VkExternalMemoryProperties
-        type FieldOptional "externalMemoryProperties"
-               VkExternalBufferProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "externalMemoryProperties"
-               VkExternalBufferProperties
-             =
-             #{offset VkExternalBufferProperties, externalMemoryProperties}
-        type FieldIsArray "externalMemoryProperties"
-               VkExternalBufferProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalBufferProperties, externalMemoryProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "externalMemoryProperties" VkExternalBufferProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalBufferProperties, externalMemoryProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalBufferProperties, externalMemoryProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "externalMemoryProperties" VkExternalBufferProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalBufferProperties, externalMemoryProperties}
-
-instance Show VkExternalBufferProperties where
-        showsPrec d x
-          = showString "VkExternalBufferProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "externalMemoryProperties = " .
-                            showsPrec d (getField @"externalMemoryProperties" x) . showChar '}'
-
--- | Alias for `VkExternalBufferProperties`
-type VkExternalBufferPropertiesKHR = VkExternalBufferProperties
-
--- | > typedef struct VkExternalFenceProperties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes;
---   >     VkExternalFenceHandleTypeFlags compatibleHandleTypes;
---   >     VkExternalFenceFeatureFlags externalFenceFeatures;
---   > } VkExternalFenceProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalFenceProperties VkExternalFenceProperties registry at www.khronos.org>
-type VkExternalFenceProperties =
-     VulkanStruct VkExternalFenceProperties' -- ' closing tick for hsc2hs
-
-data VkExternalFenceProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalFenceProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalFenceProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalFenceProperties where
-        sizeOf ~_ = #{size VkExternalFenceProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExternalFenceProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalFenceProperties where
-        type StructFields VkExternalFenceProperties =
-             '["sType", "pNext", "exportFromImportedHandleTypes", -- ' closing tick for hsc2hs
-               "compatibleHandleTypes", "externalFenceFeatures"]
-        type CUnionType VkExternalFenceProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalFenceProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalFenceProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalFenceProperties where
-        type FieldType "sType" VkExternalFenceProperties = VkStructureType
-        type FieldOptional "sType" VkExternalFenceProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalFenceProperties =
-             #{offset VkExternalFenceProperties, sType}
-        type FieldIsArray "sType" VkExternalFenceProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFenceProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExternalFenceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFenceProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalFenceProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExternalFenceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalFenceProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalFenceProperties where
-        type FieldType "pNext" VkExternalFenceProperties = Ptr Void
-        type FieldOptional "pNext" VkExternalFenceProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalFenceProperties =
-             #{offset VkExternalFenceProperties, pNext}
-        type FieldIsArray "pNext" VkExternalFenceProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFenceProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExternalFenceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFenceProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalFenceProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExternalFenceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalFenceProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "exportFromImportedHandleTypes" VkExternalFenceProperties
-         where
-        type FieldType "exportFromImportedHandleTypes"
-               VkExternalFenceProperties
-             = VkExternalFenceHandleTypeFlags
-        type FieldOptional "exportFromImportedHandleTypes"
-               VkExternalFenceProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "exportFromImportedHandleTypes"
-               VkExternalFenceProperties
-             =
-             #{offset VkExternalFenceProperties, exportFromImportedHandleTypes}
-        type FieldIsArray "exportFromImportedHandleTypes"
-               VkExternalFenceProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFenceProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "exportFromImportedHandleTypes"
-           VkExternalFenceProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFenceProperties, exportFromImportedHandleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalFenceProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "exportFromImportedHandleTypes"
-           VkExternalFenceProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalFenceProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "compatibleHandleTypes" VkExternalFenceProperties where
-        type FieldType "compatibleHandleTypes" VkExternalFenceProperties =
-             VkExternalFenceHandleTypeFlags
-        type FieldOptional "compatibleHandleTypes"
-               VkExternalFenceProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compatibleHandleTypes" VkExternalFenceProperties
-             =
-             #{offset VkExternalFenceProperties, compatibleHandleTypes}
-        type FieldIsArray "compatibleHandleTypes" VkExternalFenceProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFenceProperties, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compatibleHandleTypes" VkExternalFenceProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFenceProperties, compatibleHandleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalFenceProperties, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compatibleHandleTypes" VkExternalFenceProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalFenceProperties, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalFenceFeatures" VkExternalFenceProperties where
-        type FieldType "externalFenceFeatures" VkExternalFenceProperties =
-             VkExternalFenceFeatureFlags
-        type FieldOptional "externalFenceFeatures"
-               VkExternalFenceProperties
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "externalFenceFeatures" VkExternalFenceProperties
-             =
-             #{offset VkExternalFenceProperties, externalFenceFeatures}
-        type FieldIsArray "externalFenceFeatures" VkExternalFenceProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFenceProperties, externalFenceFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "externalFenceFeatures" VkExternalFenceProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFenceProperties, externalFenceFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalFenceProperties, externalFenceFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "externalFenceFeatures" VkExternalFenceProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalFenceProperties, externalFenceFeatures}
-
-instance Show VkExternalFenceProperties where
-        showsPrec d x
-          = showString "VkExternalFenceProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "exportFromImportedHandleTypes = " .
-                            showsPrec d (getField @"exportFromImportedHandleTypes" x) .
-                              showString ", " .
-                                showString "compatibleHandleTypes = " .
-                                  showsPrec d (getField @"compatibleHandleTypes" x) .
-                                    showString ", " .
-                                      showString "externalFenceFeatures = " .
-                                        showsPrec d (getField @"externalFenceFeatures" x) .
-                                          showChar '}'
-
--- | Alias for `VkExternalFenceProperties`
-type VkExternalFencePropertiesKHR = VkExternalFenceProperties
-
--- | > typedef struct VkExternalImageFormatProperties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkExternalMemoryProperties externalMemoryProperties;
---   > } VkExternalImageFormatProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalImageFormatProperties VkExternalImageFormatProperties registry at www.khronos.org>
-type VkExternalImageFormatProperties =
-     VulkanStruct VkExternalImageFormatProperties' -- ' closing tick for hsc2hs
-
-data VkExternalImageFormatProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalImageFormatProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalImageFormatProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalImageFormatProperties where
-        sizeOf ~_ = #{size VkExternalImageFormatProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalImageFormatProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalImageFormatProperties where
-        type StructFields VkExternalImageFormatProperties =
-             '["sType", "pNext", "externalMemoryProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalImageFormatProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalImageFormatProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalImageFormatProperties =
-             '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalImageFormatProperties where
-        type FieldType "sType" VkExternalImageFormatProperties =
-             VkStructureType
-        type FieldOptional "sType" VkExternalImageFormatProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalImageFormatProperties =
-             #{offset VkExternalImageFormatProperties, sType}
-        type FieldIsArray "sType" VkExternalImageFormatProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExternalImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalImageFormatProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExternalImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalImageFormatProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalImageFormatProperties where
-        type FieldType "pNext" VkExternalImageFormatProperties = Ptr Void
-        type FieldOptional "pNext" VkExternalImageFormatProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalImageFormatProperties =
-             #{offset VkExternalImageFormatProperties, pNext}
-        type FieldIsArray "pNext" VkExternalImageFormatProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExternalImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalImageFormatProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExternalImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalImageFormatProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalMemoryProperties" VkExternalImageFormatProperties
-         where
-        type FieldType "externalMemoryProperties"
-               VkExternalImageFormatProperties
-             = VkExternalMemoryProperties
-        type FieldOptional "externalMemoryProperties"
-               VkExternalImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "externalMemoryProperties"
-               VkExternalImageFormatProperties
-             =
-             #{offset VkExternalImageFormatProperties, externalMemoryProperties}
-        type FieldIsArray "externalMemoryProperties"
-               VkExternalImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatProperties, externalMemoryProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "externalMemoryProperties"
-           VkExternalImageFormatProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatProperties, externalMemoryProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalImageFormatProperties, externalMemoryProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "externalMemoryProperties"
-           VkExternalImageFormatProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalImageFormatProperties, externalMemoryProperties}
-
-instance Show VkExternalImageFormatProperties where
-        showsPrec d x
-          = showString "VkExternalImageFormatProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "externalMemoryProperties = " .
-                            showsPrec d (getField @"externalMemoryProperties" x) . showChar '}'
-
--- | Alias for `VkExternalImageFormatProperties`
-type VkExternalImageFormatPropertiesKHR =
-     VkExternalImageFormatProperties
-
--- | > typedef struct VkExternalImageFormatPropertiesNV {
---   >     VkImageFormatProperties          imageFormatProperties;
---   >     VkExternalMemoryFeatureFlagsNV   externalMemoryFeatures;
---   >     VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
---   >     VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
---   > } VkExternalImageFormatPropertiesNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalImageFormatPropertiesNV VkExternalImageFormatPropertiesNV registry at www.khronos.org>
-type VkExternalImageFormatPropertiesNV =
-     VulkanStruct VkExternalImageFormatPropertiesNV' -- ' closing tick for hsc2hs
-
-data VkExternalImageFormatPropertiesNV' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalImageFormatPropertiesNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalImageFormatPropertiesNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalImageFormatPropertiesNV where
-        sizeOf ~_ = #{size VkExternalImageFormatPropertiesNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalImageFormatPropertiesNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalImageFormatPropertiesNV where
-        type StructFields VkExternalImageFormatPropertiesNV =
-             '["imageFormatProperties", "externalMemoryFeatures", -- ' closing tick for hsc2hs
-               "exportFromImportedHandleTypes", "compatibleHandleTypes"]
-        type CUnionType VkExternalImageFormatPropertiesNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalImageFormatPropertiesNV = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalImageFormatPropertiesNV = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "imageFormatProperties" VkExternalImageFormatPropertiesNV
-         where
-        type FieldType "imageFormatProperties"
-               VkExternalImageFormatPropertiesNV
-             = VkImageFormatProperties
-        type FieldOptional "imageFormatProperties"
-               VkExternalImageFormatPropertiesNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageFormatProperties"
-               VkExternalImageFormatPropertiesNV
-             =
-             #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
-        type FieldIsArray "imageFormatProperties"
-               VkExternalImageFormatPropertiesNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageFormatProperties"
-           VkExternalImageFormatPropertiesNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageFormatProperties"
-           VkExternalImageFormatPropertiesNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalMemoryFeatures" VkExternalImageFormatPropertiesNV
-         where
-        type FieldType "externalMemoryFeatures"
-               VkExternalImageFormatPropertiesNV
-             = VkExternalMemoryFeatureFlagsNV
-        type FieldOptional "externalMemoryFeatures"
-               VkExternalImageFormatPropertiesNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "externalMemoryFeatures"
-               VkExternalImageFormatPropertiesNV
-             =
-             #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
-        type FieldIsArray "externalMemoryFeatures"
-               VkExternalImageFormatPropertiesNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "externalMemoryFeatures"
-           VkExternalImageFormatPropertiesNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "externalMemoryFeatures"
-           VkExternalImageFormatPropertiesNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
-
-instance {-# OVERLAPPING #-}
-         HasField "exportFromImportedHandleTypes"
-           VkExternalImageFormatPropertiesNV
-         where
-        type FieldType "exportFromImportedHandleTypes"
-               VkExternalImageFormatPropertiesNV
-             = VkExternalMemoryHandleTypeFlagsNV
-        type FieldOptional "exportFromImportedHandleTypes"
-               VkExternalImageFormatPropertiesNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "exportFromImportedHandleTypes"
-               VkExternalImageFormatPropertiesNV
-             =
-             #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
-        type FieldIsArray "exportFromImportedHandleTypes"
-               VkExternalImageFormatPropertiesNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "exportFromImportedHandleTypes"
-           VkExternalImageFormatPropertiesNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "exportFromImportedHandleTypes"
-           VkExternalImageFormatPropertiesNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "compatibleHandleTypes" VkExternalImageFormatPropertiesNV
-         where
-        type FieldType "compatibleHandleTypes"
-               VkExternalImageFormatPropertiesNV
-             = VkExternalMemoryHandleTypeFlagsNV
-        type FieldOptional "compatibleHandleTypes"
-               VkExternalImageFormatPropertiesNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "compatibleHandleTypes"
-               VkExternalImageFormatPropertiesNV
-             =
-             #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
-        type FieldIsArray "compatibleHandleTypes"
-               VkExternalImageFormatPropertiesNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compatibleHandleTypes"
-           VkExternalImageFormatPropertiesNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compatibleHandleTypes"
-           VkExternalImageFormatPropertiesNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
-
-instance Show VkExternalImageFormatPropertiesNV where
-        showsPrec d x
-          = showString "VkExternalImageFormatPropertiesNV {" .
-              showString "imageFormatProperties = " .
-                showsPrec d (getField @"imageFormatProperties" x) .
-                  showString ", " .
-                    showString "externalMemoryFeatures = " .
-                      showsPrec d (getField @"externalMemoryFeatures" x) .
-                        showString ", " .
-                          showString "exportFromImportedHandleTypes = " .
-                            showsPrec d (getField @"exportFromImportedHandleTypes" x) .
-                              showString ", " .
-                                showString "compatibleHandleTypes = " .
-                                  showsPrec d (getField @"compatibleHandleTypes" x) . showChar '}'
-
--- | > typedef struct VkExternalMemoryBufferCreateInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlags handleTypes;
---   > } VkExternalMemoryBufferCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfo registry at www.khronos.org>
-type VkExternalMemoryBufferCreateInfo =
-     VulkanStruct VkExternalMemoryBufferCreateInfo' -- ' closing tick for hsc2hs
-
-data VkExternalMemoryBufferCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalMemoryBufferCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalMemoryBufferCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalMemoryBufferCreateInfo where
-        sizeOf ~_ = #{size VkExternalMemoryBufferCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalMemoryBufferCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalMemoryBufferCreateInfo where
-        type StructFields VkExternalMemoryBufferCreateInfo =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalMemoryBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalMemoryBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExternalMemoryBufferCreateInfo =
-             '[VkBufferCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalMemoryBufferCreateInfo where
-        type FieldType "sType" VkExternalMemoryBufferCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkExternalMemoryBufferCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalMemoryBufferCreateInfo =
-             #{offset VkExternalMemoryBufferCreateInfo, sType}
-        type FieldIsArray "sType" VkExternalMemoryBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryBufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExternalMemoryBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryBufferCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryBufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExternalMemoryBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryBufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalMemoryBufferCreateInfo where
-        type FieldType "pNext" VkExternalMemoryBufferCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkExternalMemoryBufferCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalMemoryBufferCreateInfo =
-             #{offset VkExternalMemoryBufferCreateInfo, pNext}
-        type FieldIsArray "pNext" VkExternalMemoryBufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryBufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExternalMemoryBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryBufferCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryBufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExternalMemoryBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryBufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExternalMemoryBufferCreateInfo where
-        type FieldType "handleTypes" VkExternalMemoryBufferCreateInfo =
-             VkExternalMemoryHandleTypeFlags
-        type FieldOptional "handleTypes" VkExternalMemoryBufferCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExternalMemoryBufferCreateInfo =
-             #{offset VkExternalMemoryBufferCreateInfo, handleTypes}
-        type FieldIsArray "handleTypes" VkExternalMemoryBufferCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryBufferCreateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleTypes" VkExternalMemoryBufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryBufferCreateInfo, handleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryBufferCreateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleTypes" VkExternalMemoryBufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryBufferCreateInfo, handleTypes}
-
-instance Show VkExternalMemoryBufferCreateInfo where
-        showsPrec d x
-          = showString "VkExternalMemoryBufferCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleTypes = " .
-                            showsPrec d (getField @"handleTypes" x) . showChar '}'
-
--- | Alias for `VkExternalMemoryBufferCreateInfo`
-type VkExternalMemoryBufferCreateInfoKHR =
-     VkExternalMemoryBufferCreateInfo
-
--- | > typedef struct VkExternalMemoryImageCreateInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlags handleTypes;
---   > } VkExternalMemoryImageCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfo registry at www.khronos.org>
-type VkExternalMemoryImageCreateInfo =
-     VulkanStruct VkExternalMemoryImageCreateInfo' -- ' closing tick for hsc2hs
-
-data VkExternalMemoryImageCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalMemoryImageCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalMemoryImageCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalMemoryImageCreateInfo where
-        sizeOf ~_ = #{size VkExternalMemoryImageCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalMemoryImageCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalMemoryImageCreateInfo where
-        type StructFields VkExternalMemoryImageCreateInfo =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalMemoryImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalMemoryImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExternalMemoryImageCreateInfo =
-             '[VkImageCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalMemoryImageCreateInfo where
-        type FieldType "sType" VkExternalMemoryImageCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkExternalMemoryImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalMemoryImageCreateInfo =
-             #{offset VkExternalMemoryImageCreateInfo, sType}
-        type FieldIsArray "sType" VkExternalMemoryImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExternalMemoryImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExternalMemoryImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalMemoryImageCreateInfo where
-        type FieldType "pNext" VkExternalMemoryImageCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkExternalMemoryImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalMemoryImageCreateInfo =
-             #{offset VkExternalMemoryImageCreateInfo, pNext}
-        type FieldIsArray "pNext" VkExternalMemoryImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExternalMemoryImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExternalMemoryImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExternalMemoryImageCreateInfo where
-        type FieldType "handleTypes" VkExternalMemoryImageCreateInfo =
-             VkExternalMemoryHandleTypeFlags
-        type FieldOptional "handleTypes" VkExternalMemoryImageCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExternalMemoryImageCreateInfo =
-             #{offset VkExternalMemoryImageCreateInfo, handleTypes}
-        type FieldIsArray "handleTypes" VkExternalMemoryImageCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleTypes" VkExternalMemoryImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfo, handleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfo, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleTypes" VkExternalMemoryImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfo, handleTypes}
-
-instance Show VkExternalMemoryImageCreateInfo where
-        showsPrec d x
-          = showString "VkExternalMemoryImageCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleTypes = " .
-                            showsPrec d (getField @"handleTypes" x) . showChar '}'
-
--- | Alias for `VkExternalMemoryImageCreateInfo`
-type VkExternalMemoryImageCreateInfoKHR =
-     VkExternalMemoryImageCreateInfo
-
--- | > typedef struct VkExternalMemoryImageCreateInfoNV {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagsNV handleTypes;
---   > } VkExternalMemoryImageCreateInfoNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalMemoryImageCreateInfoNV VkExternalMemoryImageCreateInfoNV registry at www.khronos.org>
-type VkExternalMemoryImageCreateInfoNV =
-     VulkanStruct VkExternalMemoryImageCreateInfoNV' -- ' closing tick for hsc2hs
-
-data VkExternalMemoryImageCreateInfoNV' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalMemoryImageCreateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalMemoryImageCreateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalMemoryImageCreateInfoNV where
-        sizeOf ~_ = #{size VkExternalMemoryImageCreateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalMemoryImageCreateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalMemoryImageCreateInfoNV where
-        type StructFields VkExternalMemoryImageCreateInfoNV =
-             '["sType", "pNext", "handleTypes"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalMemoryImageCreateInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalMemoryImageCreateInfoNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExternalMemoryImageCreateInfoNV =
-             '[VkImageCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalMemoryImageCreateInfoNV where
-        type FieldType "sType" VkExternalMemoryImageCreateInfoNV =
-             VkStructureType
-        type FieldOptional "sType" VkExternalMemoryImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalMemoryImageCreateInfoNV =
-             #{offset VkExternalMemoryImageCreateInfoNV, sType}
-        type FieldIsArray "sType" VkExternalMemoryImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExternalMemoryImageCreateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExternalMemoryImageCreateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalMemoryImageCreateInfoNV where
-        type FieldType "pNext" VkExternalMemoryImageCreateInfoNV = Ptr Void
-        type FieldOptional "pNext" VkExternalMemoryImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalMemoryImageCreateInfoNV =
-             #{offset VkExternalMemoryImageCreateInfoNV, pNext}
-        type FieldIsArray "pNext" VkExternalMemoryImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExternalMemoryImageCreateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExternalMemoryImageCreateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleTypes" VkExternalMemoryImageCreateInfoNV where
-        type FieldType "handleTypes" VkExternalMemoryImageCreateInfoNV =
-             VkExternalMemoryHandleTypeFlagsNV
-        type FieldOptional "handleTypes" VkExternalMemoryImageCreateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleTypes" VkExternalMemoryImageCreateInfoNV =
-             #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
-        type FieldIsArray "handleTypes" VkExternalMemoryImageCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleTypes" VkExternalMemoryImageCreateInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryImageCreateInfoNV, handleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleTypes" VkExternalMemoryImageCreateInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
-
-instance Show VkExternalMemoryImageCreateInfoNV where
-        showsPrec d x
-          = showString "VkExternalMemoryImageCreateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleTypes = " .
-                            showsPrec d (getField @"handleTypes" x) . showChar '}'
-
--- | > typedef struct VkExternalMemoryProperties {
---   >     VkExternalMemoryFeatureFlags  externalMemoryFeatures;
---   >     VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;
---   >     VkExternalMemoryHandleTypeFlags compatibleHandleTypes;
---   > } VkExternalMemoryProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalMemoryProperties VkExternalMemoryProperties registry at www.khronos.org>
-type VkExternalMemoryProperties =
-     VulkanStruct VkExternalMemoryProperties' -- ' closing tick for hsc2hs
-
-data VkExternalMemoryProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalMemoryProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalMemoryProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalMemoryProperties where
-        sizeOf ~_ = #{size VkExternalMemoryProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExternalMemoryProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalMemoryProperties where
-        type StructFields VkExternalMemoryProperties =
-             '["externalMemoryFeatures", "exportFromImportedHandleTypes", -- ' closing tick for hsc2hs
-               "compatibleHandleTypes"]
-        type CUnionType VkExternalMemoryProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalMemoryProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalMemoryProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "externalMemoryFeatures" VkExternalMemoryProperties where
-        type FieldType "externalMemoryFeatures" VkExternalMemoryProperties
-             = VkExternalMemoryFeatureFlags
-        type FieldOptional "externalMemoryFeatures"
-               VkExternalMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "externalMemoryFeatures"
-               VkExternalMemoryProperties
-             =
-             #{offset VkExternalMemoryProperties, externalMemoryFeatures}
-        type FieldIsArray "externalMemoryFeatures"
-               VkExternalMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryProperties, externalMemoryFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "externalMemoryFeatures" VkExternalMemoryProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryProperties, externalMemoryFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryProperties, externalMemoryFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "externalMemoryFeatures" VkExternalMemoryProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryProperties, externalMemoryFeatures}
-
-instance {-# OVERLAPPING #-}
-         HasField "exportFromImportedHandleTypes" VkExternalMemoryProperties
-         where
-        type FieldType "exportFromImportedHandleTypes"
-               VkExternalMemoryProperties
-             = VkExternalMemoryHandleTypeFlags
-        type FieldOptional "exportFromImportedHandleTypes"
-               VkExternalMemoryProperties
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "exportFromImportedHandleTypes"
-               VkExternalMemoryProperties
-             =
-             #{offset VkExternalMemoryProperties, exportFromImportedHandleTypes}
-        type FieldIsArray "exportFromImportedHandleTypes"
-               VkExternalMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "exportFromImportedHandleTypes"
-           VkExternalMemoryProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryProperties, exportFromImportedHandleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "exportFromImportedHandleTypes"
-           VkExternalMemoryProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "compatibleHandleTypes" VkExternalMemoryProperties where
-        type FieldType "compatibleHandleTypes" VkExternalMemoryProperties =
-             VkExternalMemoryHandleTypeFlags
-        type FieldOptional "compatibleHandleTypes"
-               VkExternalMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compatibleHandleTypes" VkExternalMemoryProperties
-             =
-             #{offset VkExternalMemoryProperties, compatibleHandleTypes}
-        type FieldIsArray "compatibleHandleTypes"
-               VkExternalMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalMemoryProperties, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compatibleHandleTypes" VkExternalMemoryProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalMemoryProperties, compatibleHandleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalMemoryProperties, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compatibleHandleTypes" VkExternalMemoryProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalMemoryProperties, compatibleHandleTypes}
-
-instance Show VkExternalMemoryProperties where
-        showsPrec d x
-          = showString "VkExternalMemoryProperties {" .
-              showString "externalMemoryFeatures = " .
-                showsPrec d (getField @"externalMemoryFeatures" x) .
-                  showString ", " .
-                    showString "exportFromImportedHandleTypes = " .
-                      showsPrec d (getField @"exportFromImportedHandleTypes" x) .
-                        showString ", " .
-                          showString "compatibleHandleTypes = " .
-                            showsPrec d (getField @"compatibleHandleTypes" x) . showChar '}'
-
--- | Alias for `VkExternalMemoryProperties`
-type VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties
-
--- | > typedef struct VkExternalSemaphoreProperties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes;
---   >     VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes;
---   >     VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures;
---   > } VkExternalSemaphoreProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalSemaphoreProperties VkExternalSemaphoreProperties registry at www.khronos.org>
-type VkExternalSemaphoreProperties =
-     VulkanStruct VkExternalSemaphoreProperties' -- ' closing tick for hsc2hs
-
-data VkExternalSemaphoreProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalSemaphoreProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalSemaphoreProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalSemaphoreProperties where
-        sizeOf ~_ = #{size VkExternalSemaphoreProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExternalSemaphoreProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalSemaphoreProperties where
-        type StructFields VkExternalSemaphoreProperties =
-             '["sType", "pNext", "exportFromImportedHandleTypes", -- ' closing tick for hsc2hs
-               "compatibleHandleTypes", "externalSemaphoreFeatures"]
-        type CUnionType VkExternalSemaphoreProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalSemaphoreProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkExternalSemaphoreProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalSemaphoreProperties where
-        type FieldType "sType" VkExternalSemaphoreProperties =
-             VkStructureType
-        type FieldOptional "sType" VkExternalSemaphoreProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalSemaphoreProperties =
-             #{offset VkExternalSemaphoreProperties, sType}
-        type FieldIsArray "sType" VkExternalSemaphoreProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphoreProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExternalSemaphoreProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphoreProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalSemaphoreProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExternalSemaphoreProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalSemaphoreProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalSemaphoreProperties where
-        type FieldType "pNext" VkExternalSemaphoreProperties = Ptr Void
-        type FieldOptional "pNext" VkExternalSemaphoreProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalSemaphoreProperties =
-             #{offset VkExternalSemaphoreProperties, pNext}
-        type FieldIsArray "pNext" VkExternalSemaphoreProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphoreProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExternalSemaphoreProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphoreProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalSemaphoreProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExternalSemaphoreProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalSemaphoreProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "exportFromImportedHandleTypes"
-           VkExternalSemaphoreProperties
-         where
-        type FieldType "exportFromImportedHandleTypes"
-               VkExternalSemaphoreProperties
-             = VkExternalSemaphoreHandleTypeFlags
-        type FieldOptional "exportFromImportedHandleTypes"
-               VkExternalSemaphoreProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "exportFromImportedHandleTypes"
-               VkExternalSemaphoreProperties
-             =
-             #{offset VkExternalSemaphoreProperties, exportFromImportedHandleTypes}
-        type FieldIsArray "exportFromImportedHandleTypes"
-               VkExternalSemaphoreProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphoreProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "exportFromImportedHandleTypes"
-           VkExternalSemaphoreProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphoreProperties, exportFromImportedHandleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalSemaphoreProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "exportFromImportedHandleTypes"
-           VkExternalSemaphoreProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalSemaphoreProperties, exportFromImportedHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "compatibleHandleTypes" VkExternalSemaphoreProperties
-         where
-        type FieldType "compatibleHandleTypes"
-               VkExternalSemaphoreProperties
-             = VkExternalSemaphoreHandleTypeFlags
-        type FieldOptional "compatibleHandleTypes"
-               VkExternalSemaphoreProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compatibleHandleTypes"
-               VkExternalSemaphoreProperties
-             =
-             #{offset VkExternalSemaphoreProperties, compatibleHandleTypes}
-        type FieldIsArray "compatibleHandleTypes"
-               VkExternalSemaphoreProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphoreProperties, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compatibleHandleTypes" VkExternalSemaphoreProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphoreProperties, compatibleHandleTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalSemaphoreProperties, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compatibleHandleTypes" VkExternalSemaphoreProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalSemaphoreProperties, compatibleHandleTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalSemaphoreFeatures" VkExternalSemaphoreProperties
-         where
-        type FieldType "externalSemaphoreFeatures"
-               VkExternalSemaphoreProperties
-             = VkExternalSemaphoreFeatureFlags
-        type FieldOptional "externalSemaphoreFeatures"
-               VkExternalSemaphoreProperties
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "externalSemaphoreFeatures"
-               VkExternalSemaphoreProperties
-             =
-             #{offset VkExternalSemaphoreProperties, externalSemaphoreFeatures}
-        type FieldIsArray "externalSemaphoreFeatures"
-               VkExternalSemaphoreProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalSemaphoreProperties, externalSemaphoreFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "externalSemaphoreFeatures"
-           VkExternalSemaphoreProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalSemaphoreProperties, externalSemaphoreFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalSemaphoreProperties, externalSemaphoreFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "externalSemaphoreFeatures"
-           VkExternalSemaphoreProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalSemaphoreProperties, externalSemaphoreFeatures}
-
-instance Show VkExternalSemaphoreProperties where
-        showsPrec d x
-          = showString "VkExternalSemaphoreProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "exportFromImportedHandleTypes = " .
-                            showsPrec d (getField @"exportFromImportedHandleTypes" x) .
-                              showString ", " .
-                                showString "compatibleHandleTypes = " .
-                                  showsPrec d (getField @"compatibleHandleTypes" x) .
-                                    showString ", " .
-                                      showString "externalSemaphoreFeatures = " .
-                                        showsPrec d (getField @"externalSemaphoreFeatures" x) .
-                                          showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.External
+       (VkExternalBufferProperties, VkExternalBufferPropertiesKHR,
+        VkExternalFenceProperties, VkExternalFencePropertiesKHR,
+        VkExternalImageFormatProperties,
+        VkExternalImageFormatPropertiesKHR,
+        VkExternalImageFormatPropertiesNV,
+        VkExternalMemoryBufferCreateInfo,
+        VkExternalMemoryBufferCreateInfoKHR,
+        VkExternalMemoryImageCreateInfo,
+        VkExternalMemoryImageCreateInfoKHR,
+        VkExternalMemoryImageCreateInfoNV, VkExternalMemoryProperties,
+        VkExternalMemoryPropertiesKHR, VkExternalSemaphoreProperties,
+        VkExternalSemaphorePropertiesKHR)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.Enum.External      (VkExternalFenceFeatureFlags,
+                                                 VkExternalFenceHandleTypeFlags,
+                                                 VkExternalMemoryFeatureFlags,
+                                                 VkExternalMemoryFeatureFlagsNV,
+                                                 VkExternalMemoryHandleTypeFlags,
+                                                 VkExternalMemoryHandleTypeFlagsNV,
+                                                 VkExternalSemaphoreFeatureFlags,
+                                                 VkExternalSemaphoreHandleTypeFlags)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Struct.Buffer      (VkBufferCreateInfo)
+import Graphics.Vulkan.Types.Struct.Image       (VkImageCreateInfo,
+                                                 VkImageFormatProperties,
+                                                 VkImageFormatProperties2)
+
+-- | > typedef struct VkExternalBufferProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkExternalMemoryProperties    externalMemoryProperties;
+--   > } VkExternalBufferProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalBufferProperties VkExternalBufferProperties registry at www.khronos.org>
+type VkExternalBufferProperties =
+     VkStruct VkExternalBufferProperties' -- ' closing tick for hsc2hs
+
+data VkExternalBufferProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalBufferProperties where
+    type StructRep VkExternalBufferProperties =
+         'StructMeta "VkExternalBufferProperties" VkExternalBufferProperties -- ' closing tick for hsc2hs
+           #{size VkExternalBufferProperties}
+           #{alignment VkExternalBufferProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExternalBufferProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExternalBufferProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "externalMemoryProperties" VkExternalMemoryProperties -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalBufferProperties, externalMemoryProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkExternalBufferProperties`
+type VkExternalBufferPropertiesKHR = VkExternalBufferProperties
+
+-- | > typedef struct VkExternalFenceProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes;
+--   >     VkExternalFenceHandleTypeFlags compatibleHandleTypes;
+--   >     VkExternalFenceFeatureFlags externalFenceFeatures;
+--   > } VkExternalFenceProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalFenceProperties VkExternalFenceProperties registry at www.khronos.org>
+type VkExternalFenceProperties =
+     VkStruct VkExternalFenceProperties' -- ' closing tick for hsc2hs
+
+data VkExternalFenceProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalFenceProperties where
+    type StructRep VkExternalFenceProperties =
+         'StructMeta "VkExternalFenceProperties" VkExternalFenceProperties -- ' closing tick for hsc2hs
+           #{size VkExternalFenceProperties}
+           #{alignment VkExternalFenceProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExternalFenceProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExternalFenceProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "exportFromImportedHandleTypes" -- ' closing tick for hsc2hs
+                VkExternalFenceHandleTypeFlags
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalFenceProperties, exportFromImportedHandleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compatibleHandleTypes" VkExternalFenceHandleTypeFlags -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalFenceProperties, compatibleHandleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "externalFenceFeatures" VkExternalFenceFeatureFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkExternalFenceProperties, externalFenceFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkExternalFenceProperties`
+type VkExternalFencePropertiesKHR = VkExternalFenceProperties
+
+-- | > typedef struct VkExternalImageFormatProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkExternalMemoryProperties externalMemoryProperties;
+--   > } VkExternalImageFormatProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalImageFormatProperties VkExternalImageFormatProperties registry at www.khronos.org>
+type VkExternalImageFormatProperties =
+     VkStruct VkExternalImageFormatProperties' -- ' closing tick for hsc2hs
+
+data VkExternalImageFormatProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalImageFormatProperties where
+    type StructRep VkExternalImageFormatProperties =
+         'StructMeta "VkExternalImageFormatProperties" -- ' closing tick for hsc2hs
+           VkExternalImageFormatProperties
+           #{size VkExternalImageFormatProperties}
+           #{alignment VkExternalImageFormatProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExternalImageFormatProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExternalImageFormatProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "externalMemoryProperties" VkExternalMemoryProperties -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalImageFormatProperties, externalMemoryProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkExternalImageFormatProperties`
+type VkExternalImageFormatPropertiesKHR =
+     VkExternalImageFormatProperties
+
+-- | > typedef struct VkExternalImageFormatPropertiesNV {
+--   >     VkImageFormatProperties          imageFormatProperties;
+--   >     VkExternalMemoryFeatureFlagsNV   externalMemoryFeatures;
+--   >     VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
+--   >     VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
+--   > } VkExternalImageFormatPropertiesNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalImageFormatPropertiesNV VkExternalImageFormatPropertiesNV registry at www.khronos.org>
+type VkExternalImageFormatPropertiesNV =
+     VkStruct VkExternalImageFormatPropertiesNV' -- ' closing tick for hsc2hs
+
+data VkExternalImageFormatPropertiesNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalImageFormatPropertiesNV where
+    type StructRep VkExternalImageFormatPropertiesNV =
+         'StructMeta "VkExternalImageFormatPropertiesNV" -- ' closing tick for hsc2hs
+           VkExternalImageFormatPropertiesNV
+           #{size VkExternalImageFormatPropertiesNV}
+           #{alignment VkExternalImageFormatPropertiesNV}
+           '[('FieldMeta "imageFormatProperties" VkImageFormatProperties
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalImageFormatPropertiesNV, imageFormatProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "externalMemoryFeatures" VkExternalMemoryFeatureFlagsNV -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkExternalImageFormatPropertiesNV, externalMemoryFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "exportFromImportedHandleTypes" -- ' closing tick for hsc2hs
+                VkExternalMemoryHandleTypeFlagsNV
+                'True -- ' closing tick for hsc2hs
+                #{offset VkExternalImageFormatPropertiesNV, exportFromImportedHandleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compatibleHandleTypes" -- ' closing tick for hsc2hs
+                VkExternalMemoryHandleTypeFlagsNV
+                'True -- ' closing tick for hsc2hs
+                #{offset VkExternalImageFormatPropertiesNV, compatibleHandleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkExternalMemoryBufferCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlags handleTypes;
+--   > } VkExternalMemoryBufferCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfo registry at www.khronos.org>
+type VkExternalMemoryBufferCreateInfo =
+     VkStruct VkExternalMemoryBufferCreateInfo' -- ' closing tick for hsc2hs
+
+data VkExternalMemoryBufferCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalMemoryBufferCreateInfo where
+    type StructRep VkExternalMemoryBufferCreateInfo =
+         'StructMeta "VkExternalMemoryBufferCreateInfo" -- ' closing tick for hsc2hs
+           VkExternalMemoryBufferCreateInfo
+           #{size VkExternalMemoryBufferCreateInfo}
+           #{alignment VkExternalMemoryBufferCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExternalMemoryBufferCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExternalMemoryBufferCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleTypes" VkExternalMemoryHandleTypeFlags 'True
+                #{offset VkExternalMemoryBufferCreateInfo, handleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkBufferCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkExternalMemoryBufferCreateInfo`
+type VkExternalMemoryBufferCreateInfoKHR =
+     VkExternalMemoryBufferCreateInfo
+
+-- | > typedef struct VkExternalMemoryImageCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlags handleTypes;
+--   > } VkExternalMemoryImageCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfo registry at www.khronos.org>
+type VkExternalMemoryImageCreateInfo =
+     VkStruct VkExternalMemoryImageCreateInfo' -- ' closing tick for hsc2hs
+
+data VkExternalMemoryImageCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalMemoryImageCreateInfo where
+    type StructRep VkExternalMemoryImageCreateInfo =
+         'StructMeta "VkExternalMemoryImageCreateInfo" -- ' closing tick for hsc2hs
+           VkExternalMemoryImageCreateInfo
+           #{size VkExternalMemoryImageCreateInfo}
+           #{alignment VkExternalMemoryImageCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExternalMemoryImageCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExternalMemoryImageCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleTypes" VkExternalMemoryHandleTypeFlags 'False
+                #{offset VkExternalMemoryImageCreateInfo, handleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkExternalMemoryImageCreateInfo`
+type VkExternalMemoryImageCreateInfoKHR =
+     VkExternalMemoryImageCreateInfo
+
+-- | > typedef struct VkExternalMemoryImageCreateInfoNV {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlagsNV handleTypes;
+--   > } VkExternalMemoryImageCreateInfoNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalMemoryImageCreateInfoNV VkExternalMemoryImageCreateInfoNV registry at www.khronos.org>
+type VkExternalMemoryImageCreateInfoNV =
+     VkStruct VkExternalMemoryImageCreateInfoNV' -- ' closing tick for hsc2hs
+
+data VkExternalMemoryImageCreateInfoNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalMemoryImageCreateInfoNV where
+    type StructRep VkExternalMemoryImageCreateInfoNV =
+         'StructMeta "VkExternalMemoryImageCreateInfoNV" -- ' closing tick for hsc2hs
+           VkExternalMemoryImageCreateInfoNV
+           #{size VkExternalMemoryImageCreateInfoNV}
+           #{alignment VkExternalMemoryImageCreateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExternalMemoryImageCreateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExternalMemoryImageCreateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleTypes" VkExternalMemoryHandleTypeFlagsNV 'True
+                #{offset VkExternalMemoryImageCreateInfoNV, handleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkExternalMemoryProperties {
+--   >     VkExternalMemoryFeatureFlags  externalMemoryFeatures;
+--   >     VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes;
+--   >     VkExternalMemoryHandleTypeFlags compatibleHandleTypes;
+--   > } VkExternalMemoryProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalMemoryProperties VkExternalMemoryProperties registry at www.khronos.org>
+type VkExternalMemoryProperties =
+     VkStruct VkExternalMemoryProperties' -- ' closing tick for hsc2hs
+
+data VkExternalMemoryProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalMemoryProperties where
+    type StructRep VkExternalMemoryProperties =
+         'StructMeta "VkExternalMemoryProperties" VkExternalMemoryProperties -- ' closing tick for hsc2hs
+           #{size VkExternalMemoryProperties}
+           #{alignment VkExternalMemoryProperties}
+           '[('FieldMeta "externalMemoryFeatures" VkExternalMemoryFeatureFlags
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalMemoryProperties, externalMemoryFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "exportFromImportedHandleTypes" -- ' closing tick for hsc2hs
+                VkExternalMemoryHandleTypeFlags
+                'True -- ' closing tick for hsc2hs
+                #{offset VkExternalMemoryProperties, exportFromImportedHandleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compatibleHandleTypes" VkExternalMemoryHandleTypeFlags -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalMemoryProperties, compatibleHandleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkExternalMemoryProperties`
+type VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties
+
+-- | > typedef struct VkExternalSemaphoreProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes;
+--   >     VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes;
+--   >     VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures;
+--   > } VkExternalSemaphoreProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalSemaphoreProperties VkExternalSemaphoreProperties registry at www.khronos.org>
+type VkExternalSemaphoreProperties =
+     VkStruct VkExternalSemaphoreProperties' -- ' closing tick for hsc2hs
+
+data VkExternalSemaphoreProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalSemaphoreProperties where
+    type StructRep VkExternalSemaphoreProperties =
+         'StructMeta "VkExternalSemaphoreProperties" -- ' closing tick for hsc2hs
+           VkExternalSemaphoreProperties
+           #{size VkExternalSemaphoreProperties}
+           #{alignment VkExternalSemaphoreProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExternalSemaphoreProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExternalSemaphoreProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "exportFromImportedHandleTypes" -- ' closing tick for hsc2hs
+                VkExternalSemaphoreHandleTypeFlags
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalSemaphoreProperties, exportFromImportedHandleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compatibleHandleTypes" -- ' closing tick for hsc2hs
+                VkExternalSemaphoreHandleTypeFlags
+                'False -- ' closing tick for hsc2hs
+                #{offset VkExternalSemaphoreProperties, compatibleHandleTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "externalSemaphoreFeatures" -- ' closing tick for hsc2hs
+                VkExternalSemaphoreFeatureFlags
+                'True -- ' closing tick for hsc2hs
+                #{offset VkExternalSemaphoreProperties, externalSemaphoreFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkExternalSemaphoreProperties`
 type VkExternalSemaphorePropertiesKHR =
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Fence.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Fence.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Fence.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Fence.hsc
@@ -2,23 +2,17 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Fence
-       (VkFenceCreateInfo, VkFenceCreateInfo', VkFenceGetFdInfoKHR, -- ' closing tick for hsc2hs
-        VkFenceGetFdInfoKHR') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
+       (VkFenceCreateInfo, VkFenceGetFdInfoKHR) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.External      (VkExternalFenceHandleTypeFlagBits)
 import Graphics.Vulkan.Types.Enum.Fence         (VkFenceCreateFlags)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Handles            (VkFence)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkFenceCreateInfo {
 --   >     VkStructureType sType;
@@ -27,144 +21,33 @@
 --   > } VkFenceCreateInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFenceCreateInfo VkFenceCreateInfo registry at www.khronos.org>
-type VkFenceCreateInfo = VulkanStruct VkFenceCreateInfo' -- ' closing tick for hsc2hs
+type VkFenceCreateInfo = VkStruct VkFenceCreateInfo' -- ' closing tick for hsc2hs
 
 data VkFenceCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkFenceCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkFenceCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkFenceCreateInfo where
-        sizeOf ~_ = #{size VkFenceCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkFenceCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkFenceCreateInfo where
-        type StructFields VkFenceCreateInfo = '["sType", "pNext", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkFenceCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkFenceCreateInfo
-         where
-        type FieldType "sType" VkFenceCreateInfo = VkStructureType
-        type FieldOptional "sType" VkFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkFenceCreateInfo =
-             #{offset VkFenceCreateInfo, sType}
-        type FieldIsArray "sType" VkFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFenceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkFenceCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkFenceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkFenceCreateInfo
-         where
-        type FieldType "pNext" VkFenceCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkFenceCreateInfo =
-             #{offset VkFenceCreateInfo, pNext}
-        type FieldIsArray "pNext" VkFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFenceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkFenceCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkFenceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkFenceCreateInfo
-         where
-        type FieldType "flags" VkFenceCreateInfo = VkFenceCreateFlags
-        type FieldOptional "flags" VkFenceCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkFenceCreateInfo =
-             #{offset VkFenceCreateInfo, flags}
-        type FieldIsArray "flags" VkFenceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFenceCreateInfo, flags}
-
-instance {-# OVERLAPPING #-} CanReadField "flags" VkFenceCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkFenceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceCreateInfo, flags}
-
-instance Show VkFenceCreateInfo where
-        showsPrec d x
-          = showString "VkFenceCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) . showChar '}'
+    type StructRep VkFenceCreateInfo =
+         'StructMeta "VkFenceCreateInfo" VkFenceCreateInfo  -- ' closing tick for hsc2hs
+                                                           #{size VkFenceCreateInfo}
+           #{alignment VkFenceCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkFenceCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkFenceCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkFenceCreateFlags 'True 
+                                                          #{offset VkFenceCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkFenceGetFdInfoKHR {
 --   >     VkStructureType sType;
@@ -174,177 +57,35 @@
 --   > } VkFenceGetFdInfoKHR;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFenceGetFdInfoKHR VkFenceGetFdInfoKHR registry at www.khronos.org>
-type VkFenceGetFdInfoKHR = VulkanStruct VkFenceGetFdInfoKHR' -- ' closing tick for hsc2hs
+type VkFenceGetFdInfoKHR = VkStruct VkFenceGetFdInfoKHR' -- ' closing tick for hsc2hs
 
 data VkFenceGetFdInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkFenceGetFdInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkFenceGetFdInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkFenceGetFdInfoKHR where
-        sizeOf ~_ = #{size VkFenceGetFdInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkFenceGetFdInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkFenceGetFdInfoKHR where
-        type StructFields VkFenceGetFdInfoKHR =
-             '["sType", "pNext", "fence", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkFenceGetFdInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkFenceGetFdInfoKHR
-         where
-        type FieldType "sType" VkFenceGetFdInfoKHR = VkStructureType
-        type FieldOptional "sType" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkFenceGetFdInfoKHR =
-             #{offset VkFenceGetFdInfoKHR, sType}
-        type FieldIsArray "sType" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFenceGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkFenceGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkFenceGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkFenceGetFdInfoKHR
-         where
-        type FieldType "pNext" VkFenceGetFdInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkFenceGetFdInfoKHR =
-             #{offset VkFenceGetFdInfoKHR, pNext}
-        type FieldIsArray "pNext" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFenceGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkFenceGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkFenceGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-} HasField "fence" VkFenceGetFdInfoKHR
-         where
-        type FieldType "fence" VkFenceGetFdInfoKHR = VkFence
-        type FieldOptional "fence" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fence" VkFenceGetFdInfoKHR =
-             #{offset VkFenceGetFdInfoKHR, fence}
-        type FieldIsArray "fence" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFenceGetFdInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fence" VkFenceGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, fence})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceGetFdInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fence" VkFenceGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkFenceGetFdInfoKHR where
-        type FieldType "handleType" VkFenceGetFdInfoKHR =
-             VkExternalFenceHandleTypeFlagBits
-        type FieldOptional "handleType" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkFenceGetFdInfoKHR =
-             #{offset VkFenceGetFdInfoKHR, handleType}
-        type FieldIsArray "handleType" VkFenceGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFenceGetFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkFenceGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetFdInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceGetFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkFenceGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceGetFdInfoKHR, handleType}
-
-instance Show VkFenceGetFdInfoKHR where
-        showsPrec d x
-          = showString "VkFenceGetFdInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "fence = " .
-                            showsPrec d (getField @"fence" x) .
-                              showString ", " .
-                                showString "handleType = " .
-                                  showsPrec d (getField @"handleType" x) . showChar '}'
+    type StructRep VkFenceGetFdInfoKHR =
+         'StructMeta "VkFenceGetFdInfoKHR" VkFenceGetFdInfoKHR  -- ' closing tick for hsc2hs
+                                                               #{size VkFenceGetFdInfoKHR}
+           #{alignment VkFenceGetFdInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkFenceGetFdInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkFenceGetFdInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fence" VkFence 'False 
+                                                #{offset VkFenceGetFdInfoKHR, fence}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalFenceHandleTypeFlagBits 'False
+                #{offset VkFenceGetFdInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/FormatProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/FormatProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/FormatProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/FormatProperties.hsc
@@ -2,21 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.FormatProperties
-       (VkFormatProperties, VkFormatProperties', VkFormatProperties2, -- ' closing tick for hsc2hs
-        VkFormatProperties2', VkFormatProperties2KHR) -- ' closing tick for hsc2hs
+       (VkFormatProperties, VkFormatProperties2, VkFormatProperties2KHR)
        where
-import Foreign.Storable                         (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Format        (VkFormatFeatureFlags)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkFormatProperties {
 --   >     VkFormatFeatureFlags   linearTilingFeatures;
@@ -25,156 +20,33 @@
 --   > } VkFormatProperties;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFormatProperties VkFormatProperties registry at www.khronos.org>
-type VkFormatProperties = VulkanStruct VkFormatProperties' -- ' closing tick for hsc2hs
+type VkFormatProperties = VkStruct VkFormatProperties' -- ' closing tick for hsc2hs
 
 data VkFormatProperties' -- ' closing tick for hsc2hs
 
-instance Eq VkFormatProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkFormatProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkFormatProperties where
-        sizeOf ~_ = #{size VkFormatProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkFormatProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkFormatProperties where
-        type StructFields VkFormatProperties =
-             '["linearTilingFeatures", "optimalTilingFeatures", -- ' closing tick for hsc2hs
-               "bufferFeatures"]
-        type CUnionType VkFormatProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkFormatProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkFormatProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "linearTilingFeatures" VkFormatProperties where
-        type FieldType "linearTilingFeatures" VkFormatProperties =
-             VkFormatFeatureFlags
-        type FieldOptional "linearTilingFeatures" VkFormatProperties =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "linearTilingFeatures" VkFormatProperties =
-             #{offset VkFormatProperties, linearTilingFeatures}
-        type FieldIsArray "linearTilingFeatures" VkFormatProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFormatProperties, linearTilingFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "linearTilingFeatures" VkFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, linearTilingFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFormatProperties, linearTilingFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "linearTilingFeatures" VkFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFormatProperties, linearTilingFeatures}
-
-instance {-# OVERLAPPING #-}
-         HasField "optimalTilingFeatures" VkFormatProperties where
-        type FieldType "optimalTilingFeatures" VkFormatProperties =
-             VkFormatFeatureFlags
-        type FieldOptional "optimalTilingFeatures" VkFormatProperties =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "optimalTilingFeatures" VkFormatProperties =
-             #{offset VkFormatProperties, optimalTilingFeatures}
-        type FieldIsArray "optimalTilingFeatures" VkFormatProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFormatProperties, optimalTilingFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "optimalTilingFeatures" VkFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, optimalTilingFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFormatProperties, optimalTilingFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "optimalTilingFeatures" VkFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFormatProperties, optimalTilingFeatures}
-
-instance {-# OVERLAPPING #-}
-         HasField "bufferFeatures" VkFormatProperties where
-        type FieldType "bufferFeatures" VkFormatProperties =
-             VkFormatFeatureFlags
-        type FieldOptional "bufferFeatures" VkFormatProperties = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "bufferFeatures" VkFormatProperties =
-             #{offset VkFormatProperties, bufferFeatures}
-        type FieldIsArray "bufferFeatures" VkFormatProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFormatProperties, bufferFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bufferFeatures" VkFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties, bufferFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFormatProperties, bufferFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bufferFeatures" VkFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFormatProperties, bufferFeatures}
-
-instance Show VkFormatProperties where
-        showsPrec d x
-          = showString "VkFormatProperties {" .
-              showString "linearTilingFeatures = " .
-                showsPrec d (getField @"linearTilingFeatures" x) .
-                  showString ", " .
-                    showString "optimalTilingFeatures = " .
-                      showsPrec d (getField @"optimalTilingFeatures" x) .
-                        showString ", " .
-                          showString "bufferFeatures = " .
-                            showsPrec d (getField @"bufferFeatures" x) . showChar '}'
+    type StructRep VkFormatProperties =
+         'StructMeta "VkFormatProperties" VkFormatProperties  -- ' closing tick for hsc2hs
+                                                             #{size VkFormatProperties}
+           #{alignment VkFormatProperties}
+           '[('FieldMeta "linearTilingFeatures" VkFormatFeatureFlags 'True -- ' closing tick for hsc2hs
+                #{offset VkFormatProperties, linearTilingFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "optimalTilingFeatures" VkFormatFeatureFlags 'True
+                #{offset VkFormatProperties, optimalTilingFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bufferFeatures" VkFormatFeatureFlags 'True 
+                                                                     #{offset VkFormatProperties, bufferFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkFormatProperties2 {
 --   >     VkStructureType sType;
@@ -183,147 +55,33 @@
 --   > } VkFormatProperties2;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFormatProperties2 VkFormatProperties2 registry at www.khronos.org>
-type VkFormatProperties2 = VulkanStruct VkFormatProperties2' -- ' closing tick for hsc2hs
+type VkFormatProperties2 = VkStruct VkFormatProperties2' -- ' closing tick for hsc2hs
 
 data VkFormatProperties2' -- ' closing tick for hsc2hs
 
-instance Eq VkFormatProperties2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkFormatProperties2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkFormatProperties2 where
-        sizeOf ~_ = #{size VkFormatProperties2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkFormatProperties2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkFormatProperties2 where
-        type StructFields VkFormatProperties2 =
-             '["sType", "pNext", "formatProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkFormatProperties2 = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkFormatProperties2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkFormatProperties2
-         where
-        type FieldType "sType" VkFormatProperties2 = VkStructureType
-        type FieldOptional "sType" VkFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkFormatProperties2 =
-             #{offset VkFormatProperties2, sType}
-        type FieldIsArray "sType" VkFormatProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkFormatProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkFormatProperties2
-         where
-        type FieldType "pNext" VkFormatProperties2 = Ptr Void
-        type FieldOptional "pNext" VkFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkFormatProperties2 =
-             #{offset VkFormatProperties2, pNext}
-        type FieldIsArray "pNext" VkFormatProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkFormatProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "formatProperties" VkFormatProperties2 where
-        type FieldType "formatProperties" VkFormatProperties2 =
-             VkFormatProperties
-        type FieldOptional "formatProperties" VkFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "formatProperties" VkFormatProperties2 =
-             #{offset VkFormatProperties2, formatProperties}
-        type FieldIsArray "formatProperties" VkFormatProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFormatProperties2, formatProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "formatProperties" VkFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFormatProperties2, formatProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFormatProperties2, formatProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "formatProperties" VkFormatProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFormatProperties2, formatProperties}
-
-instance Show VkFormatProperties2 where
-        showsPrec d x
-          = showString "VkFormatProperties2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "formatProperties = " .
-                            showsPrec d (getField @"formatProperties" x) . showChar '}'
+    type StructRep VkFormatProperties2 =
+         'StructMeta "VkFormatProperties2" VkFormatProperties2  -- ' closing tick for hsc2hs
+                                                               #{size VkFormatProperties2}
+           #{alignment VkFormatProperties2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkFormatProperties2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkFormatProperties2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "formatProperties" VkFormatProperties 'False 
+                                                                      #{offset VkFormatProperties2, formatProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkFormatProperties2`
 type VkFormatProperties2KHR = VkFormatProperties2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/FramebufferCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/FramebufferCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/FramebufferCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/FramebufferCreateInfo.hsc
@@ -2,20 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.FramebufferCreateInfo
-       (VkFramebufferCreateInfo, VkFramebufferCreateInfo') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkFramebufferCreateInfo) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkFramebufferCreateFlags)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Handles            (VkImageView, VkRenderPass)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkFramebufferCreateInfo {
 --   >     VkStructureType sType;
@@ -30,356 +26,60 @@
 --   > } VkFramebufferCreateInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFramebufferCreateInfo VkFramebufferCreateInfo registry at www.khronos.org>
-type VkFramebufferCreateInfo =
-     VulkanStruct VkFramebufferCreateInfo' -- ' closing tick for hsc2hs
+type VkFramebufferCreateInfo = VkStruct VkFramebufferCreateInfo' -- ' closing tick for hsc2hs
 
 data VkFramebufferCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkFramebufferCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkFramebufferCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkFramebufferCreateInfo where
-        sizeOf ~_ = #{size VkFramebufferCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkFramebufferCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkFramebufferCreateInfo where
-        type StructFields VkFramebufferCreateInfo =
-             '["sType", "pNext", "flags", "renderPass", "attachmentCount", -- ' closing tick for hsc2hs
-               "pAttachments", "width", "height", "layers"]
-        type CUnionType VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkFramebufferCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkFramebufferCreateInfo where
-        type FieldType "sType" VkFramebufferCreateInfo = VkStructureType
-        type FieldOptional "sType" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, sType}
-        type FieldIsArray "sType" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFramebufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkFramebufferCreateInfo where
-        type FieldType "pNext" VkFramebufferCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, pNext}
-        type FieldIsArray "pNext" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFramebufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkFramebufferCreateInfo where
-        type FieldType "flags" VkFramebufferCreateInfo =
-             VkFramebufferCreateFlags
-        type FieldOptional "flags" VkFramebufferCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, flags}
-        type FieldIsArray "flags" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFramebufferCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "renderPass" VkFramebufferCreateInfo where
-        type FieldType "renderPass" VkFramebufferCreateInfo = VkRenderPass
-        type FieldOptional "renderPass" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "renderPass" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, renderPass}
-        type FieldIsArray "renderPass" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFramebufferCreateInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "renderPass" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, renderPass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "renderPass" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         HasField "attachmentCount" VkFramebufferCreateInfo where
-        type FieldType "attachmentCount" VkFramebufferCreateInfo = Word32
-        type FieldOptional "attachmentCount" VkFramebufferCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "attachmentCount" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, attachmentCount}
-        type FieldIsArray "attachmentCount" VkFramebufferCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFramebufferCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "attachmentCount" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, attachmentCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "attachmentCount" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAttachments" VkFramebufferCreateInfo where
-        type FieldType "pAttachments" VkFramebufferCreateInfo =
-             Ptr VkImageView
-        type FieldOptional "pAttachments" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAttachments" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, pAttachments}
-        type FieldIsArray "pAttachments" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFramebufferCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAttachments" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, pAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAttachments" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "width" VkFramebufferCreateInfo where
-        type FieldType "width" VkFramebufferCreateInfo = Word32
-        type FieldOptional "width" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "width" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, width}
-        type FieldIsArray "width" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFramebufferCreateInfo, width}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "width" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, width})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, width}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "width" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, width}
-
-instance {-# OVERLAPPING #-}
-         HasField "height" VkFramebufferCreateInfo where
-        type FieldType "height" VkFramebufferCreateInfo = Word32
-        type FieldOptional "height" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "height" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, height}
-        type FieldIsArray "height" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFramebufferCreateInfo, height}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "height" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, height})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, height}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "height" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, height}
-
-instance {-# OVERLAPPING #-}
-         HasField "layers" VkFramebufferCreateInfo where
-        type FieldType "layers" VkFramebufferCreateInfo = Word32
-        type FieldOptional "layers" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layers" VkFramebufferCreateInfo =
-             #{offset VkFramebufferCreateInfo, layers}
-        type FieldIsArray "layers" VkFramebufferCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkFramebufferCreateInfo, layers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "layers" VkFramebufferCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFramebufferCreateInfo, layers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFramebufferCreateInfo, layers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "layers" VkFramebufferCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFramebufferCreateInfo, layers}
-
-instance Show VkFramebufferCreateInfo where
-        showsPrec d x
-          = showString "VkFramebufferCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "renderPass = " .
-                                  showsPrec d (getField @"renderPass" x) .
-                                    showString ", " .
-                                      showString "attachmentCount = " .
-                                        showsPrec d (getField @"attachmentCount" x) .
-                                          showString ", " .
-                                            showString "pAttachments = " .
-                                              showsPrec d (getField @"pAttachments" x) .
-                                                showString ", " .
-                                                  showString "width = " .
-                                                    showsPrec d (getField @"width" x) .
-                                                      showString ", " .
-                                                        showString "height = " .
-                                                          showsPrec d (getField @"height" x) .
-                                                            showString ", " .
-                                                              showString "layers = " .
-                                                                showsPrec d (getField @"layers" x) .
-                                                                  showChar '}'
+    type StructRep VkFramebufferCreateInfo =
+         'StructMeta "VkFramebufferCreateInfo" VkFramebufferCreateInfo -- ' closing tick for hsc2hs
+           #{size VkFramebufferCreateInfo}
+           #{alignment VkFramebufferCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkFramebufferCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkFramebufferCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkFramebufferCreateFlags 'True 
+                                                                #{offset VkFramebufferCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "renderPass" VkRenderPass 'False 
+                                                          #{offset VkFramebufferCreateInfo, renderPass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "attachmentCount" Word32 'True 
+                                                        #{offset VkFramebufferCreateInfo, attachmentCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAttachments" (Ptr VkImageView) 'False 
+                                                                 #{offset VkFramebufferCreateInfo, pAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "width" Word32 'False 
+                                               #{offset VkFramebufferCreateInfo, width}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "height" Word32 'False 
+                                                #{offset VkFramebufferCreateInfo, height}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "layers" Word32 'False 
+                                                #{offset VkFramebufferCreateInfo, layers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/HdrMetadataEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/HdrMetadataEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/HdrMetadataEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/HdrMetadataEXT.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.HdrMetadataEXT
-       (VkHdrMetadataEXT, VkHdrMetadataEXT') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkHdrMetadataEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Struct.XYColorEXT  (VkXYColorEXT)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkHdrMetadataEXT {
 --   >     VkStructureType sType;
@@ -30,403 +26,73 @@
 --   > } VkHdrMetadataEXT;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkHdrMetadataEXT VkHdrMetadataEXT registry at www.khronos.org>
-type VkHdrMetadataEXT = VulkanStruct VkHdrMetadataEXT' -- ' closing tick for hsc2hs
+type VkHdrMetadataEXT = VkStruct VkHdrMetadataEXT' -- ' closing tick for hsc2hs
 
 data VkHdrMetadataEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkHdrMetadataEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkHdrMetadataEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkHdrMetadataEXT where
-        sizeOf ~_ = #{size VkHdrMetadataEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkHdrMetadataEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkHdrMetadataEXT where
-        type StructFields VkHdrMetadataEXT =
-             '["sType", "pNext", "displayPrimaryRed", "displayPrimaryGreen", -- ' closing tick for hsc2hs
-               "displayPrimaryBlue", "whitePoint", "maxLuminance", "minLuminance",
-               "maxContentLightLevel", "maxFrameAverageLightLevel"]
-        type CUnionType VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkHdrMetadataEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkHdrMetadataEXT
-         where
-        type FieldType "sType" VkHdrMetadataEXT = VkStructureType
-        type FieldOptional "sType" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, sType}
-        type FieldIsArray "sType" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkHdrMetadataEXT, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkHdrMetadataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, sType}
-
-instance {-# OVERLAPPING #-} CanWriteField "sType" VkHdrMetadataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkHdrMetadataEXT
-         where
-        type FieldType "pNext" VkHdrMetadataEXT = Ptr Void
-        type FieldOptional "pNext" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, pNext}
-        type FieldIsArray "pNext" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkHdrMetadataEXT, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkHdrMetadataEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, pNext}
-
-instance {-# OVERLAPPING #-} CanWriteField "pNext" VkHdrMetadataEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayPrimaryRed" VkHdrMetadataEXT where
-        type FieldType "displayPrimaryRed" VkHdrMetadataEXT = VkXYColorEXT
-        type FieldOptional "displayPrimaryRed" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayPrimaryRed" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, displayPrimaryRed}
-        type FieldIsArray "displayPrimaryRed" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkHdrMetadataEXT, displayPrimaryRed}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayPrimaryRed" VkHdrMetadataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryRed})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryRed}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayPrimaryRed" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryRed}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayPrimaryGreen" VkHdrMetadataEXT where
-        type FieldType "displayPrimaryGreen" VkHdrMetadataEXT =
-             VkXYColorEXT
-        type FieldOptional "displayPrimaryGreen" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayPrimaryGreen" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, displayPrimaryGreen}
-        type FieldIsArray "displayPrimaryGreen" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkHdrMetadataEXT, displayPrimaryGreen}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayPrimaryGreen" VkHdrMetadataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryGreen})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryGreen}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayPrimaryGreen" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryGreen}
-
-instance {-# OVERLAPPING #-}
-         HasField "displayPrimaryBlue" VkHdrMetadataEXT where
-        type FieldType "displayPrimaryBlue" VkHdrMetadataEXT = VkXYColorEXT
-        type FieldOptional "displayPrimaryBlue" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "displayPrimaryBlue" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, displayPrimaryBlue}
-        type FieldIsArray "displayPrimaryBlue" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkHdrMetadataEXT, displayPrimaryBlue}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "displayPrimaryBlue" VkHdrMetadataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, displayPrimaryBlue})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, displayPrimaryBlue}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "displayPrimaryBlue" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, displayPrimaryBlue}
-
-instance {-# OVERLAPPING #-} HasField "whitePoint" VkHdrMetadataEXT
-         where
-        type FieldType "whitePoint" VkHdrMetadataEXT = VkXYColorEXT
-        type FieldOptional "whitePoint" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "whitePoint" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, whitePoint}
-        type FieldIsArray "whitePoint" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkHdrMetadataEXT, whitePoint}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "whitePoint" VkHdrMetadataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, whitePoint})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, whitePoint}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "whitePoint" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, whitePoint}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxLuminance" VkHdrMetadataEXT where
-        type FieldType "maxLuminance" VkHdrMetadataEXT =
-             #{type float}
-        type FieldOptional "maxLuminance" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxLuminance" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, maxLuminance}
-        type FieldIsArray "maxLuminance" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkHdrMetadataEXT, maxLuminance}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxLuminance" VkHdrMetadataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxLuminance})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, maxLuminance}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxLuminance" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, maxLuminance}
-
-instance {-# OVERLAPPING #-}
-         HasField "minLuminance" VkHdrMetadataEXT where
-        type FieldType "minLuminance" VkHdrMetadataEXT =
-             #{type float}
-        type FieldOptional "minLuminance" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minLuminance" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, minLuminance}
-        type FieldIsArray "minLuminance" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkHdrMetadataEXT, minLuminance}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minLuminance" VkHdrMetadataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, minLuminance})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, minLuminance}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minLuminance" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, minLuminance}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxContentLightLevel" VkHdrMetadataEXT where
-        type FieldType "maxContentLightLevel" VkHdrMetadataEXT =
-             #{type float}
-        type FieldOptional "maxContentLightLevel" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxContentLightLevel" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, maxContentLightLevel}
-        type FieldIsArray "maxContentLightLevel" VkHdrMetadataEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkHdrMetadataEXT, maxContentLightLevel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxContentLightLevel" VkHdrMetadataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxContentLightLevel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, maxContentLightLevel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxContentLightLevel" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, maxContentLightLevel}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxFrameAverageLightLevel" VkHdrMetadataEXT where
-        type FieldType "maxFrameAverageLightLevel" VkHdrMetadataEXT =
-             #{type float}
-        type FieldOptional "maxFrameAverageLightLevel" VkHdrMetadataEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxFrameAverageLightLevel" VkHdrMetadataEXT =
-             #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
-        type FieldIsArray "maxFrameAverageLightLevel" VkHdrMetadataEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxFrameAverageLightLevel" VkHdrMetadataEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxFrameAverageLightLevel" VkHdrMetadataEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
-
-instance Show VkHdrMetadataEXT where
-        showsPrec d x
-          = showString "VkHdrMetadataEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "displayPrimaryRed = " .
-                            showsPrec d (getField @"displayPrimaryRed" x) .
-                              showString ", " .
-                                showString "displayPrimaryGreen = " .
-                                  showsPrec d (getField @"displayPrimaryGreen" x) .
-                                    showString ", " .
-                                      showString "displayPrimaryBlue = " .
-                                        showsPrec d (getField @"displayPrimaryBlue" x) .
-                                          showString ", " .
-                                            showString "whitePoint = " .
-                                              showsPrec d (getField @"whitePoint" x) .
-                                                showString ", " .
-                                                  showString "maxLuminance = " .
-                                                    showsPrec d (getField @"maxLuminance" x) .
-                                                      showString ", " .
-                                                        showString "minLuminance = " .
-                                                          showsPrec d (getField @"minLuminance" x) .
-                                                            showString ", " .
-                                                              showString "maxContentLightLevel = " .
-                                                                showsPrec d
-                                                                  (getField @"maxContentLightLevel"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "maxFrameAverageLightLevel = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"maxFrameAverageLightLevel"
-                                                                           x)
-                                                                        . showChar '}'
+    type StructRep VkHdrMetadataEXT =
+         'StructMeta "VkHdrMetadataEXT" VkHdrMetadataEXT  -- ' closing tick for hsc2hs
+                                                         #{size VkHdrMetadataEXT}
+           #{alignment VkHdrMetadataEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkHdrMetadataEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkHdrMetadataEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayPrimaryRed" VkXYColorEXT 'False 
+                                                                 #{offset VkHdrMetadataEXT, displayPrimaryRed}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayPrimaryGreen" VkXYColorEXT 'False 
+                                                                   #{offset VkHdrMetadataEXT, displayPrimaryGreen}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "displayPrimaryBlue" VkXYColorEXT 'False 
+                                                                  #{offset VkHdrMetadataEXT, displayPrimaryBlue}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "whitePoint" VkXYColorEXT 'False 
+                                                          #{offset VkHdrMetadataEXT, whitePoint}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxLuminance" ( -- ' closing tick for hsc2hs
+                                         #{type float}
+                                         ) 'False -- ' closing tick for hsc2hs
+                #{offset VkHdrMetadataEXT, maxLuminance}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minLuminance" ( -- ' closing tick for hsc2hs
+                                         #{type float}
+                                         ) 'False -- ' closing tick for hsc2hs
+                #{offset VkHdrMetadataEXT, minLuminance}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxContentLightLevel" ( -- ' closing tick for hsc2hs
+                                                 #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkHdrMetadataEXT, maxContentLightLevel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxFrameAverageLightLevel" ( -- ' closing tick for hsc2hs
+                                                      #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkHdrMetadataEXT, maxFrameAverageLightLevel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Image.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Image.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Image.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Image.hsc
@@ -1,4027 +1,877 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.Image
-       (VkImageBlit, VkImageBlit', VkImageCopy, VkImageCopy',
-        VkImageCreateInfo, VkImageCreateInfo', -- ' closing tick for hsc2hs
-        VkImageFormatListCreateInfoKHR, VkImageFormatListCreateInfoKHR', -- ' closing tick for hsc2hs
-        VkImageFormatProperties, VkImageFormatProperties', -- ' closing tick for hsc2hs
-        VkImageFormatProperties2, VkImageFormatProperties2', -- ' closing tick for hsc2hs
-        VkImageFormatProperties2KHR, VkImageMemoryBarrier,
-        VkImageMemoryBarrier', VkImageMemoryRequirementsInfo2, -- ' closing tick for hsc2hs
-        VkImageMemoryRequirementsInfo2', VkImageMemoryRequirementsInfo2KHR, -- ' closing tick for hsc2hs
-        VkImagePlaneMemoryRequirementsInfo,
-        VkImagePlaneMemoryRequirementsInfo', -- ' closing tick for hsc2hs
-        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
-        VkImageResolve', VkImageSparseMemoryRequirementsInfo2, -- ' closing tick for hsc2hs
-        VkImageSparseMemoryRequirementsInfo2', -- ' closing tick for hsc2hs
-        VkImageSparseMemoryRequirementsInfo2KHR, VkImageSubresource,
-        VkImageSubresource', VkImageSubresourceLayers, -- ' closing tick for hsc2hs
-        VkImageSubresourceLayers', VkImageSubresourceRange, -- ' closing tick for hsc2hs
-        VkImageSubresourceRange', VkImageSwapchainCreateInfoKHR, -- ' closing tick for hsc2hs
-        VkImageSwapchainCreateInfoKHR', VkImageViewCreateInfo, -- ' closing tick for hsc2hs
-        VkImageViewCreateInfo', VkImageViewUsageCreateInfo, -- ' closing tick for hsc2hs
-        VkImageViewUsageCreateInfo', VkImageViewUsageCreateInfoKHR) -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                              (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes               (VkDeviceSize)
-import Graphics.Vulkan.Types.Bitmasks                (VkImageViewCreateFlags)
-import Graphics.Vulkan.Types.Enum.AccessFlags        (VkAccessFlags)
-import Graphics.Vulkan.Types.Enum.Format             (VkFormat)
-import Graphics.Vulkan.Types.Enum.Image              (VkImageAspectFlagBits,
-                                                      VkImageAspectFlags,
-                                                      VkImageCreateFlags,
-                                                      VkImageLayout,
-                                                      VkImageTiling,
-                                                      VkImageType,
-                                                      VkImageUsageFlags,
-                                                      VkImageViewType)
-import Graphics.Vulkan.Types.Enum.SampleCountFlags   (VkSampleCountFlagBits,
-                                                      VkSampleCountFlags)
-import Graphics.Vulkan.Types.Enum.SharingMode        (VkSharingMode)
-import Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
-import Graphics.Vulkan.Types.Handles                 (VkImage, VkSwapchainKHR)
-import Graphics.Vulkan.Types.Struct.ComponentMapping (VkComponentMapping)
-import Graphics.Vulkan.Types.Struct.Extent           (VkExtent3D)
-import Graphics.Vulkan.Types.Struct.Offset           (VkOffset3D)
-import System.IO.Unsafe                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkImageBlit {
---   >     VkImageSubresourceLayers srcSubresource;
---   >     VkOffset3D             srcOffsets[2];
---   >     VkImageSubresourceLayers dstSubresource;
---   >     VkOffset3D             dstOffsets[2];
---   > } VkImageBlit;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageBlit VkImageBlit registry at www.khronos.org>
-type VkImageBlit = VulkanStruct VkImageBlit' -- ' closing tick for hsc2hs
-
-data VkImageBlit' -- ' closing tick for hsc2hs
-
-instance Eq VkImageBlit where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageBlit where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageBlit where
-        sizeOf ~_ = #{size VkImageBlit}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageBlit}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageBlit where
-        type StructFields VkImageBlit =
-             '["srcSubresource", "srcOffsets", "dstSubresource", "dstOffsets"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageBlit = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageBlit = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageBlit = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "srcSubresource" VkImageBlit
-         where
-        type FieldType "srcSubresource" VkImageBlit =
-             VkImageSubresourceLayers
-        type FieldOptional "srcSubresource" VkImageBlit = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcSubresource" VkImageBlit =
-             #{offset VkImageBlit, srcSubresource}
-        type FieldIsArray "srcSubresource" VkImageBlit = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageBlit, srcSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcSubresource" VkImageBlit where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageBlit, srcSubresource})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageBlit, srcSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcSubresource" VkImageBlit where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageBlit, srcSubresource}
-
-instance {-# OVERLAPPING #-} HasField "srcOffsets" VkImageBlit
-         where
-        type FieldType "srcOffsets" VkImageBlit = VkOffset3D
-        type FieldOptional "srcOffsets" VkImageBlit = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcOffsets" VkImageBlit =
-             #{offset VkImageBlit, srcOffsets}
-        type FieldIsArray "srcOffsets" VkImageBlit = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageBlit, srcOffsets}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "srcOffsets" VkImageBlit where
-        type FieldArrayLength "srcOffsets" VkImageBlit = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkImageBlit, srcOffsets} +
-                      sizeOf (undefined :: VkOffset3D) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkImageBlit, srcOffsets} +
-                 sizeOf (undefined :: VkOffset3D) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "srcOffsets" VkImageBlit where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkImageBlit, srcOffsets} +
-                 sizeOf (undefined :: VkOffset3D) * i)
-
-instance {-# OVERLAPPING #-} HasField "dstSubresource" VkImageBlit
-         where
-        type FieldType "dstSubresource" VkImageBlit =
-             VkImageSubresourceLayers
-        type FieldOptional "dstSubresource" VkImageBlit = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstSubresource" VkImageBlit =
-             #{offset VkImageBlit, dstSubresource}
-        type FieldIsArray "dstSubresource" VkImageBlit = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageBlit, dstSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstSubresource" VkImageBlit where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageBlit, dstSubresource})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageBlit, dstSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstSubresource" VkImageBlit where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageBlit, dstSubresource}
-
-instance {-# OVERLAPPING #-} HasField "dstOffsets" VkImageBlit
-         where
-        type FieldType "dstOffsets" VkImageBlit = VkOffset3D
-        type FieldOptional "dstOffsets" VkImageBlit = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstOffsets" VkImageBlit =
-             #{offset VkImageBlit, dstOffsets}
-        type FieldIsArray "dstOffsets" VkImageBlit = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageBlit, dstOffsets}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "dstOffsets" VkImageBlit where
-        type FieldArrayLength "dstOffsets" VkImageBlit = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkImageBlit, dstOffsets} +
-                      sizeOf (undefined :: VkOffset3D) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkImageBlit, dstOffsets} +
-                 sizeOf (undefined :: VkOffset3D) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "dstOffsets" VkImageBlit where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkImageBlit, dstOffsets} +
-                 sizeOf (undefined :: VkOffset3D) * i)
-
-instance Show VkImageBlit where
-        showsPrec d x
-          = showString "VkImageBlit {" .
-              showString "srcSubresource = " .
-                showsPrec d (getField @"srcSubresource" x) .
-                  showString ", " .
-                    (showString "srcOffsets = [" .
-                       showsPrec d
-                         (let s = sizeOf (undefined :: FieldType "srcOffsets" VkImageBlit)
-                              o = fieldOffset @"srcOffsets" @VkImageBlit
-                              f i
-                                = peekByteOff (unsafePtr x) i ::
-                                    IO (FieldType "srcOffsets" VkImageBlit)
-                            in
-                            unsafeDupablePerformIO . mapM f $
-                              map (\ i -> o + i * s) [0 .. 2 - 1])
-                         . showChar ']')
-                      .
-                      showString ", " .
-                        showString "dstSubresource = " .
-                          showsPrec d (getField @"dstSubresource" x) .
-                            showString ", " .
-                              (showString "dstOffsets = [" .
-                                 showsPrec d
-                                   (let s = sizeOf (undefined :: FieldType "dstOffsets" VkImageBlit)
-                                        o = fieldOffset @"dstOffsets" @VkImageBlit
-                                        f i
-                                          = peekByteOff (unsafePtr x) i ::
-                                              IO (FieldType "dstOffsets" VkImageBlit)
-                                      in
-                                      unsafeDupablePerformIO . mapM f $
-                                        map (\ i -> o + i * s) [0 .. 2 - 1])
-                                   . showChar ']')
-                                . showChar '}'
-
--- | > typedef struct VkImageCopy {
---   >     VkImageSubresourceLayers srcSubresource;
---   >     VkOffset3D             srcOffset;
---   >     VkImageSubresourceLayers dstSubresource;
---   >     VkOffset3D             dstOffset;
---   >     VkExtent3D             extent;
---   > } VkImageCopy;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageCopy VkImageCopy registry at www.khronos.org>
-type VkImageCopy = VulkanStruct VkImageCopy' -- ' closing tick for hsc2hs
-
-data VkImageCopy' -- ' closing tick for hsc2hs
-
-instance Eq VkImageCopy where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageCopy where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageCopy where
-        sizeOf ~_ = #{size VkImageCopy}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageCopy}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageCopy where
-        type StructFields VkImageCopy =
-             '["srcSubresource", "srcOffset", "dstSubresource", "dstOffset", -- ' closing tick for hsc2hs
-               "extent"]
-        type CUnionType VkImageCopy = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageCopy = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageCopy = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "srcSubresource" VkImageCopy
-         where
-        type FieldType "srcSubresource" VkImageCopy =
-             VkImageSubresourceLayers
-        type FieldOptional "srcSubresource" VkImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcSubresource" VkImageCopy =
-             #{offset VkImageCopy, srcSubresource}
-        type FieldIsArray "srcSubresource" VkImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCopy, srcSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcSubresource" VkImageCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, srcSubresource})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCopy, srcSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcSubresource" VkImageCopy where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCopy, srcSubresource}
-
-instance {-# OVERLAPPING #-} HasField "srcOffset" VkImageCopy where
-        type FieldType "srcOffset" VkImageCopy = VkOffset3D
-        type FieldOptional "srcOffset" VkImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcOffset" VkImageCopy =
-             #{offset VkImageCopy, srcOffset}
-        type FieldIsArray "srcOffset" VkImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCopy, srcOffset}
-
-instance {-# OVERLAPPING #-} CanReadField "srcOffset" VkImageCopy
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, srcOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCopy, srcOffset}
-
-instance {-# OVERLAPPING #-} CanWriteField "srcOffset" VkImageCopy
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCopy, srcOffset}
-
-instance {-# OVERLAPPING #-} HasField "dstSubresource" VkImageCopy
-         where
-        type FieldType "dstSubresource" VkImageCopy =
-             VkImageSubresourceLayers
-        type FieldOptional "dstSubresource" VkImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstSubresource" VkImageCopy =
-             #{offset VkImageCopy, dstSubresource}
-        type FieldIsArray "dstSubresource" VkImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCopy, dstSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstSubresource" VkImageCopy where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, dstSubresource})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCopy, dstSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstSubresource" VkImageCopy where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCopy, dstSubresource}
-
-instance {-# OVERLAPPING #-} HasField "dstOffset" VkImageCopy where
-        type FieldType "dstOffset" VkImageCopy = VkOffset3D
-        type FieldOptional "dstOffset" VkImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstOffset" VkImageCopy =
-             #{offset VkImageCopy, dstOffset}
-        type FieldIsArray "dstOffset" VkImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCopy, dstOffset}
-
-instance {-# OVERLAPPING #-} CanReadField "dstOffset" VkImageCopy
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, dstOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCopy, dstOffset}
-
-instance {-# OVERLAPPING #-} CanWriteField "dstOffset" VkImageCopy
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCopy, dstOffset}
-
-instance {-# OVERLAPPING #-} HasField "extent" VkImageCopy where
-        type FieldType "extent" VkImageCopy = VkExtent3D
-        type FieldOptional "extent" VkImageCopy = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extent" VkImageCopy =
-             #{offset VkImageCopy, extent}
-        type FieldIsArray "extent" VkImageCopy = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCopy, extent}
-
-instance {-# OVERLAPPING #-} CanReadField "extent" VkImageCopy
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCopy, extent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCopy, extent}
-
-instance {-# OVERLAPPING #-} CanWriteField "extent" VkImageCopy
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCopy, extent}
-
-instance Show VkImageCopy where
-        showsPrec d x
-          = showString "VkImageCopy {" .
-              showString "srcSubresource = " .
-                showsPrec d (getField @"srcSubresource" x) .
-                  showString ", " .
-                    showString "srcOffset = " .
-                      showsPrec d (getField @"srcOffset" x) .
-                        showString ", " .
-                          showString "dstSubresource = " .
-                            showsPrec d (getField @"dstSubresource" x) .
-                              showString ", " .
-                                showString "dstOffset = " .
-                                  showsPrec d (getField @"dstOffset" x) .
-                                    showString ", " .
-                                      showString "extent = " .
-                                        showsPrec d (getField @"extent" x) . showChar '}'
-
--- | > typedef struct VkImageCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkImageCreateFlags     flags;
---   >     VkImageType            imageType;
---   >     VkFormat               format;
---   >     VkExtent3D             extent;
---   >     uint32_t               mipLevels;
---   >     uint32_t               arrayLayers;
---   >     VkSampleCountFlagBits  samples;
---   >     VkImageTiling          tiling;
---   >     VkImageUsageFlags      usage;
---   >     VkSharingMode          sharingMode;
---   >     uint32_t               queueFamilyIndexCount;
---   >     const uint32_t*        pQueueFamilyIndices;
---   >     VkImageLayout          initialLayout;
---   > } VkImageCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageCreateInfo VkImageCreateInfo registry at www.khronos.org>
-type VkImageCreateInfo = VulkanStruct VkImageCreateInfo' -- ' closing tick for hsc2hs
-
-data VkImageCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkImageCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageCreateInfo where
-        sizeOf ~_ = #{size VkImageCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageCreateInfo where
-        type StructFields VkImageCreateInfo =
-             '["sType", "pNext", "flags", "imageType", "format", "extent", -- ' closing tick for hsc2hs
-               "mipLevels", "arrayLayers", "samples", "tiling", "usage",
-               "sharingMode", "queueFamilyIndexCount", "pQueueFamilyIndices",
-               "initialLayout"]
-        type CUnionType VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkImageCreateInfo
-         where
-        type FieldType "sType" VkImageCreateInfo = VkStructureType
-        type FieldOptional "sType" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, sType}
-        type FieldIsArray "sType" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkImageCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkImageCreateInfo
-         where
-        type FieldType "pNext" VkImageCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, pNext}
-        type FieldIsArray "pNext" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkImageCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkImageCreateInfo
-         where
-        type FieldType "flags" VkImageCreateInfo = VkImageCreateFlags
-        type FieldOptional "flags" VkImageCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, flags}
-        type FieldIsArray "flags" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, flags}
-
-instance {-# OVERLAPPING #-} CanReadField "flags" VkImageCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, flags}
-
-instance {-# OVERLAPPING #-} HasField "imageType" VkImageCreateInfo
-         where
-        type FieldType "imageType" VkImageCreateInfo = VkImageType
-        type FieldOptional "imageType" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageType" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, imageType}
-        type FieldIsArray "imageType" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, imageType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageType" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, imageType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, imageType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageType" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, imageType}
-
-instance {-# OVERLAPPING #-} HasField "format" VkImageCreateInfo
-         where
-        type FieldType "format" VkImageCreateInfo = VkFormat
-        type FieldOptional "format" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, format}
-        type FieldIsArray "format" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, format}
-
-instance {-# OVERLAPPING #-} HasField "extent" VkImageCreateInfo
-         where
-        type FieldType "extent" VkImageCreateInfo = VkExtent3D
-        type FieldOptional "extent" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extent" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, extent}
-        type FieldIsArray "extent" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, extent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "extent" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, extent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, extent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "extent" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, extent}
-
-instance {-# OVERLAPPING #-} HasField "mipLevels" VkImageCreateInfo
-         where
-        type FieldType "mipLevels" VkImageCreateInfo = Word32
-        type FieldOptional "mipLevels" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mipLevels" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, mipLevels}
-        type FieldIsArray "mipLevels" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, mipLevels}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mipLevels" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, mipLevels})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, mipLevels}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mipLevels" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, mipLevels}
-
-instance {-# OVERLAPPING #-}
-         HasField "arrayLayers" VkImageCreateInfo where
-        type FieldType "arrayLayers" VkImageCreateInfo = Word32
-        type FieldOptional "arrayLayers" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "arrayLayers" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, arrayLayers}
-        type FieldIsArray "arrayLayers" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, arrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "arrayLayers" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, arrayLayers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, arrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "arrayLayers" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, arrayLayers}
-
-instance {-# OVERLAPPING #-} HasField "samples" VkImageCreateInfo
-         where
-        type FieldType "samples" VkImageCreateInfo = VkSampleCountFlagBits
-        type FieldOptional "samples" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "samples" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, samples}
-        type FieldIsArray "samples" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, samples}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "samples" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, samples})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, samples}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "samples" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, samples}
-
-instance {-# OVERLAPPING #-} HasField "tiling" VkImageCreateInfo
-         where
-        type FieldType "tiling" VkImageCreateInfo = VkImageTiling
-        type FieldOptional "tiling" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tiling" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, tiling}
-        type FieldIsArray "tiling" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, tiling}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tiling" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, tiling})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, tiling}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tiling" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, tiling}
-
-instance {-# OVERLAPPING #-} HasField "usage" VkImageCreateInfo
-         where
-        type FieldType "usage" VkImageCreateInfo = VkImageUsageFlags
-        type FieldOptional "usage" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, usage}
-        type FieldIsArray "usage" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, usage}
-
-instance {-# OVERLAPPING #-} CanReadField "usage" VkImageCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, usage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "usage" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "sharingMode" VkImageCreateInfo where
-        type FieldType "sharingMode" VkImageCreateInfo = VkSharingMode
-        type FieldOptional "sharingMode" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sharingMode" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, sharingMode}
-        type FieldIsArray "sharingMode" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageCreateInfo, sharingMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sharingMode" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, sharingMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, sharingMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sharingMode" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, sharingMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFamilyIndexCount" VkImageCreateInfo where
-        type FieldType "queueFamilyIndexCount" VkImageCreateInfo = Word32
-        type FieldOptional "queueFamilyIndexCount" VkImageCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "queueFamilyIndexCount" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, queueFamilyIndexCount}
-        type FieldIsArray "queueFamilyIndexCount" VkImageCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageCreateInfo, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueFamilyIndexCount" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, queueFamilyIndexCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueFamilyIndexCount" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pQueueFamilyIndices" VkImageCreateInfo where
-        type FieldType "pQueueFamilyIndices" VkImageCreateInfo = Ptr Word32
-        type FieldOptional "pQueueFamilyIndices" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pQueueFamilyIndices" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, pQueueFamilyIndices}
-        type FieldIsArray "pQueueFamilyIndices" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageCreateInfo, pQueueFamilyIndices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pQueueFamilyIndices" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, pQueueFamilyIndices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, pQueueFamilyIndices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pQueueFamilyIndices" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, pQueueFamilyIndices}
-
-instance {-# OVERLAPPING #-}
-         HasField "initialLayout" VkImageCreateInfo where
-        type FieldType "initialLayout" VkImageCreateInfo = VkImageLayout
-        type FieldOptional "initialLayout" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "initialLayout" VkImageCreateInfo =
-             #{offset VkImageCreateInfo, initialLayout}
-        type FieldIsArray "initialLayout" VkImageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageCreateInfo, initialLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "initialLayout" VkImageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageCreateInfo, initialLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageCreateInfo, initialLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "initialLayout" VkImageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageCreateInfo, initialLayout}
-
-instance Show VkImageCreateInfo where
-        showsPrec d x
-          = showString "VkImageCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "imageType = " .
-                                  showsPrec d (getField @"imageType" x) .
-                                    showString ", " .
-                                      showString "format = " .
-                                        showsPrec d (getField @"format" x) .
-                                          showString ", " .
-                                            showString "extent = " .
-                                              showsPrec d (getField @"extent" x) .
-                                                showString ", " .
-                                                  showString "mipLevels = " .
-                                                    showsPrec d (getField @"mipLevels" x) .
-                                                      showString ", " .
-                                                        showString "arrayLayers = " .
-                                                          showsPrec d (getField @"arrayLayers" x) .
-                                                            showString ", " .
-                                                              showString "samples = " .
-                                                                showsPrec d (getField @"samples" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "tiling = " .
-                                                                      showsPrec d
-                                                                        (getField @"tiling" x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString "usage = " .
-                                                                            showsPrec d
-                                                                              (getField @"usage" x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "sharingMode = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"sharingMode"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "queueFamilyIndexCount = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"queueFamilyIndexCount"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "pQueueFamilyIndices = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"pQueueFamilyIndices"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "initialLayout = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"initialLayout"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showChar
-                                                                                                        '}'
-
--- | > typedef struct VkImageFormatListCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     uint32_t               viewFormatCount;
---   >     const VkFormat*      pViewFormats;
---   > } VkImageFormatListCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageFormatListCreateInfoKHR VkImageFormatListCreateInfoKHR registry at www.khronos.org>
-type VkImageFormatListCreateInfoKHR =
-     VulkanStruct VkImageFormatListCreateInfoKHR' -- ' closing tick for hsc2hs
-
-data VkImageFormatListCreateInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkImageFormatListCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageFormatListCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageFormatListCreateInfoKHR where
-        sizeOf ~_ = #{size VkImageFormatListCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImageFormatListCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageFormatListCreateInfoKHR where
-        type StructFields VkImageFormatListCreateInfoKHR =
-             '["sType", "pNext", "viewFormatCount", "pViewFormats"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageFormatListCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageFormatListCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageFormatListCreateInfoKHR =
-             '[VkImageCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageFormatListCreateInfoKHR where
-        type FieldType "sType" VkImageFormatListCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkImageFormatListCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageFormatListCreateInfoKHR =
-             #{offset VkImageFormatListCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkImageFormatListCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatListCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImageFormatListCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageFormatListCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageFormatListCreateInfoKHR where
-        type FieldType "pNext" VkImageFormatListCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkImageFormatListCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageFormatListCreateInfoKHR =
-             #{offset VkImageFormatListCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImageFormatListCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatListCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImageFormatListCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageFormatListCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "viewFormatCount" VkImageFormatListCreateInfoKHR where
-        type FieldType "viewFormatCount" VkImageFormatListCreateInfoKHR =
-             Word32
-        type FieldOptional "viewFormatCount" VkImageFormatListCreateInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "viewFormatCount" VkImageFormatListCreateInfoKHR =
-             #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
-        type FieldIsArray "viewFormatCount" VkImageFormatListCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "viewFormatCount" VkImageFormatListCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, viewFormatCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "viewFormatCount" VkImageFormatListCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewFormats" VkImageFormatListCreateInfoKHR where
-        type FieldType "pViewFormats" VkImageFormatListCreateInfoKHR =
-             Ptr VkFormat
-        type FieldOptional "pViewFormats" VkImageFormatListCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pViewFormats" VkImageFormatListCreateInfoKHR =
-             #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
-        type FieldIsArray "pViewFormats" VkImageFormatListCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pViewFormats" VkImageFormatListCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatListCreateInfoKHR, pViewFormats})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pViewFormats" VkImageFormatListCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
-
-instance Show VkImageFormatListCreateInfoKHR where
-        showsPrec d x
-          = showString "VkImageFormatListCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "viewFormatCount = " .
-                            showsPrec d (getField @"viewFormatCount" x) .
-                              showString ", " .
-                                showString "pViewFormats = " .
-                                  showsPrec d (getField @"pViewFormats" x) . showChar '}'
-
--- | > typedef struct VkImageFormatProperties {
---   >     VkExtent3D             maxExtent;
---   >     uint32_t               maxMipLevels;
---   >     uint32_t               maxArrayLayers;
---   >     VkSampleCountFlags     sampleCounts;
---   >     VkDeviceSize           maxResourceSize;
---   > } VkImageFormatProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageFormatProperties VkImageFormatProperties registry at www.khronos.org>
-type VkImageFormatProperties =
-     VulkanStruct VkImageFormatProperties' -- ' closing tick for hsc2hs
-
-data VkImageFormatProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkImageFormatProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageFormatProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageFormatProperties where
-        sizeOf ~_ = #{size VkImageFormatProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageFormatProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageFormatProperties where
-        type StructFields VkImageFormatProperties =
-             '["maxExtent", "maxMipLevels", "maxArrayLayers", "sampleCounts", -- ' closing tick for hsc2hs
-               "maxResourceSize"]
-        type CUnionType VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageFormatProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkImageFormatProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "maxExtent" VkImageFormatProperties where
-        type FieldType "maxExtent" VkImageFormatProperties = VkExtent3D
-        type FieldOptional "maxExtent" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxExtent" VkImageFormatProperties =
-             #{offset VkImageFormatProperties, maxExtent}
-        type FieldIsArray "maxExtent" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties, maxExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxExtent" VkImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatProperties, maxExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxExtent" VkImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatProperties, maxExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxMipLevels" VkImageFormatProperties where
-        type FieldType "maxMipLevels" VkImageFormatProperties = Word32
-        type FieldOptional "maxMipLevels" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxMipLevels" VkImageFormatProperties =
-             #{offset VkImageFormatProperties, maxMipLevels}
-        type FieldIsArray "maxMipLevels" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties, maxMipLevels}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxMipLevels" VkImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxMipLevels})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatProperties, maxMipLevels}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxMipLevels" VkImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatProperties, maxMipLevels}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxArrayLayers" VkImageFormatProperties where
-        type FieldType "maxArrayLayers" VkImageFormatProperties = Word32
-        type FieldOptional "maxArrayLayers" VkImageFormatProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxArrayLayers" VkImageFormatProperties =
-             #{offset VkImageFormatProperties, maxArrayLayers}
-        type FieldIsArray "maxArrayLayers" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties, maxArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxArrayLayers" VkImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxArrayLayers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatProperties, maxArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxArrayLayers" VkImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatProperties, maxArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleCounts" VkImageFormatProperties where
-        type FieldType "sampleCounts" VkImageFormatProperties =
-             VkSampleCountFlags
-        type FieldOptional "sampleCounts" VkImageFormatProperties = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sampleCounts" VkImageFormatProperties =
-             #{offset VkImageFormatProperties, sampleCounts}
-        type FieldIsArray "sampleCounts" VkImageFormatProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties, sampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleCounts" VkImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, sampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatProperties, sampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleCounts" VkImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatProperties, sampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxResourceSize" VkImageFormatProperties where
-        type FieldType "maxResourceSize" VkImageFormatProperties =
-             VkDeviceSize
-        type FieldOptional "maxResourceSize" VkImageFormatProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxResourceSize" VkImageFormatProperties =
-             #{offset VkImageFormatProperties, maxResourceSize}
-        type FieldIsArray "maxResourceSize" VkImageFormatProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties, maxResourceSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxResourceSize" VkImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties, maxResourceSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatProperties, maxResourceSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxResourceSize" VkImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatProperties, maxResourceSize}
-
-instance Show VkImageFormatProperties where
-        showsPrec d x
-          = showString "VkImageFormatProperties {" .
-              showString "maxExtent = " .
-                showsPrec d (getField @"maxExtent" x) .
-                  showString ", " .
-                    showString "maxMipLevels = " .
-                      showsPrec d (getField @"maxMipLevels" x) .
-                        showString ", " .
-                          showString "maxArrayLayers = " .
-                            showsPrec d (getField @"maxArrayLayers" x) .
-                              showString ", " .
-                                showString "sampleCounts = " .
-                                  showsPrec d (getField @"sampleCounts" x) .
-                                    showString ", " .
-                                      showString "maxResourceSize = " .
-                                        showsPrec d (getField @"maxResourceSize" x) . showChar '}'
-
--- | > typedef struct VkImageFormatProperties2 {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkImageFormatProperties          imageFormatProperties;
---   > } VkImageFormatProperties2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageFormatProperties2 VkImageFormatProperties2 registry at www.khronos.org>
-type VkImageFormatProperties2 =
-     VulkanStruct VkImageFormatProperties2' -- ' closing tick for hsc2hs
-
-data VkImageFormatProperties2' -- ' closing tick for hsc2hs
-
-instance Eq VkImageFormatProperties2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageFormatProperties2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageFormatProperties2 where
-        sizeOf ~_ = #{size VkImageFormatProperties2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageFormatProperties2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageFormatProperties2 where
-        type StructFields VkImageFormatProperties2 =
-             '["sType", "pNext", "imageFormatProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageFormatProperties2 = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkImageFormatProperties2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageFormatProperties2 where
-        type FieldType "sType" VkImageFormatProperties2 = VkStructureType
-        type FieldOptional "sType" VkImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageFormatProperties2 =
-             #{offset VkImageFormatProperties2, sType}
-        type FieldIsArray "sType" VkImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImageFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageFormatProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageFormatProperties2 where
-        type FieldType "pNext" VkImageFormatProperties2 = Ptr Void
-        type FieldOptional "pNext" VkImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageFormatProperties2 =
-             #{offset VkImageFormatProperties2, pNext}
-        type FieldIsArray "pNext" VkImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImageFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageFormatProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageFormatProperties" VkImageFormatProperties2 where
-        type FieldType "imageFormatProperties" VkImageFormatProperties2 =
-             VkImageFormatProperties
-        type FieldOptional "imageFormatProperties" VkImageFormatProperties2
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageFormatProperties" VkImageFormatProperties2 =
-             #{offset VkImageFormatProperties2, imageFormatProperties}
-        type FieldIsArray "imageFormatProperties" VkImageFormatProperties2
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageFormatProperties2, imageFormatProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageFormatProperties" VkImageFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageFormatProperties2, imageFormatProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageFormatProperties2, imageFormatProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageFormatProperties" VkImageFormatProperties2
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageFormatProperties2, imageFormatProperties}
-
-instance Show VkImageFormatProperties2 where
-        showsPrec d x
-          = showString "VkImageFormatProperties2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "imageFormatProperties = " .
-                            showsPrec d (getField @"imageFormatProperties" x) . showChar '}'
-
--- | Alias for `VkImageFormatProperties2`
-type VkImageFormatProperties2KHR = VkImageFormatProperties2
-
--- | > typedef struct VkImageMemoryBarrier {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkAccessFlags          srcAccessMask;
---   >     VkAccessFlags          dstAccessMask;
---   >     VkImageLayout          oldLayout;
---   >     VkImageLayout          newLayout;
---   >     uint32_t               srcQueueFamilyIndex;
---   >     uint32_t               dstQueueFamilyIndex;
---   >     VkImage                image;
---   >     VkImageSubresourceRange subresourceRange;
---   > } VkImageMemoryBarrier;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageMemoryBarrier VkImageMemoryBarrier registry at www.khronos.org>
-type VkImageMemoryBarrier = VulkanStruct VkImageMemoryBarrier' -- ' closing tick for hsc2hs
-
-data VkImageMemoryBarrier' -- ' closing tick for hsc2hs
-
-instance Eq VkImageMemoryBarrier where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageMemoryBarrier where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageMemoryBarrier where
-        sizeOf ~_ = #{size VkImageMemoryBarrier}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageMemoryBarrier}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageMemoryBarrier where
-        type StructFields VkImageMemoryBarrier =
-             '["sType", "pNext", "srcAccessMask", "dstAccessMask", "oldLayout", -- ' closing tick for hsc2hs
-               "newLayout", "srcQueueFamilyIndex", "dstQueueFamilyIndex", "image",
-               "subresourceRange"]
-        type CUnionType VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageMemoryBarrier = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkImageMemoryBarrier
-         where
-        type FieldType "sType" VkImageMemoryBarrier = VkStructureType
-        type FieldOptional "sType" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, sType}
-        type FieldIsArray "sType" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkImageMemoryBarrier
-         where
-        type FieldType "pNext" VkImageMemoryBarrier = Ptr Void
-        type FieldOptional "pNext" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, pNext}
-        type FieldIsArray "pNext" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcAccessMask" VkImageMemoryBarrier where
-        type FieldType "srcAccessMask" VkImageMemoryBarrier = VkAccessFlags
-        type FieldOptional "srcAccessMask" VkImageMemoryBarrier = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "srcAccessMask" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, srcAccessMask}
-        type FieldIsArray "srcAccessMask" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcAccessMask" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, srcAccessMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcAccessMask" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstAccessMask" VkImageMemoryBarrier where
-        type FieldType "dstAccessMask" VkImageMemoryBarrier = VkAccessFlags
-        type FieldOptional "dstAccessMask" VkImageMemoryBarrier = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dstAccessMask" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, dstAccessMask}
-        type FieldIsArray "dstAccessMask" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryBarrier, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstAccessMask" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, dstAccessMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstAccessMask" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "oldLayout" VkImageMemoryBarrier where
-        type FieldType "oldLayout" VkImageMemoryBarrier = VkImageLayout
-        type FieldOptional "oldLayout" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "oldLayout" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, oldLayout}
-        type FieldIsArray "oldLayout" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageMemoryBarrier, oldLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "oldLayout" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, oldLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, oldLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "oldLayout" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, oldLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "newLayout" VkImageMemoryBarrier where
-        type FieldType "newLayout" VkImageMemoryBarrier = VkImageLayout
-        type FieldOptional "newLayout" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "newLayout" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, newLayout}
-        type FieldIsArray "newLayout" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageMemoryBarrier, newLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "newLayout" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, newLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, newLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "newLayout" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, newLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcQueueFamilyIndex" VkImageMemoryBarrier where
-        type FieldType "srcQueueFamilyIndex" VkImageMemoryBarrier = Word32
-        type FieldOptional "srcQueueFamilyIndex" VkImageMemoryBarrier =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcQueueFamilyIndex" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
-        type FieldIsArray "srcQueueFamilyIndex" VkImageMemoryBarrier =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcQueueFamilyIndex" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, srcQueueFamilyIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcQueueFamilyIndex" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstQueueFamilyIndex" VkImageMemoryBarrier where
-        type FieldType "dstQueueFamilyIndex" VkImageMemoryBarrier = Word32
-        type FieldOptional "dstQueueFamilyIndex" VkImageMemoryBarrier =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstQueueFamilyIndex" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
-        type FieldIsArray "dstQueueFamilyIndex" VkImageMemoryBarrier =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstQueueFamilyIndex" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, dstQueueFamilyIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstQueueFamilyIndex" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
-
-instance {-# OVERLAPPING #-} HasField "image" VkImageMemoryBarrier
-         where
-        type FieldType "image" VkImageMemoryBarrier = VkImage
-        type FieldOptional "image" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, image}
-        type FieldIsArray "image" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageMemoryBarrier, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "subresourceRange" VkImageMemoryBarrier where
-        type FieldType "subresourceRange" VkImageMemoryBarrier =
-             VkImageSubresourceRange
-        type FieldOptional "subresourceRange" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "subresourceRange" VkImageMemoryBarrier =
-             #{offset VkImageMemoryBarrier, subresourceRange}
-        type FieldIsArray "subresourceRange" VkImageMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryBarrier, subresourceRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subresourceRange" VkImageMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryBarrier, subresourceRange})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryBarrier, subresourceRange}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subresourceRange" VkImageMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryBarrier, subresourceRange}
-
-instance Show VkImageMemoryBarrier where
-        showsPrec d x
-          = showString "VkImageMemoryBarrier {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "srcAccessMask = " .
-                            showsPrec d (getField @"srcAccessMask" x) .
-                              showString ", " .
-                                showString "dstAccessMask = " .
-                                  showsPrec d (getField @"dstAccessMask" x) .
-                                    showString ", " .
-                                      showString "oldLayout = " .
-                                        showsPrec d (getField @"oldLayout" x) .
-                                          showString ", " .
-                                            showString "newLayout = " .
-                                              showsPrec d (getField @"newLayout" x) .
-                                                showString ", " .
-                                                  showString "srcQueueFamilyIndex = " .
-                                                    showsPrec d (getField @"srcQueueFamilyIndex" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "dstQueueFamilyIndex = " .
-                                                          showsPrec d
-                                                            (getField @"dstQueueFamilyIndex" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "image = " .
-                                                                showsPrec d (getField @"image" x) .
-                                                                  showString ", " .
-                                                                    showString "subresourceRange = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"subresourceRange"
-                                                                           x)
-                                                                        . showChar '}'
-
--- | > typedef struct VkImageMemoryRequirementsInfo2 {
---   >     VkStructureType sType;
---   >     const void*                                                          pNext;
---   >     VkImage                                                              image;
---   > } VkImageMemoryRequirementsInfo2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2 registry at www.khronos.org>
-type VkImageMemoryRequirementsInfo2 =
-     VulkanStruct VkImageMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
-
-data VkImageMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
-
-instance Eq VkImageMemoryRequirementsInfo2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageMemoryRequirementsInfo2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageMemoryRequirementsInfo2 where
-        sizeOf ~_ = #{size VkImageMemoryRequirementsInfo2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImageMemoryRequirementsInfo2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageMemoryRequirementsInfo2 where
-        type StructFields VkImageMemoryRequirementsInfo2 =
-             '["sType", "pNext", "image"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageMemoryRequirementsInfo2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageMemoryRequirementsInfo2 where
-        type FieldType "sType" VkImageMemoryRequirementsInfo2 =
-             VkStructureType
-        type FieldOptional "sType" VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageMemoryRequirementsInfo2 =
-             #{offset VkImageMemoryRequirementsInfo2, sType}
-        type FieldIsArray "sType" VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImageMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryRequirementsInfo2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageMemoryRequirementsInfo2 where
-        type FieldType "pNext" VkImageMemoryRequirementsInfo2 = Ptr Void
-        type FieldOptional "pNext" VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageMemoryRequirementsInfo2 =
-             #{offset VkImageMemoryRequirementsInfo2, pNext}
-        type FieldIsArray "pNext" VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImageMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryRequirementsInfo2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkImageMemoryRequirementsInfo2 where
-        type FieldType "image" VkImageMemoryRequirementsInfo2 = VkImage
-        type FieldOptional "image" VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkImageMemoryRequirementsInfo2 =
-             #{offset VkImageMemoryRequirementsInfo2, image}
-        type FieldIsArray "image" VkImageMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageMemoryRequirementsInfo2, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkImageMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageMemoryRequirementsInfo2, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageMemoryRequirementsInfo2, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkImageMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageMemoryRequirementsInfo2, image}
-
-instance Show VkImageMemoryRequirementsInfo2 where
-        showsPrec d x
-          = showString "VkImageMemoryRequirementsInfo2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "image = " .
-                            showsPrec d (getField @"image" x) . showChar '}'
-
--- | Alias for `VkImageMemoryRequirementsInfo2`
-type VkImageMemoryRequirementsInfo2KHR =
-     VkImageMemoryRequirementsInfo2
-
--- | > typedef struct VkImagePlaneMemoryRequirementsInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkImageAspectFlagBits            planeAspect;
---   > } VkImagePlaneMemoryRequirementsInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfo registry at www.khronos.org>
-type VkImagePlaneMemoryRequirementsInfo =
-     VulkanStruct VkImagePlaneMemoryRequirementsInfo' -- ' closing tick for hsc2hs
-
-data VkImagePlaneMemoryRequirementsInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkImagePlaneMemoryRequirementsInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImagePlaneMemoryRequirementsInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImagePlaneMemoryRequirementsInfo where
-        sizeOf ~_ = #{size VkImagePlaneMemoryRequirementsInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImagePlaneMemoryRequirementsInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImagePlaneMemoryRequirementsInfo where
-        type StructFields VkImagePlaneMemoryRequirementsInfo =
-             '["sType", "pNext", "planeAspect"] -- ' closing tick for hsc2hs
-        type CUnionType VkImagePlaneMemoryRequirementsInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImagePlaneMemoryRequirementsInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImagePlaneMemoryRequirementsInfo =
-             '[VkImageMemoryRequirementsInfo2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImagePlaneMemoryRequirementsInfo where
-        type FieldType "sType" VkImagePlaneMemoryRequirementsInfo =
-             VkStructureType
-        type FieldOptional "sType" VkImagePlaneMemoryRequirementsInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImagePlaneMemoryRequirementsInfo =
-             #{offset VkImagePlaneMemoryRequirementsInfo, sType}
-        type FieldIsArray "sType" VkImagePlaneMemoryRequirementsInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImagePlaneMemoryRequirementsInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImagePlaneMemoryRequirementsInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImagePlaneMemoryRequirementsInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImagePlaneMemoryRequirementsInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImagePlaneMemoryRequirementsInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImagePlaneMemoryRequirementsInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImagePlaneMemoryRequirementsInfo where
-        type FieldType "pNext" VkImagePlaneMemoryRequirementsInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkImagePlaneMemoryRequirementsInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImagePlaneMemoryRequirementsInfo =
-             #{offset VkImagePlaneMemoryRequirementsInfo, pNext}
-        type FieldIsArray "pNext" VkImagePlaneMemoryRequirementsInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImagePlaneMemoryRequirementsInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImagePlaneMemoryRequirementsInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImagePlaneMemoryRequirementsInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImagePlaneMemoryRequirementsInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImagePlaneMemoryRequirementsInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImagePlaneMemoryRequirementsInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "planeAspect" VkImagePlaneMemoryRequirementsInfo where
-        type FieldType "planeAspect" VkImagePlaneMemoryRequirementsInfo =
-             VkImageAspectFlagBits
-        type FieldOptional "planeAspect" VkImagePlaneMemoryRequirementsInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "planeAspect" VkImagePlaneMemoryRequirementsInfo =
-             #{offset VkImagePlaneMemoryRequirementsInfo, planeAspect}
-        type FieldIsArray "planeAspect" VkImagePlaneMemoryRequirementsInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImagePlaneMemoryRequirementsInfo, planeAspect}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "planeAspect" VkImagePlaneMemoryRequirementsInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImagePlaneMemoryRequirementsInfo, planeAspect})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImagePlaneMemoryRequirementsInfo, planeAspect}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "planeAspect" VkImagePlaneMemoryRequirementsInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImagePlaneMemoryRequirementsInfo, planeAspect}
-
-instance Show VkImagePlaneMemoryRequirementsInfo where
-        showsPrec d x
-          = showString "VkImagePlaneMemoryRequirementsInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "planeAspect = " .
-                            showsPrec d (getField @"planeAspect" x) . showChar '}'
-
--- | Alias for `VkImagePlaneMemoryRequirementsInfo`
-type VkImagePlaneMemoryRequirementsInfoKHR =
-     VkImagePlaneMemoryRequirementsInfo
-
--- | > typedef struct VkImageResolve {
---   >     VkImageSubresourceLayers srcSubresource;
---   >     VkOffset3D             srcOffset;
---   >     VkImageSubresourceLayers dstSubresource;
---   >     VkOffset3D             dstOffset;
---   >     VkExtent3D             extent;
---   > } VkImageResolve;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageResolve VkImageResolve registry at www.khronos.org>
-type VkImageResolve = VulkanStruct VkImageResolve' -- ' closing tick for hsc2hs
-
-data VkImageResolve' -- ' closing tick for hsc2hs
-
-instance Eq VkImageResolve where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageResolve where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageResolve where
-        sizeOf ~_ = #{size VkImageResolve}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageResolve}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageResolve where
-        type StructFields VkImageResolve =
-             '["srcSubresource", "srcOffset", "dstSubresource", "dstOffset", -- ' closing tick for hsc2hs
-               "extent"]
-        type CUnionType VkImageResolve = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageResolve = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageResolve = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "srcSubresource" VkImageResolve where
-        type FieldType "srcSubresource" VkImageResolve =
-             VkImageSubresourceLayers
-        type FieldOptional "srcSubresource" VkImageResolve = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcSubresource" VkImageResolve =
-             #{offset VkImageResolve, srcSubresource}
-        type FieldIsArray "srcSubresource" VkImageResolve = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageResolve, srcSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcSubresource" VkImageResolve where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, srcSubresource})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageResolve, srcSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcSubresource" VkImageResolve where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageResolve, srcSubresource}
-
-instance {-# OVERLAPPING #-} HasField "srcOffset" VkImageResolve
-         where
-        type FieldType "srcOffset" VkImageResolve = VkOffset3D
-        type FieldOptional "srcOffset" VkImageResolve = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcOffset" VkImageResolve =
-             #{offset VkImageResolve, srcOffset}
-        type FieldIsArray "srcOffset" VkImageResolve = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageResolve, srcOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcOffset" VkImageResolve where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, srcOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageResolve, srcOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcOffset" VkImageResolve where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageResolve, srcOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstSubresource" VkImageResolve where
-        type FieldType "dstSubresource" VkImageResolve =
-             VkImageSubresourceLayers
-        type FieldOptional "dstSubresource" VkImageResolve = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstSubresource" VkImageResolve =
-             #{offset VkImageResolve, dstSubresource}
-        type FieldIsArray "dstSubresource" VkImageResolve = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageResolve, dstSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstSubresource" VkImageResolve where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, dstSubresource})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageResolve, dstSubresource}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstSubresource" VkImageResolve where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageResolve, dstSubresource}
-
-instance {-# OVERLAPPING #-} HasField "dstOffset" VkImageResolve
-         where
-        type FieldType "dstOffset" VkImageResolve = VkOffset3D
-        type FieldOptional "dstOffset" VkImageResolve = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstOffset" VkImageResolve =
-             #{offset VkImageResolve, dstOffset}
-        type FieldIsArray "dstOffset" VkImageResolve = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageResolve, dstOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstOffset" VkImageResolve where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, dstOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageResolve, dstOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstOffset" VkImageResolve where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageResolve, dstOffset}
-
-instance {-# OVERLAPPING #-} HasField "extent" VkImageResolve where
-        type FieldType "extent" VkImageResolve = VkExtent3D
-        type FieldOptional "extent" VkImageResolve = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extent" VkImageResolve =
-             #{offset VkImageResolve, extent}
-        type FieldIsArray "extent" VkImageResolve = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageResolve, extent}
-
-instance {-# OVERLAPPING #-} CanReadField "extent" VkImageResolve
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageResolve, extent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageResolve, extent}
-
-instance {-# OVERLAPPING #-} CanWriteField "extent" VkImageResolve
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageResolve, extent}
-
-instance Show VkImageResolve where
-        showsPrec d x
-          = showString "VkImageResolve {" .
-              showString "srcSubresource = " .
-                showsPrec d (getField @"srcSubresource" x) .
-                  showString ", " .
-                    showString "srcOffset = " .
-                      showsPrec d (getField @"srcOffset" x) .
-                        showString ", " .
-                          showString "dstSubresource = " .
-                            showsPrec d (getField @"dstSubresource" x) .
-                              showString ", " .
-                                showString "dstOffset = " .
-                                  showsPrec d (getField @"dstOffset" x) .
-                                    showString ", " .
-                                      showString "extent = " .
-                                        showsPrec d (getField @"extent" x) . showChar '}'
-
--- | > typedef struct VkImageSparseMemoryRequirementsInfo2 {
---   >     VkStructureType sType;
---   >     const void*                                                          pNext;
---   >     VkImage                                                              image;
---   > } VkImageSparseMemoryRequirementsInfo2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2 registry at www.khronos.org>
-type VkImageSparseMemoryRequirementsInfo2 =
-     VulkanStruct VkImageSparseMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
-
-data VkImageSparseMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
-
-instance Eq VkImageSparseMemoryRequirementsInfo2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageSparseMemoryRequirementsInfo2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageSparseMemoryRequirementsInfo2 where
-        sizeOf ~_
-          = #{size VkImageSparseMemoryRequirementsInfo2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImageSparseMemoryRequirementsInfo2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageSparseMemoryRequirementsInfo2 where
-        type StructFields VkImageSparseMemoryRequirementsInfo2 =
-             '["sType", "pNext", "image"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageSparseMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageSparseMemoryRequirementsInfo2 = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageSparseMemoryRequirementsInfo2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageSparseMemoryRequirementsInfo2 where
-        type FieldType "sType" VkImageSparseMemoryRequirementsInfo2 =
-             VkStructureType
-        type FieldOptional "sType" VkImageSparseMemoryRequirementsInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageSparseMemoryRequirementsInfo2 =
-             #{offset VkImageSparseMemoryRequirementsInfo2, sType}
-        type FieldIsArray "sType" VkImageSparseMemoryRequirementsInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSparseMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImageSparseMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSparseMemoryRequirementsInfo2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSparseMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageSparseMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSparseMemoryRequirementsInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageSparseMemoryRequirementsInfo2 where
-        type FieldType "pNext" VkImageSparseMemoryRequirementsInfo2 =
-             Ptr Void
-        type FieldOptional "pNext" VkImageSparseMemoryRequirementsInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageSparseMemoryRequirementsInfo2 =
-             #{offset VkImageSparseMemoryRequirementsInfo2, pNext}
-        type FieldIsArray "pNext" VkImageSparseMemoryRequirementsInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSparseMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImageSparseMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSparseMemoryRequirementsInfo2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSparseMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageSparseMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSparseMemoryRequirementsInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkImageSparseMemoryRequirementsInfo2 where
-        type FieldType "image" VkImageSparseMemoryRequirementsInfo2 =
-             VkImage
-        type FieldOptional "image" VkImageSparseMemoryRequirementsInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkImageSparseMemoryRequirementsInfo2 =
-             #{offset VkImageSparseMemoryRequirementsInfo2, image}
-        type FieldIsArray "image" VkImageSparseMemoryRequirementsInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSparseMemoryRequirementsInfo2, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkImageSparseMemoryRequirementsInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSparseMemoryRequirementsInfo2, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSparseMemoryRequirementsInfo2, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkImageSparseMemoryRequirementsInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSparseMemoryRequirementsInfo2, image}
-
-instance Show VkImageSparseMemoryRequirementsInfo2 where
-        showsPrec d x
-          = showString "VkImageSparseMemoryRequirementsInfo2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "image = " .
-                            showsPrec d (getField @"image" x) . showChar '}'
-
--- | Alias for `VkImageSparseMemoryRequirementsInfo2`
-type VkImageSparseMemoryRequirementsInfo2KHR =
-     VkImageSparseMemoryRequirementsInfo2
-
--- | > typedef struct VkImageSubresource {
---   >     VkImageAspectFlags     aspectMask;
---   >     uint32_t               mipLevel;
---   >     uint32_t               arrayLayer;
---   > } VkImageSubresource;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresource VkImageSubresource registry at www.khronos.org>
-type VkImageSubresource = VulkanStruct VkImageSubresource' -- ' closing tick for hsc2hs
-
-data VkImageSubresource' -- ' closing tick for hsc2hs
-
-instance Eq VkImageSubresource where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageSubresource where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageSubresource where
-        sizeOf ~_ = #{size VkImageSubresource}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageSubresource}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageSubresource where
-        type StructFields VkImageSubresource =
-             '["aspectMask", "mipLevel", "arrayLayer"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageSubresource = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageSubresource = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageSubresource = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectMask" VkImageSubresource where
-        type FieldType "aspectMask" VkImageSubresource = VkImageAspectFlags
-        type FieldOptional "aspectMask" VkImageSubresource = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "aspectMask" VkImageSubresource =
-             #{offset VkImageSubresource, aspectMask}
-        type FieldIsArray "aspectMask" VkImageSubresource = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageSubresource, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "aspectMask" VkImageSubresource where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, aspectMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresource, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "aspectMask" VkImageSubresource where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresource, aspectMask}
-
-instance {-# OVERLAPPING #-} HasField "mipLevel" VkImageSubresource
-         where
-        type FieldType "mipLevel" VkImageSubresource = Word32
-        type FieldOptional "mipLevel" VkImageSubresource = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mipLevel" VkImageSubresource =
-             #{offset VkImageSubresource, mipLevel}
-        type FieldIsArray "mipLevel" VkImageSubresource = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageSubresource, mipLevel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mipLevel" VkImageSubresource where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, mipLevel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresource, mipLevel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mipLevel" VkImageSubresource where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresource, mipLevel}
-
-instance {-# OVERLAPPING #-}
-         HasField "arrayLayer" VkImageSubresource where
-        type FieldType "arrayLayer" VkImageSubresource = Word32
-        type FieldOptional "arrayLayer" VkImageSubresource = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "arrayLayer" VkImageSubresource =
-             #{offset VkImageSubresource, arrayLayer}
-        type FieldIsArray "arrayLayer" VkImageSubresource = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageSubresource, arrayLayer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "arrayLayer" VkImageSubresource where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresource, arrayLayer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresource, arrayLayer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "arrayLayer" VkImageSubresource where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresource, arrayLayer}
-
-instance Show VkImageSubresource where
-        showsPrec d x
-          = showString "VkImageSubresource {" .
-              showString "aspectMask = " .
-                showsPrec d (getField @"aspectMask" x) .
-                  showString ", " .
-                    showString "mipLevel = " .
-                      showsPrec d (getField @"mipLevel" x) .
-                        showString ", " .
-                          showString "arrayLayer = " .
-                            showsPrec d (getField @"arrayLayer" x) . showChar '}'
-
--- | > typedef struct VkImageSubresourceLayers {
---   >     VkImageAspectFlags     aspectMask;
---   >     uint32_t               mipLevel;
---   >     uint32_t               baseArrayLayer;
---   >     uint32_t               layerCount;
---   > } VkImageSubresourceLayers;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresourceLayers VkImageSubresourceLayers registry at www.khronos.org>
-type VkImageSubresourceLayers =
-     VulkanStruct VkImageSubresourceLayers' -- ' closing tick for hsc2hs
-
-data VkImageSubresourceLayers' -- ' closing tick for hsc2hs
-
-instance Eq VkImageSubresourceLayers where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageSubresourceLayers where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageSubresourceLayers where
-        sizeOf ~_ = #{size VkImageSubresourceLayers}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageSubresourceLayers}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageSubresourceLayers where
-        type StructFields VkImageSubresourceLayers =
-             '["aspectMask", "mipLevel", "baseArrayLayer", "layerCount"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageSubresourceLayers = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectMask" VkImageSubresourceLayers where
-        type FieldType "aspectMask" VkImageSubresourceLayers =
-             VkImageAspectFlags
-        type FieldOptional "aspectMask" VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "aspectMask" VkImageSubresourceLayers =
-             #{offset VkImageSubresourceLayers, aspectMask}
-        type FieldIsArray "aspectMask" VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceLayers, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "aspectMask" VkImageSubresourceLayers where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, aspectMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceLayers, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "aspectMask" VkImageSubresourceLayers where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceLayers, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "mipLevel" VkImageSubresourceLayers where
-        type FieldType "mipLevel" VkImageSubresourceLayers = Word32
-        type FieldOptional "mipLevel" VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mipLevel" VkImageSubresourceLayers =
-             #{offset VkImageSubresourceLayers, mipLevel}
-        type FieldIsArray "mipLevel" VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceLayers, mipLevel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mipLevel" VkImageSubresourceLayers where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, mipLevel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceLayers, mipLevel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mipLevel" VkImageSubresourceLayers where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceLayers, mipLevel}
-
-instance {-# OVERLAPPING #-}
-         HasField "baseArrayLayer" VkImageSubresourceLayers where
-        type FieldType "baseArrayLayer" VkImageSubresourceLayers = Word32
-        type FieldOptional "baseArrayLayer" VkImageSubresourceLayers =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "baseArrayLayer" VkImageSubresourceLayers =
-             #{offset VkImageSubresourceLayers, baseArrayLayer}
-        type FieldIsArray "baseArrayLayer" VkImageSubresourceLayers =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceLayers, baseArrayLayer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "baseArrayLayer" VkImageSubresourceLayers where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, baseArrayLayer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceLayers, baseArrayLayer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "baseArrayLayer" VkImageSubresourceLayers where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceLayers, baseArrayLayer}
-
-instance {-# OVERLAPPING #-}
-         HasField "layerCount" VkImageSubresourceLayers where
-        type FieldType "layerCount" VkImageSubresourceLayers = Word32
-        type FieldOptional "layerCount" VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layerCount" VkImageSubresourceLayers =
-             #{offset VkImageSubresourceLayers, layerCount}
-        type FieldIsArray "layerCount" VkImageSubresourceLayers = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceLayers, layerCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "layerCount" VkImageSubresourceLayers where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceLayers, layerCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceLayers, layerCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "layerCount" VkImageSubresourceLayers where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceLayers, layerCount}
-
-instance Show VkImageSubresourceLayers where
-        showsPrec d x
-          = showString "VkImageSubresourceLayers {" .
-              showString "aspectMask = " .
-                showsPrec d (getField @"aspectMask" x) .
-                  showString ", " .
-                    showString "mipLevel = " .
-                      showsPrec d (getField @"mipLevel" x) .
-                        showString ", " .
-                          showString "baseArrayLayer = " .
-                            showsPrec d (getField @"baseArrayLayer" x) .
-                              showString ", " .
-                                showString "layerCount = " .
-                                  showsPrec d (getField @"layerCount" x) . showChar '}'
-
--- | > typedef struct VkImageSubresourceRange {
---   >     VkImageAspectFlags     aspectMask;
---   >     uint32_t               baseMipLevel;
---   >     uint32_t               levelCount;
---   >     uint32_t               baseArrayLayer;
---   >     uint32_t               layerCount;
---   > } VkImageSubresourceRange;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresourceRange VkImageSubresourceRange registry at www.khronos.org>
-type VkImageSubresourceRange =
-     VulkanStruct VkImageSubresourceRange' -- ' closing tick for hsc2hs
-
-data VkImageSubresourceRange' -- ' closing tick for hsc2hs
-
-instance Eq VkImageSubresourceRange where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageSubresourceRange where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageSubresourceRange where
-        sizeOf ~_ = #{size VkImageSubresourceRange}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageSubresourceRange}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageSubresourceRange where
-        type StructFields VkImageSubresourceRange =
-             '["aspectMask", "baseMipLevel", "levelCount", "baseArrayLayer", -- ' closing tick for hsc2hs
-               "layerCount"]
-        type CUnionType VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageSubresourceRange = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectMask" VkImageSubresourceRange where
-        type FieldType "aspectMask" VkImageSubresourceRange =
-             VkImageAspectFlags
-        type FieldOptional "aspectMask" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "aspectMask" VkImageSubresourceRange =
-             #{offset VkImageSubresourceRange, aspectMask}
-        type FieldIsArray "aspectMask" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceRange, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "aspectMask" VkImageSubresourceRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, aspectMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceRange, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "aspectMask" VkImageSubresourceRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceRange, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "baseMipLevel" VkImageSubresourceRange where
-        type FieldType "baseMipLevel" VkImageSubresourceRange = Word32
-        type FieldOptional "baseMipLevel" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "baseMipLevel" VkImageSubresourceRange =
-             #{offset VkImageSubresourceRange, baseMipLevel}
-        type FieldIsArray "baseMipLevel" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceRange, baseMipLevel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "baseMipLevel" VkImageSubresourceRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, baseMipLevel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceRange, baseMipLevel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "baseMipLevel" VkImageSubresourceRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceRange, baseMipLevel}
-
-instance {-# OVERLAPPING #-}
-         HasField "levelCount" VkImageSubresourceRange where
-        type FieldType "levelCount" VkImageSubresourceRange = Word32
-        type FieldOptional "levelCount" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "levelCount" VkImageSubresourceRange =
-             #{offset VkImageSubresourceRange, levelCount}
-        type FieldIsArray "levelCount" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceRange, levelCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "levelCount" VkImageSubresourceRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, levelCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceRange, levelCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "levelCount" VkImageSubresourceRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceRange, levelCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "baseArrayLayer" VkImageSubresourceRange where
-        type FieldType "baseArrayLayer" VkImageSubresourceRange = Word32
-        type FieldOptional "baseArrayLayer" VkImageSubresourceRange =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "baseArrayLayer" VkImageSubresourceRange =
-             #{offset VkImageSubresourceRange, baseArrayLayer}
-        type FieldIsArray "baseArrayLayer" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceRange, baseArrayLayer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "baseArrayLayer" VkImageSubresourceRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, baseArrayLayer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceRange, baseArrayLayer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "baseArrayLayer" VkImageSubresourceRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceRange, baseArrayLayer}
-
-instance {-# OVERLAPPING #-}
-         HasField "layerCount" VkImageSubresourceRange where
-        type FieldType "layerCount" VkImageSubresourceRange = Word32
-        type FieldOptional "layerCount" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layerCount" VkImageSubresourceRange =
-             #{offset VkImageSubresourceRange, layerCount}
-        type FieldIsArray "layerCount" VkImageSubresourceRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSubresourceRange, layerCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "layerCount" VkImageSubresourceRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSubresourceRange, layerCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSubresourceRange, layerCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "layerCount" VkImageSubresourceRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSubresourceRange, layerCount}
-
-instance Show VkImageSubresourceRange where
-        showsPrec d x
-          = showString "VkImageSubresourceRange {" .
-              showString "aspectMask = " .
-                showsPrec d (getField @"aspectMask" x) .
-                  showString ", " .
-                    showString "baseMipLevel = " .
-                      showsPrec d (getField @"baseMipLevel" x) .
-                        showString ", " .
-                          showString "levelCount = " .
-                            showsPrec d (getField @"levelCount" x) .
-                              showString ", " .
-                                showString "baseArrayLayer = " .
-                                  showsPrec d (getField @"baseArrayLayer" x) .
-                                    showString ", " .
-                                      showString "layerCount = " .
-                                        showsPrec d (getField @"layerCount" x) . showChar '}'
-
--- | > typedef struct VkImageSwapchainCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSwapchainKHR   swapchain;
---   > } VkImageSwapchainCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSwapchainCreateInfoKHR VkImageSwapchainCreateInfoKHR registry at www.khronos.org>
-type VkImageSwapchainCreateInfoKHR =
-     VulkanStruct VkImageSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
-
-data VkImageSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkImageSwapchainCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageSwapchainCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageSwapchainCreateInfoKHR where
-        sizeOf ~_ = #{size VkImageSwapchainCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImageSwapchainCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageSwapchainCreateInfoKHR where
-        type StructFields VkImageSwapchainCreateInfoKHR =
-             '["sType", "pNext", "swapchain"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageSwapchainCreateInfoKHR =
-             '[VkImageCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageSwapchainCreateInfoKHR where
-        type FieldType "sType" VkImageSwapchainCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkImageSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageSwapchainCreateInfoKHR =
-             #{offset VkImageSwapchainCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkImageSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImageSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSwapchainCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageSwapchainCreateInfoKHR where
-        type FieldType "pNext" VkImageSwapchainCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkImageSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageSwapchainCreateInfoKHR =
-             #{offset VkImageSwapchainCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImageSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImageSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSwapchainCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchain" VkImageSwapchainCreateInfoKHR where
-        type FieldType "swapchain" VkImageSwapchainCreateInfoKHR =
-             VkSwapchainKHR
-        type FieldOptional "swapchain" VkImageSwapchainCreateInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "swapchain" VkImageSwapchainCreateInfoKHR =
-             #{offset VkImageSwapchainCreateInfoKHR, swapchain}
-        type FieldIsArray "swapchain" VkImageSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageSwapchainCreateInfoKHR, swapchain}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "swapchain" VkImageSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageSwapchainCreateInfoKHR, swapchain})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageSwapchainCreateInfoKHR, swapchain}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "swapchain" VkImageSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageSwapchainCreateInfoKHR, swapchain}
-
-instance Show VkImageSwapchainCreateInfoKHR where
-        showsPrec d x
-          = showString "VkImageSwapchainCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "swapchain = " .
-                            showsPrec d (getField @"swapchain" x) . showChar '}'
-
--- | > typedef struct VkImageViewCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkImageViewCreateFlags flags;
---   >     VkImage                image;
---   >     VkImageViewType        viewType;
---   >     VkFormat               format;
---   >     VkComponentMapping     components;
---   >     VkImageSubresourceRange subresourceRange;
---   > } VkImageViewCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageViewCreateInfo VkImageViewCreateInfo registry at www.khronos.org>
-type VkImageViewCreateInfo = VulkanStruct VkImageViewCreateInfo' -- ' closing tick for hsc2hs
-
-data VkImageViewCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkImageViewCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageViewCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageViewCreateInfo where
-        sizeOf ~_ = #{size VkImageViewCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageViewCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageViewCreateInfo where
-        type StructFields VkImageViewCreateInfo =
-             '["sType", "pNext", "flags", "image", "viewType", "format", -- ' closing tick for hsc2hs
-               "components", "subresourceRange"]
-        type CUnionType VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageViewCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkImageViewCreateInfo
-         where
-        type FieldType "sType" VkImageViewCreateInfo = VkStructureType
-        type FieldOptional "sType" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageViewCreateInfo =
-             #{offset VkImageViewCreateInfo, sType}
-        type FieldIsArray "sType" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageViewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImageViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkImageViewCreateInfo
-         where
-        type FieldType "pNext" VkImageViewCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageViewCreateInfo =
-             #{offset VkImageViewCreateInfo, pNext}
-        type FieldIsArray "pNext" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageViewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImageViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkImageViewCreateInfo
-         where
-        type FieldType "flags" VkImageViewCreateInfo =
-             VkImageViewCreateFlags
-        type FieldOptional "flags" VkImageViewCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkImageViewCreateInfo =
-             #{offset VkImageViewCreateInfo, flags}
-        type FieldIsArray "flags" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageViewCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkImageViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, flags}
-
-instance {-# OVERLAPPING #-} HasField "image" VkImageViewCreateInfo
-         where
-        type FieldType "image" VkImageViewCreateInfo = VkImage
-        type FieldOptional "image" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkImageViewCreateInfo =
-             #{offset VkImageViewCreateInfo, image}
-        type FieldIsArray "image" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageViewCreateInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkImageViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewCreateInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "viewType" VkImageViewCreateInfo where
-        type FieldType "viewType" VkImageViewCreateInfo = VkImageViewType
-        type FieldOptional "viewType" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "viewType" VkImageViewCreateInfo =
-             #{offset VkImageViewCreateInfo, viewType}
-        type FieldIsArray "viewType" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageViewCreateInfo, viewType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "viewType" VkImageViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, viewType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewCreateInfo, viewType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "viewType" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, viewType}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkImageViewCreateInfo where
-        type FieldType "format" VkImageViewCreateInfo = VkFormat
-        type FieldOptional "format" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkImageViewCreateInfo =
-             #{offset VkImageViewCreateInfo, format}
-        type FieldIsArray "format" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImageViewCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkImageViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "components" VkImageViewCreateInfo where
-        type FieldType "components" VkImageViewCreateInfo =
-             VkComponentMapping
-        type FieldOptional "components" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "components" VkImageViewCreateInfo =
-             #{offset VkImageViewCreateInfo, components}
-        type FieldIsArray "components" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageViewCreateInfo, components}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "components" VkImageViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, components})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewCreateInfo, components}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "components" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, components}
-
-instance {-# OVERLAPPING #-}
-         HasField "subresourceRange" VkImageViewCreateInfo where
-        type FieldType "subresourceRange" VkImageViewCreateInfo =
-             VkImageSubresourceRange
-        type FieldOptional "subresourceRange" VkImageViewCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "subresourceRange" VkImageViewCreateInfo =
-             #{offset VkImageViewCreateInfo, subresourceRange}
-        type FieldIsArray "subresourceRange" VkImageViewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageViewCreateInfo, subresourceRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subresourceRange" VkImageViewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewCreateInfo, subresourceRange})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewCreateInfo, subresourceRange}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subresourceRange" VkImageViewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewCreateInfo, subresourceRange}
-
-instance Show VkImageViewCreateInfo where
-        showsPrec d x
-          = showString "VkImageViewCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "image = " .
-                                  showsPrec d (getField @"image" x) .
-                                    showString ", " .
-                                      showString "viewType = " .
-                                        showsPrec d (getField @"viewType" x) .
-                                          showString ", " .
-                                            showString "format = " .
-                                              showsPrec d (getField @"format" x) .
-                                                showString ", " .
-                                                  showString "components = " .
-                                                    showsPrec d (getField @"components" x) .
-                                                      showString ", " .
-                                                        showString "subresourceRange = " .
-                                                          showsPrec d
-                                                            (getField @"subresourceRange" x)
-                                                            . showChar '}'
-
--- | > typedef struct VkImageViewUsageCreateInfo {
---   >     VkStructureType sType;
---   >     const void* pNext;
---   >     VkImageUsageFlags usage;
---   > } VkImageViewUsageCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageViewUsageCreateInfo VkImageViewUsageCreateInfo registry at www.khronos.org>
-type VkImageViewUsageCreateInfo =
-     VulkanStruct VkImageViewUsageCreateInfo' -- ' closing tick for hsc2hs
-
-data VkImageViewUsageCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkImageViewUsageCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImageViewUsageCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImageViewUsageCreateInfo where
-        sizeOf ~_ = #{size VkImageViewUsageCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImageViewUsageCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImageViewUsageCreateInfo where
-        type StructFields VkImageViewUsageCreateInfo =
-             '["sType", "pNext", "usage"] -- ' closing tick for hsc2hs
-        type CUnionType VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImageViewUsageCreateInfo =
-             '[VkImageViewCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImageViewUsageCreateInfo where
-        type FieldType "sType" VkImageViewUsageCreateInfo = VkStructureType
-        type FieldOptional "sType" VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImageViewUsageCreateInfo =
-             #{offset VkImageViewUsageCreateInfo, sType}
-        type FieldIsArray "sType" VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageViewUsageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImageViewUsageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewUsageCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewUsageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImageViewUsageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewUsageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImageViewUsageCreateInfo where
-        type FieldType "pNext" VkImageViewUsageCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImageViewUsageCreateInfo =
-             #{offset VkImageViewUsageCreateInfo, pNext}
-        type FieldIsArray "pNext" VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageViewUsageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImageViewUsageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewUsageCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewUsageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImageViewUsageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewUsageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "usage" VkImageViewUsageCreateInfo where
-        type FieldType "usage" VkImageViewUsageCreateInfo =
-             VkImageUsageFlags
-        type FieldOptional "usage" VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkImageViewUsageCreateInfo =
-             #{offset VkImageViewUsageCreateInfo, usage}
-        type FieldIsArray "usage" VkImageViewUsageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImageViewUsageCreateInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "usage" VkImageViewUsageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImageViewUsageCreateInfo, usage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImageViewUsageCreateInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "usage" VkImageViewUsageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImageViewUsageCreateInfo, usage}
-
-instance Show VkImageViewUsageCreateInfo where
-        showsPrec d x
-          = showString "VkImageViewUsageCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "usage = " .
-                            showsPrec d (getField @"usage" x) . showChar '}'
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Image
+       (VkImageBlit, VkImageCopy, VkImageCreateInfo,
+        VkImageFormatListCreateInfoKHR, VkImageFormatProperties,
+        VkImageFormatProperties2, VkImageFormatProperties2KHR,
+        VkImageMemoryBarrier, VkImageMemoryRequirementsInfo2,
+        VkImageMemoryRequirementsInfo2KHR,
+        VkImagePlaneMemoryRequirementsInfo,
+        VkImagePlaneMemoryRequirementsInfoKHR, VkImageResolve,
+        VkImageSparseMemoryRequirementsInfo2,
+        VkImageSparseMemoryRequirementsInfo2KHR, VkImageSubresource,
+        VkImageSubresourceLayers, VkImageSubresourceRange,
+        VkImageSwapchainCreateInfoKHR, VkImageViewCreateInfo,
+        VkImageViewUsageCreateInfo, VkImageViewUsageCreateInfoKHR)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes               (VkDeviceSize)
+import Graphics.Vulkan.Types.Bitmasks                (VkImageViewCreateFlags)
+import Graphics.Vulkan.Types.Enum.AccessFlags        (VkAccessFlags)
+import Graphics.Vulkan.Types.Enum.Format             (VkFormat)
+import Graphics.Vulkan.Types.Enum.Image              (VkImageAspectFlagBits,
+                                                      VkImageAspectFlags,
+                                                      VkImageCreateFlags,
+                                                      VkImageLayout,
+                                                      VkImageTiling,
+                                                      VkImageType,
+                                                      VkImageUsageFlags,
+                                                      VkImageViewType)
+import Graphics.Vulkan.Types.Enum.SampleCountFlags   (VkSampleCountFlagBits,
+                                                      VkSampleCountFlags)
+import Graphics.Vulkan.Types.Enum.SharingMode        (VkSharingMode)
+import Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
+import Graphics.Vulkan.Types.Handles                 (VkImage, VkSwapchainKHR)
+import Graphics.Vulkan.Types.Struct.ComponentMapping (VkComponentMapping)
+import Graphics.Vulkan.Types.Struct.Extent           (VkExtent3D)
+import Graphics.Vulkan.Types.Struct.Offset           (VkOffset3D)
+
+-- | > typedef struct VkImageBlit {
+--   >     VkImageSubresourceLayers srcSubresource;
+--   >     VkOffset3D             srcOffsets[2];
+--   >     VkImageSubresourceLayers dstSubresource;
+--   >     VkOffset3D             dstOffsets[2];
+--   > } VkImageBlit;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageBlit VkImageBlit registry at www.khronos.org>
+type VkImageBlit = VkStruct VkImageBlit' -- ' closing tick for hsc2hs
+
+data VkImageBlit' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageBlit where
+    type StructRep VkImageBlit =
+         'StructMeta "VkImageBlit" VkImageBlit  -- ' closing tick for hsc2hs
+                                               #{size VkImageBlit}
+           #{alignment VkImageBlit}
+           '[('FieldMeta "srcSubresource" VkImageSubresourceLayers 'False -- ' closing tick for hsc2hs
+                #{offset VkImageBlit, srcSubresource}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcOffsets" VkOffset3D 'False 
+                                                        #{offset VkImageBlit, srcOffsets}
+                2
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstSubresource" VkImageSubresourceLayers 'False
+                #{offset VkImageBlit, dstSubresource}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstOffsets" VkOffset3D 'False 
+                                                        #{offset VkImageBlit, dstOffsets}
+                2
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageCopy {
+--   >     VkImageSubresourceLayers srcSubresource;
+--   >     VkOffset3D             srcOffset;
+--   >     VkImageSubresourceLayers dstSubresource;
+--   >     VkOffset3D             dstOffset;
+--   >     VkExtent3D             extent;
+--   > } VkImageCopy;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageCopy VkImageCopy registry at www.khronos.org>
+type VkImageCopy = VkStruct VkImageCopy' -- ' closing tick for hsc2hs
+
+data VkImageCopy' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageCopy where
+    type StructRep VkImageCopy =
+         'StructMeta "VkImageCopy" VkImageCopy  -- ' closing tick for hsc2hs
+                                               #{size VkImageCopy}
+           #{alignment VkImageCopy}
+           '[('FieldMeta "srcSubresource" VkImageSubresourceLayers 'False -- ' closing tick for hsc2hs
+                #{offset VkImageCopy, srcSubresource}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcOffset" VkOffset3D 'False 
+                                                       #{offset VkImageCopy, srcOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstSubresource" VkImageSubresourceLayers 'False
+                #{offset VkImageCopy, dstSubresource}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstOffset" VkOffset3D 'False 
+                                                       #{offset VkImageCopy, dstOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "extent" VkExtent3D 'False 
+                                                    #{offset VkImageCopy, extent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkImageCreateFlags     flags;
+--   >     VkImageType            imageType;
+--   >     VkFormat               format;
+--   >     VkExtent3D             extent;
+--   >     uint32_t               mipLevels;
+--   >     uint32_t               arrayLayers;
+--   >     VkSampleCountFlagBits  samples;
+--   >     VkImageTiling          tiling;
+--   >     VkImageUsageFlags      usage;
+--   >     VkSharingMode          sharingMode;
+--   >     uint32_t               queueFamilyIndexCount;
+--   >     const uint32_t*        pQueueFamilyIndices;
+--   >     VkImageLayout          initialLayout;
+--   > } VkImageCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageCreateInfo VkImageCreateInfo registry at www.khronos.org>
+type VkImageCreateInfo = VkStruct VkImageCreateInfo' -- ' closing tick for hsc2hs
+
+data VkImageCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageCreateInfo where
+    type StructRep VkImageCreateInfo =
+         'StructMeta "VkImageCreateInfo" VkImageCreateInfo  -- ' closing tick for hsc2hs
+                                                           #{size VkImageCreateInfo}
+           #{alignment VkImageCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkImageCreateFlags 'True 
+                                                          #{offset VkImageCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageType" VkImageType 'False 
+                                                        #{offset VkImageCreateInfo, imageType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkImageCreateInfo, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "extent" VkExtent3D 'False 
+                                                    #{offset VkImageCreateInfo, extent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mipLevels" Word32 'False 
+                                                   #{offset VkImageCreateInfo, mipLevels}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "arrayLayers" Word32 'False 
+                                                     #{offset VkImageCreateInfo, arrayLayers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "samples" VkSampleCountFlagBits 'False 
+                                                                #{offset VkImageCreateInfo, samples}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tiling" VkImageTiling 'False 
+                                                       #{offset VkImageCreateInfo, tiling}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "usage" VkImageUsageFlags 'False 
+                                                          #{offset VkImageCreateInfo, usage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sharingMode" VkSharingMode 'False 
+                                                            #{offset VkImageCreateInfo, sharingMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueFamilyIndexCount" Word32 'True 
+                                                              #{offset VkImageCreateInfo, queueFamilyIndexCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pQueueFamilyIndices" (Ptr Word32) 'False 
+                                                                   #{offset VkImageCreateInfo, pQueueFamilyIndices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "initialLayout" VkImageLayout 'False 
+                                                              #{offset VkImageCreateInfo, initialLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageFormatListCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     uint32_t               viewFormatCount;
+--   >     const VkFormat*      pViewFormats;
+--   > } VkImageFormatListCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageFormatListCreateInfoKHR VkImageFormatListCreateInfoKHR registry at www.khronos.org>
+type VkImageFormatListCreateInfoKHR =
+     VkStruct VkImageFormatListCreateInfoKHR' -- ' closing tick for hsc2hs
+
+data VkImageFormatListCreateInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageFormatListCreateInfoKHR where
+    type StructRep VkImageFormatListCreateInfoKHR =
+         'StructMeta "VkImageFormatListCreateInfoKHR" -- ' closing tick for hsc2hs
+           VkImageFormatListCreateInfoKHR
+           #{size VkImageFormatListCreateInfoKHR}
+           #{alignment VkImageFormatListCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageFormatListCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageFormatListCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "viewFormatCount" Word32 'True 
+                                                        #{offset VkImageFormatListCreateInfoKHR, viewFormatCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pViewFormats" (Ptr VkFormat) 'False 
+                                                              #{offset VkImageFormatListCreateInfoKHR, pViewFormats}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageFormatProperties {
+--   >     VkExtent3D             maxExtent;
+--   >     uint32_t               maxMipLevels;
+--   >     uint32_t               maxArrayLayers;
+--   >     VkSampleCountFlags     sampleCounts;
+--   >     VkDeviceSize           maxResourceSize;
+--   > } VkImageFormatProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageFormatProperties VkImageFormatProperties registry at www.khronos.org>
+type VkImageFormatProperties = VkStruct VkImageFormatProperties' -- ' closing tick for hsc2hs
+
+data VkImageFormatProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageFormatProperties where
+    type StructRep VkImageFormatProperties =
+         'StructMeta "VkImageFormatProperties" VkImageFormatProperties -- ' closing tick for hsc2hs
+           #{size VkImageFormatProperties}
+           #{alignment VkImageFormatProperties}
+           '[('FieldMeta "maxExtent" VkExtent3D 'False  -- ' closing tick for hsc2hs
+                                                       #{offset VkImageFormatProperties, maxExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxMipLevels" Word32 'False 
+                                                      #{offset VkImageFormatProperties, maxMipLevels}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxArrayLayers" Word32 'False 
+                                                        #{offset VkImageFormatProperties, maxArrayLayers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleCounts" VkSampleCountFlags 'True 
+                                                                 #{offset VkImageFormatProperties, sampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxResourceSize" VkDeviceSize 'False 
+                                                               #{offset VkImageFormatProperties, maxResourceSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageFormatProperties2 {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkImageFormatProperties          imageFormatProperties;
+--   > } VkImageFormatProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageFormatProperties2 VkImageFormatProperties2 registry at www.khronos.org>
+type VkImageFormatProperties2 = VkStruct VkImageFormatProperties2' -- ' closing tick for hsc2hs
+
+data VkImageFormatProperties2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageFormatProperties2 where
+    type StructRep VkImageFormatProperties2 =
+         'StructMeta "VkImageFormatProperties2" VkImageFormatProperties2 -- ' closing tick for hsc2hs
+           #{size VkImageFormatProperties2}
+           #{alignment VkImageFormatProperties2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageFormatProperties2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageFormatProperties2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageFormatProperties" VkImageFormatProperties 'False
+                #{offset VkImageFormatProperties2, imageFormatProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkImageFormatProperties2`
+type VkImageFormatProperties2KHR = VkImageFormatProperties2
+
+-- | > typedef struct VkImageMemoryBarrier {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkAccessFlags          srcAccessMask;
+--   >     VkAccessFlags          dstAccessMask;
+--   >     VkImageLayout          oldLayout;
+--   >     VkImageLayout          newLayout;
+--   >     uint32_t               srcQueueFamilyIndex;
+--   >     uint32_t               dstQueueFamilyIndex;
+--   >     VkImage                image;
+--   >     VkImageSubresourceRange subresourceRange;
+--   > } VkImageMemoryBarrier;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageMemoryBarrier VkImageMemoryBarrier registry at www.khronos.org>
+type VkImageMemoryBarrier = VkStruct VkImageMemoryBarrier' -- ' closing tick for hsc2hs
+
+data VkImageMemoryBarrier' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageMemoryBarrier where
+    type StructRep VkImageMemoryBarrier =
+         'StructMeta "VkImageMemoryBarrier" VkImageMemoryBarrier  -- ' closing tick for hsc2hs
+                                                                 #{size VkImageMemoryBarrier}
+           #{alignment VkImageMemoryBarrier}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageMemoryBarrier, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageMemoryBarrier, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcAccessMask" VkAccessFlags 'True 
+                                                             #{offset VkImageMemoryBarrier, srcAccessMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstAccessMask" VkAccessFlags 'True 
+                                                             #{offset VkImageMemoryBarrier, dstAccessMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "oldLayout" VkImageLayout 'False 
+                                                          #{offset VkImageMemoryBarrier, oldLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "newLayout" VkImageLayout 'False 
+                                                          #{offset VkImageMemoryBarrier, newLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcQueueFamilyIndex" Word32 'False 
+                                                             #{offset VkImageMemoryBarrier, srcQueueFamilyIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstQueueFamilyIndex" Word32 'False 
+                                                             #{offset VkImageMemoryBarrier, dstQueueFamilyIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "image" VkImage 'False 
+                                                #{offset VkImageMemoryBarrier, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subresourceRange" VkImageSubresourceRange 'False
+                #{offset VkImageMemoryBarrier, subresourceRange}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageMemoryRequirementsInfo2 {
+--   >     VkStructureType sType;
+--   >     const void*                                                          pNext;
+--   >     VkImage                                                              image;
+--   > } VkImageMemoryRequirementsInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2 registry at www.khronos.org>
+type VkImageMemoryRequirementsInfo2 =
+     VkStruct VkImageMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
+
+data VkImageMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageMemoryRequirementsInfo2 where
+    type StructRep VkImageMemoryRequirementsInfo2 =
+         'StructMeta "VkImageMemoryRequirementsInfo2" -- ' closing tick for hsc2hs
+           VkImageMemoryRequirementsInfo2
+           #{size VkImageMemoryRequirementsInfo2}
+           #{alignment VkImageMemoryRequirementsInfo2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageMemoryRequirementsInfo2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageMemoryRequirementsInfo2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "image" VkImage 'False 
+                                                #{offset VkImageMemoryRequirementsInfo2, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkImageMemoryRequirementsInfo2`
+type VkImageMemoryRequirementsInfo2KHR =
+     VkImageMemoryRequirementsInfo2
+
+-- | > typedef struct VkImagePlaneMemoryRequirementsInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkImageAspectFlagBits            planeAspect;
+--   > } VkImagePlaneMemoryRequirementsInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfo registry at www.khronos.org>
+type VkImagePlaneMemoryRequirementsInfo =
+     VkStruct VkImagePlaneMemoryRequirementsInfo' -- ' closing tick for hsc2hs
+
+data VkImagePlaneMemoryRequirementsInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImagePlaneMemoryRequirementsInfo where
+    type StructRep VkImagePlaneMemoryRequirementsInfo =
+         'StructMeta "VkImagePlaneMemoryRequirementsInfo" -- ' closing tick for hsc2hs
+           VkImagePlaneMemoryRequirementsInfo
+           #{size VkImagePlaneMemoryRequirementsInfo}
+           #{alignment VkImagePlaneMemoryRequirementsInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImagePlaneMemoryRequirementsInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImagePlaneMemoryRequirementsInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "planeAspect" VkImageAspectFlagBits 'False 
+                                                                    #{offset VkImagePlaneMemoryRequirementsInfo, planeAspect}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageMemoryRequirementsInfo2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkImagePlaneMemoryRequirementsInfo`
+type VkImagePlaneMemoryRequirementsInfoKHR =
+     VkImagePlaneMemoryRequirementsInfo
+
+-- | > typedef struct VkImageResolve {
+--   >     VkImageSubresourceLayers srcSubresource;
+--   >     VkOffset3D             srcOffset;
+--   >     VkImageSubresourceLayers dstSubresource;
+--   >     VkOffset3D             dstOffset;
+--   >     VkExtent3D             extent;
+--   > } VkImageResolve;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageResolve VkImageResolve registry at www.khronos.org>
+type VkImageResolve = VkStruct VkImageResolve' -- ' closing tick for hsc2hs
+
+data VkImageResolve' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageResolve where
+    type StructRep VkImageResolve =
+         'StructMeta "VkImageResolve" VkImageResolve  -- ' closing tick for hsc2hs
+                                                     #{size VkImageResolve}
+           #{alignment VkImageResolve}
+           '[('FieldMeta "srcSubresource" VkImageSubresourceLayers 'False -- ' closing tick for hsc2hs
+                #{offset VkImageResolve, srcSubresource}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcOffset" VkOffset3D 'False 
+                                                       #{offset VkImageResolve, srcOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstSubresource" VkImageSubresourceLayers 'False
+                #{offset VkImageResolve, dstSubresource}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstOffset" VkOffset3D 'False 
+                                                       #{offset VkImageResolve, dstOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "extent" VkExtent3D 'False 
+                                                    #{offset VkImageResolve, extent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageSparseMemoryRequirementsInfo2 {
+--   >     VkStructureType sType;
+--   >     const void*                                                          pNext;
+--   >     VkImage                                                              image;
+--   > } VkImageSparseMemoryRequirementsInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2 registry at www.khronos.org>
+type VkImageSparseMemoryRequirementsInfo2 =
+     VkStruct VkImageSparseMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
+
+data VkImageSparseMemoryRequirementsInfo2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageSparseMemoryRequirementsInfo2 where
+    type StructRep VkImageSparseMemoryRequirementsInfo2 =
+         'StructMeta "VkImageSparseMemoryRequirementsInfo2" -- ' closing tick for hsc2hs
+           VkImageSparseMemoryRequirementsInfo2
+           #{size VkImageSparseMemoryRequirementsInfo2}
+           #{alignment VkImageSparseMemoryRequirementsInfo2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageSparseMemoryRequirementsInfo2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageSparseMemoryRequirementsInfo2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "image" VkImage 'False 
+                                                #{offset VkImageSparseMemoryRequirementsInfo2, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkImageSparseMemoryRequirementsInfo2`
+type VkImageSparseMemoryRequirementsInfo2KHR =
+     VkImageSparseMemoryRequirementsInfo2
+
+-- | > typedef struct VkImageSubresource {
+--   >     VkImageAspectFlags     aspectMask;
+--   >     uint32_t               mipLevel;
+--   >     uint32_t               arrayLayer;
+--   > } VkImageSubresource;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresource VkImageSubresource registry at www.khronos.org>
+type VkImageSubresource = VkStruct VkImageSubresource' -- ' closing tick for hsc2hs
+
+data VkImageSubresource' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageSubresource where
+    type StructRep VkImageSubresource =
+         'StructMeta "VkImageSubresource" VkImageSubresource  -- ' closing tick for hsc2hs
+                                                             #{size VkImageSubresource}
+           #{alignment VkImageSubresource}
+           '[('FieldMeta "aspectMask" VkImageAspectFlags 'False  -- ' closing tick for hsc2hs
+                                                                #{offset VkImageSubresource, aspectMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mipLevel" Word32 'False 
+                                                  #{offset VkImageSubresource, mipLevel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "arrayLayer" Word32 'False 
+                                                    #{offset VkImageSubresource, arrayLayer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageSubresourceLayers {
+--   >     VkImageAspectFlags     aspectMask;
+--   >     uint32_t               mipLevel;
+--   >     uint32_t               baseArrayLayer;
+--   >     uint32_t               layerCount;
+--   > } VkImageSubresourceLayers;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresourceLayers VkImageSubresourceLayers registry at www.khronos.org>
+type VkImageSubresourceLayers = VkStruct VkImageSubresourceLayers' -- ' closing tick for hsc2hs
+
+data VkImageSubresourceLayers' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageSubresourceLayers where
+    type StructRep VkImageSubresourceLayers =
+         'StructMeta "VkImageSubresourceLayers" VkImageSubresourceLayers -- ' closing tick for hsc2hs
+           #{size VkImageSubresourceLayers}
+           #{alignment VkImageSubresourceLayers}
+           '[('FieldMeta "aspectMask" VkImageAspectFlags 'False  -- ' closing tick for hsc2hs
+                                                                #{offset VkImageSubresourceLayers, aspectMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mipLevel" Word32 'False 
+                                                  #{offset VkImageSubresourceLayers, mipLevel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "baseArrayLayer" Word32 'False 
+                                                        #{offset VkImageSubresourceLayers, baseArrayLayer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "layerCount" Word32 'False 
+                                                    #{offset VkImageSubresourceLayers, layerCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageSubresourceRange {
+--   >     VkImageAspectFlags     aspectMask;
+--   >     uint32_t               baseMipLevel;
+--   >     uint32_t               levelCount;
+--   >     uint32_t               baseArrayLayer;
+--   >     uint32_t               layerCount;
+--   > } VkImageSubresourceRange;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSubresourceRange VkImageSubresourceRange registry at www.khronos.org>
+type VkImageSubresourceRange = VkStruct VkImageSubresourceRange' -- ' closing tick for hsc2hs
+
+data VkImageSubresourceRange' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageSubresourceRange where
+    type StructRep VkImageSubresourceRange =
+         'StructMeta "VkImageSubresourceRange" VkImageSubresourceRange -- ' closing tick for hsc2hs
+           #{size VkImageSubresourceRange}
+           #{alignment VkImageSubresourceRange}
+           '[('FieldMeta "aspectMask" VkImageAspectFlags 'False  -- ' closing tick for hsc2hs
+                                                                #{offset VkImageSubresourceRange, aspectMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "baseMipLevel" Word32 'False 
+                                                      #{offset VkImageSubresourceRange, baseMipLevel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "levelCount" Word32 'False 
+                                                    #{offset VkImageSubresourceRange, levelCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "baseArrayLayer" Word32 'False 
+                                                        #{offset VkImageSubresourceRange, baseArrayLayer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "layerCount" Word32 'False 
+                                                    #{offset VkImageSubresourceRange, layerCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageSwapchainCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSwapchainKHR   swapchain;
+--   > } VkImageSwapchainCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageSwapchainCreateInfoKHR VkImageSwapchainCreateInfoKHR registry at www.khronos.org>
+type VkImageSwapchainCreateInfoKHR =
+     VkStruct VkImageSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
+
+data VkImageSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageSwapchainCreateInfoKHR where
+    type StructRep VkImageSwapchainCreateInfoKHR =
+         'StructMeta "VkImageSwapchainCreateInfoKHR" -- ' closing tick for hsc2hs
+           VkImageSwapchainCreateInfoKHR
+           #{size VkImageSwapchainCreateInfoKHR}
+           #{alignment VkImageSwapchainCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageSwapchainCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageSwapchainCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "swapchain" VkSwapchainKHR 'True 
+                                                          #{offset VkImageSwapchainCreateInfoKHR, swapchain}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageViewCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkImageViewCreateFlags flags;
+--   >     VkImage                image;
+--   >     VkImageViewType        viewType;
+--   >     VkFormat               format;
+--   >     VkComponentMapping     components;
+--   >     VkImageSubresourceRange subresourceRange;
+--   > } VkImageViewCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageViewCreateInfo VkImageViewCreateInfo registry at www.khronos.org>
+type VkImageViewCreateInfo = VkStruct VkImageViewCreateInfo' -- ' closing tick for hsc2hs
+
+data VkImageViewCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageViewCreateInfo where
+    type StructRep VkImageViewCreateInfo =
+         'StructMeta "VkImageViewCreateInfo" VkImageViewCreateInfo  -- ' closing tick for hsc2hs
+                                                                   #{size VkImageViewCreateInfo}
+           #{alignment VkImageViewCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageViewCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageViewCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkImageViewCreateFlags 'True 
+                                                              #{offset VkImageViewCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "image" VkImage 'False 
+                                                #{offset VkImageViewCreateInfo, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "viewType" VkImageViewType 'False 
+                                                           #{offset VkImageViewCreateInfo, viewType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkImageViewCreateInfo, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "components" VkComponentMapping 'False 
+                                                                #{offset VkImageViewCreateInfo, components}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subresourceRange" VkImageSubresourceRange 'False
+                #{offset VkImageViewCreateInfo, subresourceRange}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImageViewUsageCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void* pNext;
+--   >     VkImageUsageFlags usage;
+--   > } VkImageViewUsageCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImageViewUsageCreateInfo VkImageViewUsageCreateInfo registry at www.khronos.org>
+type VkImageViewUsageCreateInfo =
+     VkStruct VkImageViewUsageCreateInfo' -- ' closing tick for hsc2hs
+
+data VkImageViewUsageCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImageViewUsageCreateInfo where
+    type StructRep VkImageViewUsageCreateInfo =
+         'StructMeta "VkImageViewUsageCreateInfo" VkImageViewUsageCreateInfo -- ' closing tick for hsc2hs
+           #{size VkImageViewUsageCreateInfo}
+           #{alignment VkImageViewUsageCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImageViewUsageCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImageViewUsageCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "usage" VkImageUsageFlags 'False 
+                                                          #{offset VkImageViewUsageCreateInfo, usage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageViewCreateInfo] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkImageViewUsageCreateInfo`
 type VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Import.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Import.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Import.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Import.hsc
@@ -2,19 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Import
-       (VkImportFenceFdInfoKHR, VkImportFenceFdInfoKHR', -- ' closing tick for hsc2hs
-        VkImportMemoryFdInfoKHR, VkImportMemoryFdInfoKHR', -- ' closing tick for hsc2hs
-        VkImportMemoryHostPointerInfoEXT,
-        VkImportMemoryHostPointerInfoEXT', VkImportSemaphoreFdInfoKHR, -- ' closing tick for hsc2hs
-        VkImportSemaphoreFdInfoKHR') -- ' closing tick for hsc2hs
+       (VkImportFenceFdInfoKHR, VkImportMemoryFdInfoKHR,
+        VkImportMemoryHostPointerInfoEXT, VkImportSemaphoreFdInfoKHR)
        where
-import Foreign.Storable                               (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.External            (VkExternalFenceHandleTypeFlagBits,
@@ -25,7 +19,6 @@
 import Graphics.Vulkan.Types.Enum.StructureType       (VkStructureType)
 import Graphics.Vulkan.Types.Handles                  (VkFence, VkSemaphore)
 import Graphics.Vulkan.Types.Struct.Memory            (VkMemoryAllocateInfo)
-import System.IO.Unsafe                               (unsafeDupablePerformIO)
 
 -- | > typedef struct VkImportFenceFdInfoKHR {
 --   >     VkStructureType sType;
@@ -37,249 +30,48 @@
 --   > } VkImportFenceFdInfoKHR;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportFenceFdInfoKHR VkImportFenceFdInfoKHR registry at www.khronos.org>
-type VkImportFenceFdInfoKHR = VulkanStruct VkImportFenceFdInfoKHR' -- ' closing tick for hsc2hs
+type VkImportFenceFdInfoKHR = VkStruct VkImportFenceFdInfoKHR' -- ' closing tick for hsc2hs
 
 data VkImportFenceFdInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkImportFenceFdInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportFenceFdInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportFenceFdInfoKHR where
-        sizeOf ~_ = #{size VkImportFenceFdInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImportFenceFdInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkImportFenceFdInfoKHR where
-        type StructFields VkImportFenceFdInfoKHR =
-             '["sType", "pNext", "fence", "flags", "handleType", "fd"] -- ' closing tick for hsc2hs
-        type CUnionType VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportFenceFdInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportFenceFdInfoKHR where
-        type FieldType "sType" VkImportFenceFdInfoKHR = VkStructureType
-        type FieldOptional "sType" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportFenceFdInfoKHR =
-             #{offset VkImportFenceFdInfoKHR, sType}
-        type FieldIsArray "sType" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportFenceFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportFenceFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportFenceFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportFenceFdInfoKHR where
-        type FieldType "pNext" VkImportFenceFdInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportFenceFdInfoKHR =
-             #{offset VkImportFenceFdInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportFenceFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportFenceFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportFenceFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "fence" VkImportFenceFdInfoKHR where
-        type FieldType "fence" VkImportFenceFdInfoKHR = VkFence
-        type FieldOptional "fence" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fence" VkImportFenceFdInfoKHR =
-             #{offset VkImportFenceFdInfoKHR, fence}
-        type FieldIsArray "fence" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportFenceFdInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fence" VkImportFenceFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, fence})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fence" VkImportFenceFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkImportFenceFdInfoKHR where
-        type FieldType "flags" VkImportFenceFdInfoKHR = VkFenceImportFlags
-        type FieldOptional "flags" VkImportFenceFdInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkImportFenceFdInfoKHR =
-             #{offset VkImportFenceFdInfoKHR, flags}
-        type FieldIsArray "flags" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportFenceFdInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkImportFenceFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkImportFenceFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkImportFenceFdInfoKHR where
-        type FieldType "handleType" VkImportFenceFdInfoKHR =
-             VkExternalFenceHandleTypeFlagBits
-        type FieldOptional "handleType" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkImportFenceFdInfoKHR =
-             #{offset VkImportFenceFdInfoKHR, handleType}
-        type FieldIsArray "handleType" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportFenceFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkImportFenceFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkImportFenceFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-} HasField "fd" VkImportFenceFdInfoKHR
-         where
-        type FieldType "fd" VkImportFenceFdInfoKHR = CInt
-        type FieldOptional "fd" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fd" VkImportFenceFdInfoKHR =
-             #{offset VkImportFenceFdInfoKHR, fd}
-        type FieldIsArray "fd" VkImportFenceFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportFenceFdInfoKHR, fd}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fd" VkImportFenceFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceFdInfoKHR, fd})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceFdInfoKHR, fd}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fd" VkImportFenceFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceFdInfoKHR, fd}
-
-instance Show VkImportFenceFdInfoKHR where
-        showsPrec d x
-          = showString "VkImportFenceFdInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "fence = " .
-                            showsPrec d (getField @"fence" x) .
-                              showString ", " .
-                                showString "flags = " .
-                                  showsPrec d (getField @"flags" x) .
-                                    showString ", " .
-                                      showString "handleType = " .
-                                        showsPrec d (getField @"handleType" x) .
-                                          showString ", " .
-                                            showString "fd = " .
-                                              showsPrec d (getField @"fd" x) . showChar '}'
+    type StructRep VkImportFenceFdInfoKHR =
+         'StructMeta "VkImportFenceFdInfoKHR" VkImportFenceFdInfoKHR -- ' closing tick for hsc2hs
+           #{size VkImportFenceFdInfoKHR}
+           #{alignment VkImportFenceFdInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportFenceFdInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportFenceFdInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fence" VkFence 'False 
+                                                #{offset VkImportFenceFdInfoKHR, fence}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkFenceImportFlags 'True 
+                                                          #{offset VkImportFenceFdInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalFenceHandleTypeFlagBits 'False
+                #{offset VkImportFenceFdInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fd" CInt 'False 
+                                          #{offset VkImportFenceFdInfoKHR, fd}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkImportMemoryFdInfoKHR {
 --   >     VkStructureType sType;
@@ -289,182 +81,38 @@
 --   > } VkImportMemoryFdInfoKHR;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportMemoryFdInfoKHR VkImportMemoryFdInfoKHR registry at www.khronos.org>
-type VkImportMemoryFdInfoKHR =
-     VulkanStruct VkImportMemoryFdInfoKHR' -- ' closing tick for hsc2hs
+type VkImportMemoryFdInfoKHR = VkStruct VkImportMemoryFdInfoKHR' -- ' closing tick for hsc2hs
 
 data VkImportMemoryFdInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkImportMemoryFdInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportMemoryFdInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportMemoryFdInfoKHR where
-        sizeOf ~_ = #{size VkImportMemoryFdInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImportMemoryFdInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkImportMemoryFdInfoKHR where
-        type StructFields VkImportMemoryFdInfoKHR =
-             '["sType", "pNext", "handleType", "fd"] -- ' closing tick for hsc2hs
-        type CUnionType VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportMemoryFdInfoKHR =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportMemoryFdInfoKHR where
-        type FieldType "sType" VkImportMemoryFdInfoKHR = VkStructureType
-        type FieldOptional "sType" VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportMemoryFdInfoKHR =
-             #{offset VkImportMemoryFdInfoKHR, sType}
-        type FieldIsArray "sType" VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportMemoryFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportMemoryFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportMemoryFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportMemoryFdInfoKHR where
-        type FieldType "pNext" VkImportMemoryFdInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportMemoryFdInfoKHR =
-             #{offset VkImportMemoryFdInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportMemoryFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportMemoryFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportMemoryFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkImportMemoryFdInfoKHR where
-        type FieldType "handleType" VkImportMemoryFdInfoKHR =
-             VkExternalMemoryHandleTypeFlagBits
-        type FieldOptional "handleType" VkImportMemoryFdInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkImportMemoryFdInfoKHR =
-             #{offset VkImportMemoryFdInfoKHR, handleType}
-        type FieldIsArray "handleType" VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkImportMemoryFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkImportMemoryFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-} HasField "fd" VkImportMemoryFdInfoKHR
-         where
-        type FieldType "fd" VkImportMemoryFdInfoKHR = CInt
-        type FieldOptional "fd" VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fd" VkImportMemoryFdInfoKHR =
-             #{offset VkImportMemoryFdInfoKHR, fd}
-        type FieldIsArray "fd" VkImportMemoryFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportMemoryFdInfoKHR, fd}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fd" VkImportMemoryFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryFdInfoKHR, fd})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryFdInfoKHR, fd}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fd" VkImportMemoryFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryFdInfoKHR, fd}
-
-instance Show VkImportMemoryFdInfoKHR where
-        showsPrec d x
-          = showString "VkImportMemoryFdInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleType = " .
-                            showsPrec d (getField @"handleType" x) .
-                              showString ", " .
-                                showString "fd = " . showsPrec d (getField @"fd" x) . showChar '}'
+    type StructRep VkImportMemoryFdInfoKHR =
+         'StructMeta "VkImportMemoryFdInfoKHR" VkImportMemoryFdInfoKHR -- ' closing tick for hsc2hs
+           #{size VkImportMemoryFdInfoKHR}
+           #{alignment VkImportMemoryFdInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportMemoryFdInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportMemoryFdInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagBits 'True
+                #{offset VkImportMemoryFdInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fd" CInt 'False 
+                                          #{offset VkImportMemoryFdInfoKHR, fd}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkImportMemoryHostPointerInfoEXT {
 --   >     VkStructureType sType;
@@ -475,194 +123,39 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportMemoryHostPointerInfoEXT VkImportMemoryHostPointerInfoEXT registry at www.khronos.org>
 type VkImportMemoryHostPointerInfoEXT =
-     VulkanStruct VkImportMemoryHostPointerInfoEXT' -- ' closing tick for hsc2hs
+     VkStruct VkImportMemoryHostPointerInfoEXT' -- ' closing tick for hsc2hs
 
 data VkImportMemoryHostPointerInfoEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkImportMemoryHostPointerInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportMemoryHostPointerInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportMemoryHostPointerInfoEXT where
-        sizeOf ~_ = #{size VkImportMemoryHostPointerInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImportMemoryHostPointerInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkImportMemoryHostPointerInfoEXT where
-        type StructFields VkImportMemoryHostPointerInfoEXT =
-             '["sType", "pNext", "handleType", "pHostPointer"] -- ' closing tick for hsc2hs
-        type CUnionType VkImportMemoryHostPointerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportMemoryHostPointerInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportMemoryHostPointerInfoEXT =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportMemoryHostPointerInfoEXT where
-        type FieldType "sType" VkImportMemoryHostPointerInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkImportMemoryHostPointerInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportMemoryHostPointerInfoEXT =
-             #{offset VkImportMemoryHostPointerInfoEXT, sType}
-        type FieldIsArray "sType" VkImportMemoryHostPointerInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryHostPointerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportMemoryHostPointerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportMemoryHostPointerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportMemoryHostPointerInfoEXT where
-        type FieldType "pNext" VkImportMemoryHostPointerInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkImportMemoryHostPointerInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportMemoryHostPointerInfoEXT =
-             #{offset VkImportMemoryHostPointerInfoEXT, pNext}
-        type FieldIsArray "pNext" VkImportMemoryHostPointerInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryHostPointerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportMemoryHostPointerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportMemoryHostPointerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkImportMemoryHostPointerInfoEXT where
-        type FieldType "handleType" VkImportMemoryHostPointerInfoEXT =
-             VkExternalMemoryHandleTypeFlagBits
-        type FieldOptional "handleType" VkImportMemoryHostPointerInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkImportMemoryHostPointerInfoEXT =
-             #{offset VkImportMemoryHostPointerInfoEXT, handleType}
-        type FieldIsArray "handleType" VkImportMemoryHostPointerInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryHostPointerInfoEXT, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkImportMemoryHostPointerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkImportMemoryHostPointerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pHostPointer" VkImportMemoryHostPointerInfoEXT where
-        type FieldType "pHostPointer" VkImportMemoryHostPointerInfoEXT =
-             Ptr Void
-        type FieldOptional "pHostPointer" VkImportMemoryHostPointerInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pHostPointer" VkImportMemoryHostPointerInfoEXT =
-             #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
-        type FieldIsArray "pHostPointer" VkImportMemoryHostPointerInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pHostPointer" VkImportMemoryHostPointerInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pHostPointer" VkImportMemoryHostPointerInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
-
-instance Show VkImportMemoryHostPointerInfoEXT where
-        showsPrec d x
-          = showString "VkImportMemoryHostPointerInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleType = " .
-                            showsPrec d (getField @"handleType" x) .
-                              showString ", " .
-                                showString "pHostPointer = " .
-                                  showsPrec d (getField @"pHostPointer" x) . showChar '}'
+    type StructRep VkImportMemoryHostPointerInfoEXT =
+         'StructMeta "VkImportMemoryHostPointerInfoEXT" -- ' closing tick for hsc2hs
+           VkImportMemoryHostPointerInfoEXT
+           #{size VkImportMemoryHostPointerInfoEXT}
+           #{alignment VkImportMemoryHostPointerInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportMemoryHostPointerInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportMemoryHostPointerInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagBits 'False
+                #{offset VkImportMemoryHostPointerInfoEXT, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pHostPointer" (Ptr Void) 'False 
+                                                          #{offset VkImportMemoryHostPointerInfoEXT, pHostPointer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkImportSemaphoreFdInfoKHR {
 --   >     VkStructureType sType;
@@ -675,251 +168,46 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportSemaphoreFdInfoKHR VkImportSemaphoreFdInfoKHR registry at www.khronos.org>
 type VkImportSemaphoreFdInfoKHR =
-     VulkanStruct VkImportSemaphoreFdInfoKHR' -- ' closing tick for hsc2hs
+     VkStruct VkImportSemaphoreFdInfoKHR' -- ' closing tick for hsc2hs
 
 data VkImportSemaphoreFdInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkImportSemaphoreFdInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportSemaphoreFdInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportSemaphoreFdInfoKHR where
-        sizeOf ~_ = #{size VkImportSemaphoreFdInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkImportSemaphoreFdInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkImportSemaphoreFdInfoKHR where
-        type StructFields VkImportSemaphoreFdInfoKHR =
-             '["sType", "pNext", "semaphore", "flags", "handleType", "fd"] -- ' closing tick for hsc2hs
-        type CUnionType VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportSemaphoreFdInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportSemaphoreFdInfoKHR where
-        type FieldType "sType" VkImportSemaphoreFdInfoKHR = VkStructureType
-        type FieldOptional "sType" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportSemaphoreFdInfoKHR =
-             #{offset VkImportSemaphoreFdInfoKHR, sType}
-        type FieldIsArray "sType" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportSemaphoreFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportSemaphoreFdInfoKHR where
-        type FieldType "pNext" VkImportSemaphoreFdInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportSemaphoreFdInfoKHR =
-             #{offset VkImportSemaphoreFdInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportSemaphoreFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "semaphore" VkImportSemaphoreFdInfoKHR where
-        type FieldType "semaphore" VkImportSemaphoreFdInfoKHR = VkSemaphore
-        type FieldOptional "semaphore" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "semaphore" VkImportSemaphoreFdInfoKHR =
-             #{offset VkImportSemaphoreFdInfoKHR, semaphore}
-        type FieldIsArray "semaphore" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreFdInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "semaphore" VkImportSemaphoreFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, semaphore})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "semaphore" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkImportSemaphoreFdInfoKHR where
-        type FieldType "flags" VkImportSemaphoreFdInfoKHR =
-             VkSemaphoreImportFlags
-        type FieldOptional "flags" VkImportSemaphoreFdInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkImportSemaphoreFdInfoKHR =
-             #{offset VkImportSemaphoreFdInfoKHR, flags}
-        type FieldIsArray "flags" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreFdInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkImportSemaphoreFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkImportSemaphoreFdInfoKHR where
-        type FieldType "handleType" VkImportSemaphoreFdInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBits
-        type FieldOptional "handleType" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkImportSemaphoreFdInfoKHR =
-             #{offset VkImportSemaphoreFdInfoKHR, handleType}
-        type FieldIsArray "handleType" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkImportSemaphoreFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "fd" VkImportSemaphoreFdInfoKHR where
-        type FieldType "fd" VkImportSemaphoreFdInfoKHR = CInt
-        type FieldOptional "fd" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fd" VkImportSemaphoreFdInfoKHR =
-             #{offset VkImportSemaphoreFdInfoKHR, fd}
-        type FieldIsArray "fd" VkImportSemaphoreFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkImportSemaphoreFdInfoKHR, fd}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fd" VkImportSemaphoreFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreFdInfoKHR, fd})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreFdInfoKHR, fd}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fd" VkImportSemaphoreFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreFdInfoKHR, fd}
-
-instance Show VkImportSemaphoreFdInfoKHR where
-        showsPrec d x
-          = showString "VkImportSemaphoreFdInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "semaphore = " .
-                            showsPrec d (getField @"semaphore" x) .
-                              showString ", " .
-                                showString "flags = " .
-                                  showsPrec d (getField @"flags" x) .
-                                    showString ", " .
-                                      showString "handleType = " .
-                                        showsPrec d (getField @"handleType" x) .
-                                          showString ", " .
-                                            showString "fd = " .
-                                              showsPrec d (getField @"fd" x) . showChar '}'
+    type StructRep VkImportSemaphoreFdInfoKHR =
+         'StructMeta "VkImportSemaphoreFdInfoKHR" VkImportSemaphoreFdInfoKHR -- ' closing tick for hsc2hs
+           #{size VkImportSemaphoreFdInfoKHR}
+           #{alignment VkImportSemaphoreFdInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportSemaphoreFdInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportSemaphoreFdInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "semaphore" VkSemaphore 'False 
+                                                        #{offset VkImportSemaphoreFdInfoKHR, semaphore}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkSemaphoreImportFlags 'True 
+                                                              #{offset VkImportSemaphoreFdInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalSemaphoreHandleTypeFlagBits -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkImportSemaphoreFdInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fd" CInt 'False 
+                                          #{offset VkImportSemaphoreFdInfoKHR, fd}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/IndirectCommands.hsc b/src-gen/Graphics/Vulkan/Types/Struct/IndirectCommands.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/IndirectCommands.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/IndirectCommands.hsc
@@ -2,19 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.IndirectCommands
        (VkIndirectCommandsLayoutCreateInfoNVX,
-        VkIndirectCommandsLayoutCreateInfoNVX', -- ' closing tick for hsc2hs
-        VkIndirectCommandsLayoutTokenNVX,
-        VkIndirectCommandsLayoutTokenNVX', VkIndirectCommandsTokenNVX, -- ' closing tick for hsc2hs
-        VkIndirectCommandsTokenNVX') -- ' closing tick for hsc2hs
+        VkIndirectCommandsLayoutTokenNVX, VkIndirectCommandsTokenNVX)
        where
-import Foreign.Storable                            (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.BaseTypes             (VkDeviceSize)
@@ -23,7 +17,6 @@
 import Graphics.Vulkan.Types.Enum.Pipeline         (VkPipelineBindPoint)
 import Graphics.Vulkan.Types.Enum.StructureType    (VkStructureType)
 import Graphics.Vulkan.Types.Handles               (VkBuffer)
-import System.IO.Unsafe                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkIndirectCommandsLayoutCreateInfoNVX {
 --   >     VkStructureType sType;
@@ -36,289 +29,49 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkIndirectCommandsLayoutCreateInfoNVX VkIndirectCommandsLayoutCreateInfoNVX registry at www.khronos.org>
 type VkIndirectCommandsLayoutCreateInfoNVX =
-     VulkanStruct VkIndirectCommandsLayoutCreateInfoNVX' -- ' closing tick for hsc2hs
+     VkStruct VkIndirectCommandsLayoutCreateInfoNVX' -- ' closing tick for hsc2hs
 
 data VkIndirectCommandsLayoutCreateInfoNVX' -- ' closing tick for hsc2hs
 
-instance Eq VkIndirectCommandsLayoutCreateInfoNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkIndirectCommandsLayoutCreateInfoNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkIndirectCommandsLayoutCreateInfoNVX where
-        sizeOf ~_
-          = #{size VkIndirectCommandsLayoutCreateInfoNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkIndirectCommandsLayoutCreateInfoNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkIndirectCommandsLayoutCreateInfoNVX where
-        type StructFields VkIndirectCommandsLayoutCreateInfoNVX =
-             '["sType", "pNext", "pipelineBindPoint", "flags", "tokenCount", -- ' closing tick for hsc2hs
-               "pTokens"]
-        type CUnionType VkIndirectCommandsLayoutCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkIndirectCommandsLayoutCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkIndirectCommandsLayoutCreateInfoNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkIndirectCommandsLayoutCreateInfoNVX where
-        type FieldType "sType" VkIndirectCommandsLayoutCreateInfoNVX =
-             VkStructureType
-        type FieldOptional "sType" VkIndirectCommandsLayoutCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkIndirectCommandsLayoutCreateInfoNVX =
-             #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
-        type FieldIsArray "sType" VkIndirectCommandsLayoutCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkIndirectCommandsLayoutCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkIndirectCommandsLayoutCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkIndirectCommandsLayoutCreateInfoNVX where
-        type FieldType "pNext" VkIndirectCommandsLayoutCreateInfoNVX =
-             Ptr Void
-        type FieldOptional "pNext" VkIndirectCommandsLayoutCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkIndirectCommandsLayoutCreateInfoNVX =
-             #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
-        type FieldIsArray "pNext" VkIndirectCommandsLayoutCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkIndirectCommandsLayoutCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkIndirectCommandsLayoutCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineBindPoint" VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        type FieldType "pipelineBindPoint"
-               VkIndirectCommandsLayoutCreateInfoNVX
-             = VkPipelineBindPoint
-        type FieldOptional "pipelineBindPoint"
-               VkIndirectCommandsLayoutCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineBindPoint"
-               VkIndirectCommandsLayoutCreateInfoNVX
-             =
-             #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
-        type FieldIsArray "pipelineBindPoint"
-               VkIndirectCommandsLayoutCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineBindPoint"
-           VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineBindPoint"
+    type StructRep VkIndirectCommandsLayoutCreateInfoNVX =
+         'StructMeta "VkIndirectCommandsLayoutCreateInfoNVX" -- ' closing tick for hsc2hs
            VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkIndirectCommandsLayoutCreateInfoNVX where
-        type FieldType "flags" VkIndirectCommandsLayoutCreateInfoNVX =
-             VkIndirectCommandsLayoutUsageFlagsNVX
-        type FieldOptional "flags" VkIndirectCommandsLayoutCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkIndirectCommandsLayoutCreateInfoNVX =
-             #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
-        type FieldIsArray "flags" VkIndirectCommandsLayoutCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkIndirectCommandsLayoutCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkIndirectCommandsLayoutCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "tokenCount" VkIndirectCommandsLayoutCreateInfoNVX where
-        type FieldType "tokenCount" VkIndirectCommandsLayoutCreateInfoNVX =
-             Word32
-        type FieldOptional "tokenCount"
-               VkIndirectCommandsLayoutCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tokenCount" VkIndirectCommandsLayoutCreateInfoNVX
-             =
-             #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
-        type FieldIsArray "tokenCount"
-               VkIndirectCommandsLayoutCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tokenCount" VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tokenCount" VkIndirectCommandsLayoutCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pTokens" VkIndirectCommandsLayoutCreateInfoNVX where
-        type FieldType "pTokens" VkIndirectCommandsLayoutCreateInfoNVX =
-             Ptr VkIndirectCommandsLayoutTokenNVX
-        type FieldOptional "pTokens" VkIndirectCommandsLayoutCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pTokens" VkIndirectCommandsLayoutCreateInfoNVX =
-             #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
-        type FieldIsArray "pTokens" VkIndirectCommandsLayoutCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pTokens" VkIndirectCommandsLayoutCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pTokens" VkIndirectCommandsLayoutCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
-
-instance Show VkIndirectCommandsLayoutCreateInfoNVX where
-        showsPrec d x
-          = showString "VkIndirectCommandsLayoutCreateInfoNVX {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pipelineBindPoint = " .
-                            showsPrec d (getField @"pipelineBindPoint" x) .
-                              showString ", " .
-                                showString "flags = " .
-                                  showsPrec d (getField @"flags" x) .
-                                    showString ", " .
-                                      showString "tokenCount = " .
-                                        showsPrec d (getField @"tokenCount" x) .
-                                          showString ", " .
-                                            showString "pTokens = " .
-                                              showsPrec d (getField @"pTokens" x) . showChar '}'
+           #{size VkIndirectCommandsLayoutCreateInfoNVX}
+           #{alignment VkIndirectCommandsLayoutCreateInfoNVX}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkIndirectCommandsLayoutCreateInfoNVX, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkIndirectCommandsLayoutCreateInfoNVX, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineBindPoint" VkPipelineBindPoint 'False
+                #{offset VkIndirectCommandsLayoutCreateInfoNVX, pipelineBindPoint}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkIndirectCommandsLayoutUsageFlagsNVX 'False
+                #{offset VkIndirectCommandsLayoutCreateInfoNVX, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tokenCount" Word32 'False 
+                                                    #{offset VkIndirectCommandsLayoutCreateInfoNVX, tokenCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pTokens" (Ptr VkIndirectCommandsLayoutTokenNVX) 'False
+                #{offset VkIndirectCommandsLayoutCreateInfoNVX, pTokens}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkIndirectCommandsLayoutTokenNVX {
 --   >     VkIndirectCommandsTokenTypeNVX      tokenType;
@@ -329,195 +82,39 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkIndirectCommandsLayoutTokenNVX VkIndirectCommandsLayoutTokenNVX registry at www.khronos.org>
 type VkIndirectCommandsLayoutTokenNVX =
-     VulkanStruct VkIndirectCommandsLayoutTokenNVX' -- ' closing tick for hsc2hs
+     VkStruct VkIndirectCommandsLayoutTokenNVX' -- ' closing tick for hsc2hs
 
 data VkIndirectCommandsLayoutTokenNVX' -- ' closing tick for hsc2hs
 
-instance Eq VkIndirectCommandsLayoutTokenNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkIndirectCommandsLayoutTokenNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkIndirectCommandsLayoutTokenNVX where
-        sizeOf ~_ = #{size VkIndirectCommandsLayoutTokenNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkIndirectCommandsLayoutTokenNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkIndirectCommandsLayoutTokenNVX where
-        type StructFields VkIndirectCommandsLayoutTokenNVX =
-             '["tokenType", "bindingUnit", "dynamicCount", "divisor"] -- ' closing tick for hsc2hs
-        type CUnionType VkIndirectCommandsLayoutTokenNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkIndirectCommandsLayoutTokenNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkIndirectCommandsLayoutTokenNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "tokenType" VkIndirectCommandsLayoutTokenNVX where
-        type FieldType "tokenType" VkIndirectCommandsLayoutTokenNVX =
-             VkIndirectCommandsTokenTypeNVX
-        type FieldOptional "tokenType" VkIndirectCommandsLayoutTokenNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "tokenType" VkIndirectCommandsLayoutTokenNVX =
-             #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
-        type FieldIsArray "tokenType" VkIndirectCommandsLayoutTokenNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tokenType" VkIndirectCommandsLayoutTokenNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, tokenType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tokenType" VkIndirectCommandsLayoutTokenNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
-
-instance {-# OVERLAPPING #-}
-         HasField "bindingUnit" VkIndirectCommandsLayoutTokenNVX where
-        type FieldType "bindingUnit" VkIndirectCommandsLayoutTokenNVX =
-             Word32
-        type FieldOptional "bindingUnit" VkIndirectCommandsLayoutTokenNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "bindingUnit" VkIndirectCommandsLayoutTokenNVX =
-             #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
-        type FieldIsArray "bindingUnit" VkIndirectCommandsLayoutTokenNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bindingUnit" VkIndirectCommandsLayoutTokenNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bindingUnit" VkIndirectCommandsLayoutTokenNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
-
-instance {-# OVERLAPPING #-}
-         HasField "dynamicCount" VkIndirectCommandsLayoutTokenNVX where
-        type FieldType "dynamicCount" VkIndirectCommandsLayoutTokenNVX =
-             Word32
-        type FieldOptional "dynamicCount" VkIndirectCommandsLayoutTokenNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dynamicCount" VkIndirectCommandsLayoutTokenNVX =
-             #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
-        type FieldIsArray "dynamicCount" VkIndirectCommandsLayoutTokenNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dynamicCount" VkIndirectCommandsLayoutTokenNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dynamicCount" VkIndirectCommandsLayoutTokenNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "divisor" VkIndirectCommandsLayoutTokenNVX where
-        type FieldType "divisor" VkIndirectCommandsLayoutTokenNVX = Word32
-        type FieldOptional "divisor" VkIndirectCommandsLayoutTokenNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "divisor" VkIndirectCommandsLayoutTokenNVX =
-             #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
-        type FieldIsArray "divisor" VkIndirectCommandsLayoutTokenNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "divisor" VkIndirectCommandsLayoutTokenNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsLayoutTokenNVX, divisor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "divisor" VkIndirectCommandsLayoutTokenNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
-
-instance Show VkIndirectCommandsLayoutTokenNVX where
-        showsPrec d x
-          = showString "VkIndirectCommandsLayoutTokenNVX {" .
-              showString "tokenType = " .
-                showsPrec d (getField @"tokenType" x) .
-                  showString ", " .
-                    showString "bindingUnit = " .
-                      showsPrec d (getField @"bindingUnit" x) .
-                        showString ", " .
-                          showString "dynamicCount = " .
-                            showsPrec d (getField @"dynamicCount" x) .
-                              showString ", " .
-                                showString "divisor = " .
-                                  showsPrec d (getField @"divisor" x) . showChar '}'
+    type StructRep VkIndirectCommandsLayoutTokenNVX =
+         'StructMeta "VkIndirectCommandsLayoutTokenNVX" -- ' closing tick for hsc2hs
+           VkIndirectCommandsLayoutTokenNVX
+           #{size VkIndirectCommandsLayoutTokenNVX}
+           #{alignment VkIndirectCommandsLayoutTokenNVX}
+           '[('FieldMeta "tokenType" VkIndirectCommandsTokenTypeNVX 'False -- ' closing tick for hsc2hs
+                #{offset VkIndirectCommandsLayoutTokenNVX, tokenType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bindingUnit" Word32 'False 
+                                                     #{offset VkIndirectCommandsLayoutTokenNVX, bindingUnit}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dynamicCount" Word32 'False 
+                                                      #{offset VkIndirectCommandsLayoutTokenNVX, dynamicCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "divisor" Word32 'False 
+                                                 #{offset VkIndirectCommandsLayoutTokenNVX, divisor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkIndirectCommandsTokenNVX {
 --   >     VkIndirectCommandsTokenTypeNVX      tokenType;
@@ -527,146 +124,30 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkIndirectCommandsTokenNVX VkIndirectCommandsTokenNVX registry at www.khronos.org>
 type VkIndirectCommandsTokenNVX =
-     VulkanStruct VkIndirectCommandsTokenNVX' -- ' closing tick for hsc2hs
+     VkStruct VkIndirectCommandsTokenNVX' -- ' closing tick for hsc2hs
 
 data VkIndirectCommandsTokenNVX' -- ' closing tick for hsc2hs
 
-instance Eq VkIndirectCommandsTokenNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkIndirectCommandsTokenNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkIndirectCommandsTokenNVX where
-        sizeOf ~_ = #{size VkIndirectCommandsTokenNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkIndirectCommandsTokenNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkIndirectCommandsTokenNVX where
-        type StructFields VkIndirectCommandsTokenNVX =
-             '["tokenType", "buffer", "offset"] -- ' closing tick for hsc2hs
-        type CUnionType VkIndirectCommandsTokenNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkIndirectCommandsTokenNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkIndirectCommandsTokenNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "tokenType" VkIndirectCommandsTokenNVX where
-        type FieldType "tokenType" VkIndirectCommandsTokenNVX =
-             VkIndirectCommandsTokenTypeNVX
-        type FieldOptional "tokenType" VkIndirectCommandsTokenNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tokenType" VkIndirectCommandsTokenNVX =
-             #{offset VkIndirectCommandsTokenNVX, tokenType}
-        type FieldIsArray "tokenType" VkIndirectCommandsTokenNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsTokenNVX, tokenType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tokenType" VkIndirectCommandsTokenNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, tokenType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, tokenType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tokenType" VkIndirectCommandsTokenNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, tokenType}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkIndirectCommandsTokenNVX where
-        type FieldType "buffer" VkIndirectCommandsTokenNVX = VkBuffer
-        type FieldOptional "buffer" VkIndirectCommandsTokenNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkIndirectCommandsTokenNVX =
-             #{offset VkIndirectCommandsTokenNVX, buffer}
-        type FieldIsArray "buffer" VkIndirectCommandsTokenNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsTokenNVX, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkIndirectCommandsTokenNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkIndirectCommandsTokenNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkIndirectCommandsTokenNVX where
-        type FieldType "offset" VkIndirectCommandsTokenNVX = VkDeviceSize
-        type FieldOptional "offset" VkIndirectCommandsTokenNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkIndirectCommandsTokenNVX =
-             #{offset VkIndirectCommandsTokenNVX, offset}
-        type FieldIsArray "offset" VkIndirectCommandsTokenNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIndirectCommandsTokenNVX, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkIndirectCommandsTokenNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIndirectCommandsTokenNVX, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIndirectCommandsTokenNVX, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkIndirectCommandsTokenNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIndirectCommandsTokenNVX, offset}
-
-instance Show VkIndirectCommandsTokenNVX where
-        showsPrec d x
-          = showString "VkIndirectCommandsTokenNVX {" .
-              showString "tokenType = " .
-                showsPrec d (getField @"tokenType" x) .
-                  showString ", " .
-                    showString "buffer = " .
-                      showsPrec d (getField @"buffer" x) .
-                        showString ", " .
-                          showString "offset = " .
-                            showsPrec d (getField @"offset" x) . showChar '}'
+    type StructRep VkIndirectCommandsTokenNVX =
+         'StructMeta "VkIndirectCommandsTokenNVX" VkIndirectCommandsTokenNVX -- ' closing tick for hsc2hs
+           #{size VkIndirectCommandsTokenNVX}
+           #{alignment VkIndirectCommandsTokenNVX}
+           '[('FieldMeta "tokenType" VkIndirectCommandsTokenTypeNVX 'False -- ' closing tick for hsc2hs
+                #{offset VkIndirectCommandsTokenNVX, tokenType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'False 
+                                                  #{offset VkIndirectCommandsTokenNVX, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" VkDeviceSize 'False 
+                                                      #{offset VkIndirectCommandsTokenNVX, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/InputAttachmentAspectReference.hsc b/src-gen/Graphics/Vulkan/Types/Struct/InputAttachmentAspectReference.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/InputAttachmentAspectReference.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/InputAttachmentAspectReference.hsc
@@ -2,21 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference
        (VkInputAttachmentAspectReference,
-        VkInputAttachmentAspectReference', -- ' closing tick for hsc2hs
         VkInputAttachmentAspectReferenceKHR)
        where
-import Foreign.Storable                 (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Image (VkImageAspectFlags)
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkInputAttachmentAspectReference {
 --   >     uint32_t                        subpass;
@@ -26,167 +21,34 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkInputAttachmentAspectReference VkInputAttachmentAspectReference registry at www.khronos.org>
 type VkInputAttachmentAspectReference =
-     VulkanStruct VkInputAttachmentAspectReference' -- ' closing tick for hsc2hs
+     VkStruct VkInputAttachmentAspectReference' -- ' closing tick for hsc2hs
 
 data VkInputAttachmentAspectReference' -- ' closing tick for hsc2hs
 
-instance Eq VkInputAttachmentAspectReference where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkInputAttachmentAspectReference where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkInputAttachmentAspectReference where
-        sizeOf ~_ = #{size VkInputAttachmentAspectReference}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkInputAttachmentAspectReference}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkInputAttachmentAspectReference where
-        type StructFields VkInputAttachmentAspectReference =
-             '["subpass", "inputAttachmentIndex", "aspectMask"] -- ' closing tick for hsc2hs
-        type CUnionType VkInputAttachmentAspectReference = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkInputAttachmentAspectReference = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkInputAttachmentAspectReference = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "subpass" VkInputAttachmentAspectReference where
-        type FieldType "subpass" VkInputAttachmentAspectReference = Word32
-        type FieldOptional "subpass" VkInputAttachmentAspectReference =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "subpass" VkInputAttachmentAspectReference =
-             #{offset VkInputAttachmentAspectReference, subpass}
-        type FieldIsArray "subpass" VkInputAttachmentAspectReference =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInputAttachmentAspectReference, subpass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subpass" VkInputAttachmentAspectReference where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInputAttachmentAspectReference, subpass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInputAttachmentAspectReference, subpass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subpass" VkInputAttachmentAspectReference where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInputAttachmentAspectReference, subpass}
-
-instance {-# OVERLAPPING #-}
-         HasField "inputAttachmentIndex" VkInputAttachmentAspectReference
-         where
-        type FieldType "inputAttachmentIndex"
-               VkInputAttachmentAspectReference
-             = Word32
-        type FieldOptional "inputAttachmentIndex"
-               VkInputAttachmentAspectReference
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "inputAttachmentIndex"
-               VkInputAttachmentAspectReference
-             =
-             #{offset VkInputAttachmentAspectReference, inputAttachmentIndex}
-        type FieldIsArray "inputAttachmentIndex"
-               VkInputAttachmentAspectReference
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInputAttachmentAspectReference, inputAttachmentIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "inputAttachmentIndex"
-           VkInputAttachmentAspectReference
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInputAttachmentAspectReference, inputAttachmentIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInputAttachmentAspectReference, inputAttachmentIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "inputAttachmentIndex"
+    type StructRep VkInputAttachmentAspectReference =
+         'StructMeta "VkInputAttachmentAspectReference" -- ' closing tick for hsc2hs
            VkInputAttachmentAspectReference
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInputAttachmentAspectReference, inputAttachmentIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectMask" VkInputAttachmentAspectReference where
-        type FieldType "aspectMask" VkInputAttachmentAspectReference =
-             VkImageAspectFlags
-        type FieldOptional "aspectMask" VkInputAttachmentAspectReference =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "aspectMask" VkInputAttachmentAspectReference =
-             #{offset VkInputAttachmentAspectReference, aspectMask}
-        type FieldIsArray "aspectMask" VkInputAttachmentAspectReference =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInputAttachmentAspectReference, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "aspectMask" VkInputAttachmentAspectReference where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInputAttachmentAspectReference, aspectMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInputAttachmentAspectReference, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "aspectMask" VkInputAttachmentAspectReference where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInputAttachmentAspectReference, aspectMask}
-
-instance Show VkInputAttachmentAspectReference where
-        showsPrec d x
-          = showString "VkInputAttachmentAspectReference {" .
-              showString "subpass = " .
-                showsPrec d (getField @"subpass" x) .
-                  showString ", " .
-                    showString "inputAttachmentIndex = " .
-                      showsPrec d (getField @"inputAttachmentIndex" x) .
-                        showString ", " .
-                          showString "aspectMask = " .
-                            showsPrec d (getField @"aspectMask" x) . showChar '}'
+           #{size VkInputAttachmentAspectReference}
+           #{alignment VkInputAttachmentAspectReference}
+           '[('FieldMeta "subpass" Word32 'False  -- ' closing tick for hsc2hs
+                                                 #{offset VkInputAttachmentAspectReference, subpass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "inputAttachmentIndex" Word32 'False 
+                                                              #{offset VkInputAttachmentAspectReference, inputAttachmentIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "aspectMask" VkImageAspectFlags 'False 
+                                                                #{offset VkInputAttachmentAspectReference, aspectMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkInputAttachmentAspectReference`
 type VkInputAttachmentAspectReferenceKHR =
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/InstanceCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/InstanceCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/InstanceCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/InstanceCreateInfo.hsc
@@ -2,20 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.InstanceCreateInfo
-       (VkInstanceCreateInfo, VkInstanceCreateInfo') where -- ' closing tick for hsc2hs
-import Foreign.Storable                             (Storable (..))
+       (VkInstanceCreateInfo) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks               (VkInstanceCreateFlags)
 import Graphics.Vulkan.Types.Enum.StructureType     (VkStructureType)
 import Graphics.Vulkan.Types.Struct.ApplicationInfo (VkApplicationInfo)
-import System.IO.Unsafe                             (unsafeDupablePerformIO)
 
 -- | > typedef struct VkInstanceCreateInfo {
 --   >     VkStructureType sType;
@@ -29,333 +25,55 @@
 --   > } VkInstanceCreateInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkInstanceCreateInfo VkInstanceCreateInfo registry at www.khronos.org>
-type VkInstanceCreateInfo = VulkanStruct VkInstanceCreateInfo' -- ' closing tick for hsc2hs
+type VkInstanceCreateInfo = VkStruct VkInstanceCreateInfo' -- ' closing tick for hsc2hs
 
 data VkInstanceCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkInstanceCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkInstanceCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkInstanceCreateInfo where
-        sizeOf ~_ = #{size VkInstanceCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkInstanceCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkInstanceCreateInfo where
-        type StructFields VkInstanceCreateInfo =
-             '["sType", "pNext", "flags", "pApplicationInfo", -- ' closing tick for hsc2hs
-               "enabledLayerCount", "ppEnabledLayerNames",
-               "enabledExtensionCount", "ppEnabledExtensionNames"]
-        type CUnionType VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkInstanceCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkInstanceCreateInfo
-         where
-        type FieldType "sType" VkInstanceCreateInfo = VkStructureType
-        type FieldOptional "sType" VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkInstanceCreateInfo =
-             #{offset VkInstanceCreateInfo, sType}
-        type FieldIsArray "sType" VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkInstanceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkInstanceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInstanceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkInstanceCreateInfo
-         where
-        type FieldType "pNext" VkInstanceCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkInstanceCreateInfo =
-             #{offset VkInstanceCreateInfo, pNext}
-        type FieldIsArray "pNext" VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkInstanceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkInstanceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInstanceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkInstanceCreateInfo
-         where
-        type FieldType "flags" VkInstanceCreateInfo = VkInstanceCreateFlags
-        type FieldOptional "flags" VkInstanceCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkInstanceCreateInfo =
-             #{offset VkInstanceCreateInfo, flags}
-        type FieldIsArray "flags" VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkInstanceCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkInstanceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInstanceCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pApplicationInfo" VkInstanceCreateInfo where
-        type FieldType "pApplicationInfo" VkInstanceCreateInfo =
-             Ptr VkApplicationInfo
-        type FieldOptional "pApplicationInfo" VkInstanceCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pApplicationInfo" VkInstanceCreateInfo =
-             #{offset VkInstanceCreateInfo, pApplicationInfo}
-        type FieldIsArray "pApplicationInfo" VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInstanceCreateInfo, pApplicationInfo}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pApplicationInfo" VkInstanceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, pApplicationInfo})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInstanceCreateInfo, pApplicationInfo}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pApplicationInfo" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, pApplicationInfo}
-
-instance {-# OVERLAPPING #-}
-         HasField "enabledLayerCount" VkInstanceCreateInfo where
-        type FieldType "enabledLayerCount" VkInstanceCreateInfo = Word32
-        type FieldOptional "enabledLayerCount" VkInstanceCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "enabledLayerCount" VkInstanceCreateInfo =
-             #{offset VkInstanceCreateInfo, enabledLayerCount}
-        type FieldIsArray "enabledLayerCount" VkInstanceCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInstanceCreateInfo, enabledLayerCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "enabledLayerCount" VkInstanceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, enabledLayerCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInstanceCreateInfo, enabledLayerCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "enabledLayerCount" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, enabledLayerCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "ppEnabledLayerNames" VkInstanceCreateInfo where
-        type FieldType "ppEnabledLayerNames" VkInstanceCreateInfo =
-             Ptr CString
-        type FieldOptional "ppEnabledLayerNames" VkInstanceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "ppEnabledLayerNames" VkInstanceCreateInfo =
-             #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
-        type FieldIsArray "ppEnabledLayerNames" VkInstanceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ppEnabledLayerNames" VkInstanceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, ppEnabledLayerNames})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ppEnabledLayerNames" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
-
-instance {-# OVERLAPPING #-}
-         HasField "enabledExtensionCount" VkInstanceCreateInfo where
-        type FieldType "enabledExtensionCount" VkInstanceCreateInfo =
-             Word32
-        type FieldOptional "enabledExtensionCount" VkInstanceCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "enabledExtensionCount" VkInstanceCreateInfo =
-             #{offset VkInstanceCreateInfo, enabledExtensionCount}
-        type FieldIsArray "enabledExtensionCount" VkInstanceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInstanceCreateInfo, enabledExtensionCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "enabledExtensionCount" VkInstanceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, enabledExtensionCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInstanceCreateInfo, enabledExtensionCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "enabledExtensionCount" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, enabledExtensionCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "ppEnabledExtensionNames" VkInstanceCreateInfo where
-        type FieldType "ppEnabledExtensionNames" VkInstanceCreateInfo =
-             Ptr CString
-        type FieldOptional "ppEnabledExtensionNames" VkInstanceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "ppEnabledExtensionNames" VkInstanceCreateInfo =
-             #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
-        type FieldIsArray "ppEnabledExtensionNames" VkInstanceCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ppEnabledExtensionNames" VkInstanceCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkInstanceCreateInfo, ppEnabledExtensionNames})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ppEnabledExtensionNames" VkInstanceCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
-
-instance Show VkInstanceCreateInfo where
-        showsPrec d x
-          = showString "VkInstanceCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "pApplicationInfo = " .
-                                  showsPrec d (getField @"pApplicationInfo" x) .
-                                    showString ", " .
-                                      showString "enabledLayerCount = " .
-                                        showsPrec d (getField @"enabledLayerCount" x) .
-                                          showString ", " .
-                                            showString "ppEnabledLayerNames = " .
-                                              showsPrec d (getField @"ppEnabledLayerNames" x) .
-                                                showString ", " .
-                                                  showString "enabledExtensionCount = " .
-                                                    showsPrec d
-                                                      (getField @"enabledExtensionCount" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "ppEnabledExtensionNames = " .
-                                                          showsPrec d
-                                                            (getField @"ppEnabledExtensionNames" x)
-                                                            . showChar '}'
+    type StructRep VkInstanceCreateInfo =
+         'StructMeta "VkInstanceCreateInfo" VkInstanceCreateInfo  -- ' closing tick for hsc2hs
+                                                                 #{size VkInstanceCreateInfo}
+           #{alignment VkInstanceCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkInstanceCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkInstanceCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkInstanceCreateFlags 'True 
+                                                             #{offset VkInstanceCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pApplicationInfo" (Ptr VkApplicationInfo) 'True
+                #{offset VkInstanceCreateInfo, pApplicationInfo}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "enabledLayerCount" Word32 'True 
+                                                          #{offset VkInstanceCreateInfo, enabledLayerCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ppEnabledLayerNames" (Ptr CString) 'False 
+                                                                    #{offset VkInstanceCreateInfo, ppEnabledLayerNames}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "enabledExtensionCount" Word32 'True 
+                                                              #{offset VkInstanceCreateInfo, enabledExtensionCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ppEnabledExtensionNames" (Ptr CString) 'False
+                #{offset VkInstanceCreateInfo, ppEnabledExtensionNames}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/LayerProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/LayerProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/LayerProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/LayerProperties.hsc
@@ -1,26 +1,16 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
 module Graphics.Vulkan.Types.Struct.LayerProperties
-       (VkLayerProperties, VkLayerProperties') where -- ' closing tick for hsc2hs
-import Foreign.Storable                 (Storable (..))
+       (VkLayerProperties) where
 import Graphics.Vulkan.Constants        (VK_MAX_DESCRIPTION_SIZE,
-                                         pattern VK_MAX_DESCRIPTION_SIZE,
-                                         VK_MAX_EXTENSION_NAME_SIZE,
-                                         pattern VK_MAX_EXTENSION_NAME_SIZE)
+                                         VK_MAX_EXTENSION_NAME_SIZE)
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkLayerProperties {
 --   >     char            layerName[VK_MAX_EXTENSION_NAME_SIZE];
@@ -30,229 +20,35 @@
 --   > } VkLayerProperties;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkLayerProperties VkLayerProperties registry at www.khronos.org>
-type VkLayerProperties = VulkanStruct VkLayerProperties' -- ' closing tick for hsc2hs
+type VkLayerProperties = VkStruct VkLayerProperties' -- ' closing tick for hsc2hs
 
 data VkLayerProperties' -- ' closing tick for hsc2hs
 
-instance Eq VkLayerProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkLayerProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkLayerProperties where
-        sizeOf ~_ = #{size VkLayerProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkLayerProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkLayerProperties where
-        type StructFields VkLayerProperties =
-             '["layerName", "specVersion", "implementationVersion", -- ' closing tick for hsc2hs
-               "description"]
-        type CUnionType VkLayerProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkLayerProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkLayerProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "layerName" VkLayerProperties
-         where
-        type FieldType "layerName" VkLayerProperties = CChar
-        type FieldOptional "layerName" VkLayerProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layerName" VkLayerProperties =
-             #{offset VkLayerProperties, layerName}
-        type FieldIsArray "layerName" VkLayerProperties = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkLayerProperties, layerName}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "layerName" VkLayerProperties where
-        type FieldArrayLength "layerName" VkLayerProperties =
-             VK_MAX_EXTENSION_NAME_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_EXTENSION_NAME_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkLayerProperties, layerName} +
-                      sizeOf (undefined :: CChar) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkLayerProperties, layerName} +
-                 sizeOf (undefined :: CChar) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "layerName" VkLayerProperties where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkLayerProperties, layerName} +
-                 sizeOf (undefined :: CChar) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "specVersion" VkLayerProperties where
-        type FieldType "specVersion" VkLayerProperties = Word32
-        type FieldOptional "specVersion" VkLayerProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "specVersion" VkLayerProperties =
-             #{offset VkLayerProperties, specVersion}
-        type FieldIsArray "specVersion" VkLayerProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkLayerProperties, specVersion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "specVersion" VkLayerProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkLayerProperties, specVersion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkLayerProperties, specVersion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "specVersion" VkLayerProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkLayerProperties, specVersion}
-
-instance {-# OVERLAPPING #-}
-         HasField "implementationVersion" VkLayerProperties where
-        type FieldType "implementationVersion" VkLayerProperties = Word32
-        type FieldOptional "implementationVersion" VkLayerProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "implementationVersion" VkLayerProperties =
-             #{offset VkLayerProperties, implementationVersion}
-        type FieldIsArray "implementationVersion" VkLayerProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkLayerProperties, implementationVersion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "implementationVersion" VkLayerProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkLayerProperties, implementationVersion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkLayerProperties, implementationVersion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "implementationVersion" VkLayerProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkLayerProperties, implementationVersion}
-
-instance {-# OVERLAPPING #-}
-         HasField "description" VkLayerProperties where
-        type FieldType "description" VkLayerProperties = CChar
-        type FieldOptional "description" VkLayerProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "description" VkLayerProperties =
-             #{offset VkLayerProperties, description}
-        type FieldIsArray "description" VkLayerProperties = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkLayerProperties, description}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "description" VkLayerProperties where
-        type FieldArrayLength "description" VkLayerProperties =
-             VK_MAX_DESCRIPTION_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_DESCRIPTION_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkLayerProperties, description} +
-                      sizeOf (undefined :: CChar) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkLayerProperties, description} +
-                 sizeOf (undefined :: CChar) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "description" VkLayerProperties where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkLayerProperties, description} +
-                 sizeOf (undefined :: CChar) * i)
-
-instance Show VkLayerProperties where
-        showsPrec d x
-          = showString "VkLayerProperties {" .
-              (showString "layerName = [" .
-                 showsPrec d
-                   (let s = sizeOf
-                              (undefined :: FieldType "layerName" VkLayerProperties)
-                        o = fieldOffset @"layerName" @VkLayerProperties
-                        f i
-                          = peekByteOff (unsafePtr x) i ::
-                              IO (FieldType "layerName" VkLayerProperties)
-                      in
-                      unsafeDupablePerformIO . mapM f $
-                        map (\ i -> o + i * s) [0 .. VK_MAX_EXTENSION_NAME_SIZE - 1])
-                   . showChar ']')
-                .
-                showString ", " .
-                  showString "specVersion = " .
-                    showsPrec d (getField @"specVersion" x) .
-                      showString ", " .
-                        showString "implementationVersion = " .
-                          showsPrec d (getField @"implementationVersion" x) .
-                            showString ", " .
-                              (showString "description = [" .
-                                 showsPrec d
-                                   (let s = sizeOf
-                                              (undefined ::
-                                                 FieldType "description" VkLayerProperties)
-                                        o = fieldOffset @"description" @VkLayerProperties
-                                        f i
-                                          = peekByteOff (unsafePtr x) i ::
-                                              IO (FieldType "description" VkLayerProperties)
-                                      in
-                                      unsafeDupablePerformIO . mapM f $
-                                        map (\ i -> o + i * s) [0 .. VK_MAX_DESCRIPTION_SIZE - 1])
-                                   . showChar ']')
-                                . showChar '}'
+    type StructRep VkLayerProperties =
+         'StructMeta "VkLayerProperties" VkLayerProperties  -- ' closing tick for hsc2hs
+                                                           #{size VkLayerProperties}
+           #{alignment VkLayerProperties}
+           '[('FieldMeta "layerName" CChar 'False  -- ' closing tick for hsc2hs
+                                                  #{offset VkLayerProperties, layerName}
+                VK_MAX_EXTENSION_NAME_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "specVersion" Word32 'False 
+                                                     #{offset VkLayerProperties, specVersion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "implementationVersion" Word32 'False 
+                                                               #{offset VkLayerProperties, implementationVersion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "description" CChar 'False 
+                                                    #{offset VkLayerProperties, description}
+                VK_MAX_DESCRIPTION_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/MappedMemoryRange.hsc b/src-gen/Graphics/Vulkan/Types/Struct/MappedMemoryRange.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/MappedMemoryRange.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/MappedMemoryRange.hsc
@@ -2,20 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.MappedMemoryRange
-       (VkMappedMemoryRange, VkMappedMemoryRange') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkMappedMemoryRange) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Handles            (VkDeviceMemory)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMappedMemoryRange {
 --   >     VkStructureType sType;
@@ -26,210 +22,40 @@
 --   > } VkMappedMemoryRange;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMappedMemoryRange VkMappedMemoryRange registry at www.khronos.org>
-type VkMappedMemoryRange = VulkanStruct VkMappedMemoryRange' -- ' closing tick for hsc2hs
+type VkMappedMemoryRange = VkStruct VkMappedMemoryRange' -- ' closing tick for hsc2hs
 
 data VkMappedMemoryRange' -- ' closing tick for hsc2hs
 
-instance Eq VkMappedMemoryRange where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMappedMemoryRange where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMappedMemoryRange where
-        sizeOf ~_ = #{size VkMappedMemoryRange}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMappedMemoryRange}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkMappedMemoryRange where
-        type StructFields VkMappedMemoryRange =
-             '["sType", "pNext", "memory", "offset", "size"] -- ' closing tick for hsc2hs
-        type CUnionType VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMappedMemoryRange = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkMappedMemoryRange
-         where
-        type FieldType "sType" VkMappedMemoryRange = VkStructureType
-        type FieldOptional "sType" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMappedMemoryRange =
-             #{offset VkMappedMemoryRange, sType}
-        type FieldIsArray "sType" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMappedMemoryRange, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMappedMemoryRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMappedMemoryRange, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMappedMemoryRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMappedMemoryRange, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkMappedMemoryRange
-         where
-        type FieldType "pNext" VkMappedMemoryRange = Ptr Void
-        type FieldOptional "pNext" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMappedMemoryRange =
-             #{offset VkMappedMemoryRange, pNext}
-        type FieldIsArray "pNext" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMappedMemoryRange, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMappedMemoryRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMappedMemoryRange, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMappedMemoryRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMappedMemoryRange, pNext}
-
-instance {-# OVERLAPPING #-} HasField "memory" VkMappedMemoryRange
-         where
-        type FieldType "memory" VkMappedMemoryRange = VkDeviceMemory
-        type FieldOptional "memory" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkMappedMemoryRange =
-             #{offset VkMappedMemoryRange, memory}
-        type FieldIsArray "memory" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMappedMemoryRange, memory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memory" VkMappedMemoryRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, memory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMappedMemoryRange, memory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memory" VkMappedMemoryRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMappedMemoryRange, memory}
-
-instance {-# OVERLAPPING #-} HasField "offset" VkMappedMemoryRange
-         where
-        type FieldType "offset" VkMappedMemoryRange = VkDeviceSize
-        type FieldOptional "offset" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkMappedMemoryRange =
-             #{offset VkMappedMemoryRange, offset}
-        type FieldIsArray "offset" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMappedMemoryRange, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkMappedMemoryRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMappedMemoryRange, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkMappedMemoryRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMappedMemoryRange, offset}
-
-instance {-# OVERLAPPING #-} HasField "size" VkMappedMemoryRange
-         where
-        type FieldType "size" VkMappedMemoryRange = VkDeviceSize
-        type FieldOptional "size" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkMappedMemoryRange =
-             #{offset VkMappedMemoryRange, size}
-        type FieldIsArray "size" VkMappedMemoryRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMappedMemoryRange, size}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "size" VkMappedMemoryRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMappedMemoryRange, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMappedMemoryRange, size}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "size" VkMappedMemoryRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMappedMemoryRange, size}
-
-instance Show VkMappedMemoryRange where
-        showsPrec d x
-          = showString "VkMappedMemoryRange {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memory = " .
-                            showsPrec d (getField @"memory" x) .
-                              showString ", " .
-                                showString "offset = " .
-                                  showsPrec d (getField @"offset" x) .
-                                    showString ", " .
-                                      showString "size = " .
-                                        showsPrec d (getField @"size" x) . showChar '}'
+    type StructRep VkMappedMemoryRange =
+         'StructMeta "VkMappedMemoryRange" VkMappedMemoryRange  -- ' closing tick for hsc2hs
+                                                               #{size VkMappedMemoryRange}
+           #{alignment VkMappedMemoryRange}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMappedMemoryRange, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMappedMemoryRange, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memory" VkDeviceMemory 'False 
+                                                        #{offset VkMappedMemoryRange, memory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" VkDeviceSize 'False 
+                                                      #{offset VkMappedMemoryRange, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "size" VkDeviceSize 'False 
+                                                    #{offset VkMappedMemoryRange, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Memory.hsc
@@ -2,2026 +2,491 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Memory
-       (VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfo', -- ' closing tick for hsc2hs
-        VkMemoryAllocateFlagsInfoKHR, VkMemoryAllocateInfo,
-        VkMemoryAllocateInfo', VkMemoryBarrier, VkMemoryBarrier',
-        VkMemoryDedicatedAllocateInfo, VkMemoryDedicatedAllocateInfo', -- ' closing tick for hsc2hs
-        VkMemoryDedicatedAllocateInfoKHR, VkMemoryDedicatedRequirements,
-        VkMemoryDedicatedRequirements', VkMemoryDedicatedRequirementsKHR, -- ' closing tick for hsc2hs
-        VkMemoryFdPropertiesKHR, VkMemoryFdPropertiesKHR', -- ' closing tick for hsc2hs
-        VkMemoryGetFdInfoKHR, VkMemoryGetFdInfoKHR', VkMemoryHeap, -- ' closing tick for hsc2hs
-        VkMemoryHeap', VkMemoryHostPointerPropertiesEXT, -- ' closing tick for hsc2hs
-        VkMemoryHostPointerPropertiesEXT', VkMemoryRequirements, -- ' closing tick for hsc2hs
-        VkMemoryRequirements', VkMemoryRequirements2, -- ' closing tick for hsc2hs
-        VkMemoryRequirements2', VkMemoryRequirements2KHR, VkMemoryType, -- ' closing tick for hsc2hs
-        VkMemoryType') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes          (VkBool32, VkDeviceSize)
-import Graphics.Vulkan.Types.Enum.AccessFlags   (VkAccessFlags)
-import Graphics.Vulkan.Types.Enum.External      (VkExternalMemoryHandleTypeFlagBits)
-import Graphics.Vulkan.Types.Enum.Memory        (VkMemoryAllocateFlags,
-                                                 VkMemoryHeapFlags,
-                                                 VkMemoryPropertyFlags)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDeviceMemory,
-                                                 VkImage)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkMemoryAllocateFlagsInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkMemoryAllocateFlags flags;
---   >     uint32_t                         deviceMask;
---   > } VkMemoryAllocateFlagsInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfo registry at www.khronos.org>
-type VkMemoryAllocateFlagsInfo =
-     VulkanStruct VkMemoryAllocateFlagsInfo' -- ' closing tick for hsc2hs
-
-data VkMemoryAllocateFlagsInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryAllocateFlagsInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryAllocateFlagsInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryAllocateFlagsInfo where
-        sizeOf ~_ = #{size VkMemoryAllocateFlagsInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryAllocateFlagsInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryAllocateFlagsInfo where
-        type StructFields VkMemoryAllocateFlagsInfo =
-             '["sType", "pNext", "flags", "deviceMask"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryAllocateFlagsInfo =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryAllocateFlagsInfo where
-        type FieldType "sType" VkMemoryAllocateFlagsInfo = VkStructureType
-        type FieldOptional "sType" VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryAllocateFlagsInfo =
-             #{offset VkMemoryAllocateFlagsInfo, sType}
-        type FieldIsArray "sType" VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateFlagsInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryAllocateFlagsInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateFlagsInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryAllocateFlagsInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryAllocateFlagsInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryAllocateFlagsInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryAllocateFlagsInfo where
-        type FieldType "pNext" VkMemoryAllocateFlagsInfo = Ptr Void
-        type FieldOptional "pNext" VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryAllocateFlagsInfo =
-             #{offset VkMemoryAllocateFlagsInfo, pNext}
-        type FieldIsArray "pNext" VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateFlagsInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryAllocateFlagsInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateFlagsInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryAllocateFlagsInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryAllocateFlagsInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryAllocateFlagsInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkMemoryAllocateFlagsInfo where
-        type FieldType "flags" VkMemoryAllocateFlagsInfo =
-             VkMemoryAllocateFlags
-        type FieldOptional "flags" VkMemoryAllocateFlagsInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkMemoryAllocateFlagsInfo =
-             #{offset VkMemoryAllocateFlagsInfo, flags}
-        type FieldIsArray "flags" VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateFlagsInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkMemoryAllocateFlagsInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateFlagsInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryAllocateFlagsInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkMemoryAllocateFlagsInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryAllocateFlagsInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceMask" VkMemoryAllocateFlagsInfo where
-        type FieldType "deviceMask" VkMemoryAllocateFlagsInfo = Word32
-        type FieldOptional "deviceMask" VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceMask" VkMemoryAllocateFlagsInfo =
-             #{offset VkMemoryAllocateFlagsInfo, deviceMask}
-        type FieldIsArray "deviceMask" VkMemoryAllocateFlagsInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateFlagsInfo, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceMask" VkMemoryAllocateFlagsInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateFlagsInfo, deviceMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryAllocateFlagsInfo, deviceMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceMask" VkMemoryAllocateFlagsInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryAllocateFlagsInfo, deviceMask}
-
-instance Show VkMemoryAllocateFlagsInfo where
-        showsPrec d x
-          = showString "VkMemoryAllocateFlagsInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "deviceMask = " .
-                                  showsPrec d (getField @"deviceMask" x) . showChar '}'
-
--- | Alias for `VkMemoryAllocateFlagsInfo`
-type VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo
-
--- | > typedef struct VkMemoryAllocateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkDeviceSize           allocationSize;
---   >     uint32_t               memoryTypeIndex;
---   > } VkMemoryAllocateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryAllocateInfo VkMemoryAllocateInfo registry at www.khronos.org>
-type VkMemoryAllocateInfo = VulkanStruct VkMemoryAllocateInfo' -- ' closing tick for hsc2hs
-
-data VkMemoryAllocateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryAllocateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryAllocateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryAllocateInfo where
-        sizeOf ~_ = #{size VkMemoryAllocateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryAllocateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryAllocateInfo where
-        type StructFields VkMemoryAllocateInfo =
-             '["sType", "pNext", "allocationSize", "memoryTypeIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryAllocateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkMemoryAllocateInfo
-         where
-        type FieldType "sType" VkMemoryAllocateInfo = VkStructureType
-        type FieldOptional "sType" VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryAllocateInfo =
-             #{offset VkMemoryAllocateInfo, sType}
-        type FieldIsArray "sType" VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkMemoryAllocateInfo
-         where
-        type FieldType "pNext" VkMemoryAllocateInfo = Ptr Void
-        type FieldOptional "pNext" VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryAllocateInfo =
-             #{offset VkMemoryAllocateInfo, pNext}
-        type FieldIsArray "pNext" VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "allocationSize" VkMemoryAllocateInfo where
-        type FieldType "allocationSize" VkMemoryAllocateInfo = VkDeviceSize
-        type FieldOptional "allocationSize" VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "allocationSize" VkMemoryAllocateInfo =
-             #{offset VkMemoryAllocateInfo, allocationSize}
-        type FieldIsArray "allocationSize" VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateInfo, allocationSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "allocationSize" VkMemoryAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, allocationSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryAllocateInfo, allocationSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "allocationSize" VkMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryAllocateInfo, allocationSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryTypeIndex" VkMemoryAllocateInfo where
-        type FieldType "memoryTypeIndex" VkMemoryAllocateInfo = Word32
-        type FieldOptional "memoryTypeIndex" VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryTypeIndex" VkMemoryAllocateInfo =
-             #{offset VkMemoryAllocateInfo, memoryTypeIndex}
-        type FieldIsArray "memoryTypeIndex" VkMemoryAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryAllocateInfo, memoryTypeIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryTypeIndex" VkMemoryAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryAllocateInfo, memoryTypeIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryAllocateInfo, memoryTypeIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryTypeIndex" VkMemoryAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryAllocateInfo, memoryTypeIndex}
-
-instance Show VkMemoryAllocateInfo where
-        showsPrec d x
-          = showString "VkMemoryAllocateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "allocationSize = " .
-                            showsPrec d (getField @"allocationSize" x) .
-                              showString ", " .
-                                showString "memoryTypeIndex = " .
-                                  showsPrec d (getField @"memoryTypeIndex" x) . showChar '}'
-
--- | > typedef struct VkMemoryBarrier {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkAccessFlags          srcAccessMask;
---   >     VkAccessFlags          dstAccessMask;
---   > } VkMemoryBarrier;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryBarrier VkMemoryBarrier registry at www.khronos.org>
-type VkMemoryBarrier = VulkanStruct VkMemoryBarrier' -- ' closing tick for hsc2hs
-
-data VkMemoryBarrier' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryBarrier where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryBarrier where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryBarrier where
-        sizeOf ~_ = #{size VkMemoryBarrier}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryBarrier}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryBarrier where
-        type StructFields VkMemoryBarrier =
-             '["sType", "pNext", "srcAccessMask", "dstAccessMask"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryBarrier = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkMemoryBarrier where
-        type FieldType "sType" VkMemoryBarrier = VkStructureType
-        type FieldOptional "sType" VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryBarrier =
-             #{offset VkMemoryBarrier, sType}
-        type FieldIsArray "sType" VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkMemoryBarrier
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-} CanWriteField "sType" VkMemoryBarrier
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryBarrier, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkMemoryBarrier where
-        type FieldType "pNext" VkMemoryBarrier = Ptr Void
-        type FieldOptional "pNext" VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryBarrier =
-             #{offset VkMemoryBarrier, pNext}
-        type FieldIsArray "pNext" VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkMemoryBarrier
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-} CanWriteField "pNext" VkMemoryBarrier
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryBarrier, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcAccessMask" VkMemoryBarrier where
-        type FieldType "srcAccessMask" VkMemoryBarrier = VkAccessFlags
-        type FieldOptional "srcAccessMask" VkMemoryBarrier = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "srcAccessMask" VkMemoryBarrier =
-             #{offset VkMemoryBarrier, srcAccessMask}
-        type FieldIsArray "srcAccessMask" VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcAccessMask" VkMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, srcAccessMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcAccessMask" VkMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryBarrier, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstAccessMask" VkMemoryBarrier where
-        type FieldType "dstAccessMask" VkMemoryBarrier = VkAccessFlags
-        type FieldOptional "dstAccessMask" VkMemoryBarrier = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dstAccessMask" VkMemoryBarrier =
-             #{offset VkMemoryBarrier, dstAccessMask}
-        type FieldIsArray "dstAccessMask" VkMemoryBarrier = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryBarrier, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstAccessMask" VkMemoryBarrier where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryBarrier, dstAccessMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryBarrier, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstAccessMask" VkMemoryBarrier where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryBarrier, dstAccessMask}
-
-instance Show VkMemoryBarrier where
-        showsPrec d x
-          = showString "VkMemoryBarrier {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "srcAccessMask = " .
-                            showsPrec d (getField @"srcAccessMask" x) .
-                              showString ", " .
-                                showString "dstAccessMask = " .
-                                  showsPrec d (getField @"dstAccessMask" x) . showChar '}'
-
--- | > typedef struct VkMemoryDedicatedAllocateInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkImage          image;
---   >     VkBuffer         buffer;
---   > } VkMemoryDedicatedAllocateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfo registry at www.khronos.org>
-type VkMemoryDedicatedAllocateInfo =
-     VulkanStruct VkMemoryDedicatedAllocateInfo' -- ' closing tick for hsc2hs
-
-data VkMemoryDedicatedAllocateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryDedicatedAllocateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryDedicatedAllocateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryDedicatedAllocateInfo where
-        sizeOf ~_ = #{size VkMemoryDedicatedAllocateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryDedicatedAllocateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryDedicatedAllocateInfo where
-        type StructFields VkMemoryDedicatedAllocateInfo =
-             '["sType", "pNext", "image", "buffer"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryDedicatedAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryDedicatedAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryDedicatedAllocateInfo =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryDedicatedAllocateInfo where
-        type FieldType "sType" VkMemoryDedicatedAllocateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkMemoryDedicatedAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryDedicatedAllocateInfo =
-             #{offset VkMemoryDedicatedAllocateInfo, sType}
-        type FieldIsArray "sType" VkMemoryDedicatedAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryDedicatedAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedAllocateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryDedicatedAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryDedicatedAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryDedicatedAllocateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryDedicatedAllocateInfo where
-        type FieldType "pNext" VkMemoryDedicatedAllocateInfo = Ptr Void
-        type FieldOptional "pNext" VkMemoryDedicatedAllocateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryDedicatedAllocateInfo =
-             #{offset VkMemoryDedicatedAllocateInfo, pNext}
-        type FieldIsArray "pNext" VkMemoryDedicatedAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryDedicatedAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedAllocateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryDedicatedAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryDedicatedAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryDedicatedAllocateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkMemoryDedicatedAllocateInfo where
-        type FieldType "image" VkMemoryDedicatedAllocateInfo = VkImage
-        type FieldOptional "image" VkMemoryDedicatedAllocateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkMemoryDedicatedAllocateInfo =
-             #{offset VkMemoryDedicatedAllocateInfo, image}
-        type FieldIsArray "image" VkMemoryDedicatedAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedAllocateInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkMemoryDedicatedAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedAllocateInfo, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryDedicatedAllocateInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkMemoryDedicatedAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryDedicatedAllocateInfo, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkMemoryDedicatedAllocateInfo where
-        type FieldType "buffer" VkMemoryDedicatedAllocateInfo = VkBuffer
-        type FieldOptional "buffer" VkMemoryDedicatedAllocateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkMemoryDedicatedAllocateInfo =
-             #{offset VkMemoryDedicatedAllocateInfo, buffer}
-        type FieldIsArray "buffer" VkMemoryDedicatedAllocateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedAllocateInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkMemoryDedicatedAllocateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedAllocateInfo, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryDedicatedAllocateInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkMemoryDedicatedAllocateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryDedicatedAllocateInfo, buffer}
-
-instance Show VkMemoryDedicatedAllocateInfo where
-        showsPrec d x
-          = showString "VkMemoryDedicatedAllocateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "image = " .
-                            showsPrec d (getField @"image" x) .
-                              showString ", " .
-                                showString "buffer = " .
-                                  showsPrec d (getField @"buffer" x) . showChar '}'
-
--- | Alias for `VkMemoryDedicatedAllocateInfo`
-type VkMemoryDedicatedAllocateInfoKHR =
-     VkMemoryDedicatedAllocateInfo
-
--- | > typedef struct VkMemoryDedicatedRequirements {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         prefersDedicatedAllocation;
---   >     VkBool32                         requiresDedicatedAllocation;
---   > } VkMemoryDedicatedRequirements;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryDedicatedRequirements VkMemoryDedicatedRequirements registry at www.khronos.org>
-type VkMemoryDedicatedRequirements =
-     VulkanStruct VkMemoryDedicatedRequirements' -- ' closing tick for hsc2hs
-
-data VkMemoryDedicatedRequirements' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryDedicatedRequirements where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryDedicatedRequirements where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryDedicatedRequirements where
-        sizeOf ~_ = #{size VkMemoryDedicatedRequirements}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryDedicatedRequirements}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryDedicatedRequirements where
-        type StructFields VkMemoryDedicatedRequirements =
-             '["sType", "pNext", "prefersDedicatedAllocation", -- ' closing tick for hsc2hs
-               "requiresDedicatedAllocation"]
-        type CUnionType VkMemoryDedicatedRequirements = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryDedicatedRequirements = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryDedicatedRequirements =
-             '[VkMemoryRequirements2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryDedicatedRequirements where
-        type FieldType "sType" VkMemoryDedicatedRequirements =
-             VkStructureType
-        type FieldOptional "sType" VkMemoryDedicatedRequirements = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryDedicatedRequirements =
-             #{offset VkMemoryDedicatedRequirements, sType}
-        type FieldIsArray "sType" VkMemoryDedicatedRequirements = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedRequirements, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryDedicatedRequirements where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedRequirements, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryDedicatedRequirements, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryDedicatedRequirements where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryDedicatedRequirements, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryDedicatedRequirements where
-        type FieldType "pNext" VkMemoryDedicatedRequirements = Ptr Void
-        type FieldOptional "pNext" VkMemoryDedicatedRequirements = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryDedicatedRequirements =
-             #{offset VkMemoryDedicatedRequirements, pNext}
-        type FieldIsArray "pNext" VkMemoryDedicatedRequirements = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedRequirements, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryDedicatedRequirements where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedRequirements, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryDedicatedRequirements, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryDedicatedRequirements where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryDedicatedRequirements, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "prefersDedicatedAllocation" VkMemoryDedicatedRequirements
-         where
-        type FieldType "prefersDedicatedAllocation"
-               VkMemoryDedicatedRequirements
-             = VkBool32
-        type FieldOptional "prefersDedicatedAllocation"
-               VkMemoryDedicatedRequirements
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "prefersDedicatedAllocation"
-               VkMemoryDedicatedRequirements
-             =
-             #{offset VkMemoryDedicatedRequirements, prefersDedicatedAllocation}
-        type FieldIsArray "prefersDedicatedAllocation"
-               VkMemoryDedicatedRequirements
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedRequirements, prefersDedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "prefersDedicatedAllocation"
-           VkMemoryDedicatedRequirements
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedRequirements, prefersDedicatedAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryDedicatedRequirements, prefersDedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "prefersDedicatedAllocation"
-           VkMemoryDedicatedRequirements
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryDedicatedRequirements, prefersDedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "requiresDedicatedAllocation"
-           VkMemoryDedicatedRequirements
-         where
-        type FieldType "requiresDedicatedAllocation"
-               VkMemoryDedicatedRequirements
-             = VkBool32
-        type FieldOptional "requiresDedicatedAllocation"
-               VkMemoryDedicatedRequirements
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "requiresDedicatedAllocation"
-               VkMemoryDedicatedRequirements
-             =
-             #{offset VkMemoryDedicatedRequirements, requiresDedicatedAllocation}
-        type FieldIsArray "requiresDedicatedAllocation"
-               VkMemoryDedicatedRequirements
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryDedicatedRequirements, requiresDedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "requiresDedicatedAllocation"
-           VkMemoryDedicatedRequirements
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryDedicatedRequirements, requiresDedicatedAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryDedicatedRequirements, requiresDedicatedAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "requiresDedicatedAllocation"
-           VkMemoryDedicatedRequirements
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryDedicatedRequirements, requiresDedicatedAllocation}
-
-instance Show VkMemoryDedicatedRequirements where
-        showsPrec d x
-          = showString "VkMemoryDedicatedRequirements {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "prefersDedicatedAllocation = " .
-                            showsPrec d (getField @"prefersDedicatedAllocation" x) .
-                              showString ", " .
-                                showString "requiresDedicatedAllocation = " .
-                                  showsPrec d (getField @"requiresDedicatedAllocation" x) .
-                                    showChar '}'
-
--- | Alias for `VkMemoryDedicatedRequirements`
-type VkMemoryDedicatedRequirementsKHR =
-     VkMemoryDedicatedRequirements
-
--- | > typedef struct VkMemoryFdPropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         memoryTypeBits;
---   > } VkMemoryFdPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryFdPropertiesKHR VkMemoryFdPropertiesKHR registry at www.khronos.org>
-type VkMemoryFdPropertiesKHR =
-     VulkanStruct VkMemoryFdPropertiesKHR' -- ' closing tick for hsc2hs
-
-data VkMemoryFdPropertiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryFdPropertiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryFdPropertiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryFdPropertiesKHR where
-        sizeOf ~_ = #{size VkMemoryFdPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryFdPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryFdPropertiesKHR where
-        type StructFields VkMemoryFdPropertiesKHR =
-             '["sType", "pNext", "memoryTypeBits"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryFdPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryFdPropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryFdPropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryFdPropertiesKHR where
-        type FieldType "sType" VkMemoryFdPropertiesKHR = VkStructureType
-        type FieldOptional "sType" VkMemoryFdPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryFdPropertiesKHR =
-             #{offset VkMemoryFdPropertiesKHR, sType}
-        type FieldIsArray "sType" VkMemoryFdPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryFdPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryFdPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryFdPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryFdPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryFdPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryFdPropertiesKHR where
-        type FieldType "pNext" VkMemoryFdPropertiesKHR = Ptr Void
-        type FieldOptional "pNext" VkMemoryFdPropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryFdPropertiesKHR =
-             #{offset VkMemoryFdPropertiesKHR, pNext}
-        type FieldIsArray "pNext" VkMemoryFdPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryFdPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryFdPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryFdPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryFdPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryFdPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryTypeBits" VkMemoryFdPropertiesKHR where
-        type FieldType "memoryTypeBits" VkMemoryFdPropertiesKHR = Word32
-        type FieldOptional "memoryTypeBits" VkMemoryFdPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryTypeBits" VkMemoryFdPropertiesKHR =
-             #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
-        type FieldIsArray "memoryTypeBits" VkMemoryFdPropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryTypeBits" VkMemoryFdPropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryFdPropertiesKHR, memoryTypeBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryTypeBits" VkMemoryFdPropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
-
-instance Show VkMemoryFdPropertiesKHR where
-        showsPrec d x
-          = showString "VkMemoryFdPropertiesKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memoryTypeBits = " .
-                            showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
-
--- | > typedef struct VkMemoryGetFdInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDeviceMemory                   memory;
---   >     VkExternalMemoryHandleTypeFlagBits handleType;
---   > } VkMemoryGetFdInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryGetFdInfoKHR VkMemoryGetFdInfoKHR registry at www.khronos.org>
-type VkMemoryGetFdInfoKHR = VulkanStruct VkMemoryGetFdInfoKHR' -- ' closing tick for hsc2hs
-
-data VkMemoryGetFdInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryGetFdInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryGetFdInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryGetFdInfoKHR where
-        sizeOf ~_ = #{size VkMemoryGetFdInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryGetFdInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryGetFdInfoKHR where
-        type StructFields VkMemoryGetFdInfoKHR =
-             '["sType", "pNext", "memory", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryGetFdInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkMemoryGetFdInfoKHR
-         where
-        type FieldType "sType" VkMemoryGetFdInfoKHR = VkStructureType
-        type FieldOptional "sType" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryGetFdInfoKHR =
-             #{offset VkMemoryGetFdInfoKHR, sType}
-        type FieldIsArray "sType" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkMemoryGetFdInfoKHR
-         where
-        type FieldType "pNext" VkMemoryGetFdInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryGetFdInfoKHR =
-             #{offset VkMemoryGetFdInfoKHR, pNext}
-        type FieldIsArray "pNext" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-} HasField "memory" VkMemoryGetFdInfoKHR
-         where
-        type FieldType "memory" VkMemoryGetFdInfoKHR = VkDeviceMemory
-        type FieldOptional "memory" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkMemoryGetFdInfoKHR =
-             #{offset VkMemoryGetFdInfoKHR, memory}
-        type FieldIsArray "memory" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryGetFdInfoKHR, memory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memory" VkMemoryGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, memory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, memory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memory" VkMemoryGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, memory}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkMemoryGetFdInfoKHR where
-        type FieldType "handleType" VkMemoryGetFdInfoKHR =
-             VkExternalMemoryHandleTypeFlagBits
-        type FieldOptional "handleType" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkMemoryGetFdInfoKHR =
-             #{offset VkMemoryGetFdInfoKHR, handleType}
-        type FieldIsArray "handleType" VkMemoryGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryGetFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkMemoryGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetFdInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkMemoryGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetFdInfoKHR, handleType}
-
-instance Show VkMemoryGetFdInfoKHR where
-        showsPrec d x
-          = showString "VkMemoryGetFdInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memory = " .
-                            showsPrec d (getField @"memory" x) .
-                              showString ", " .
-                                showString "handleType = " .
-                                  showsPrec d (getField @"handleType" x) . showChar '}'
-
--- | > typedef struct VkMemoryHeap {
---   >     VkDeviceSize           size;
---   >     VkMemoryHeapFlags      flags;
---   > } VkMemoryHeap;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryHeap VkMemoryHeap registry at www.khronos.org>
-type VkMemoryHeap = VulkanStruct VkMemoryHeap' -- ' closing tick for hsc2hs
-
-data VkMemoryHeap' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryHeap where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryHeap where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryHeap where
-        sizeOf ~_ = #{size VkMemoryHeap}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryHeap}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryHeap where
-        type StructFields VkMemoryHeap = '["size", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryHeap = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryHeap = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryHeap = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "size" VkMemoryHeap where
-        type FieldType "size" VkMemoryHeap = VkDeviceSize
-        type FieldOptional "size" VkMemoryHeap = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkMemoryHeap =
-             #{offset VkMemoryHeap, size}
-        type FieldIsArray "size" VkMemoryHeap = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryHeap, size}
-
-instance {-# OVERLAPPING #-} CanReadField "size" VkMemoryHeap where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHeap, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryHeap, size}
-
-instance {-# OVERLAPPING #-} CanWriteField "size" VkMemoryHeap
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryHeap, size}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkMemoryHeap where
-        type FieldType "flags" VkMemoryHeap = VkMemoryHeapFlags
-        type FieldOptional "flags" VkMemoryHeap = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkMemoryHeap =
-             #{offset VkMemoryHeap, flags}
-        type FieldIsArray "flags" VkMemoryHeap = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryHeap, flags}
-
-instance {-# OVERLAPPING #-} CanReadField "flags" VkMemoryHeap
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHeap, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryHeap, flags}
-
-instance {-# OVERLAPPING #-} CanWriteField "flags" VkMemoryHeap
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryHeap, flags}
-
-instance Show VkMemoryHeap where
-        showsPrec d x
-          = showString "VkMemoryHeap {" .
-              showString "size = " .
-                showsPrec d (getField @"size" x) .
-                  showString ", " .
-                    showString "flags = " .
-                      showsPrec d (getField @"flags" x) . showChar '}'
-
--- | > typedef struct VkMemoryHostPointerPropertiesEXT {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     uint32_t memoryTypeBits;
---   > } VkMemoryHostPointerPropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryHostPointerPropertiesEXT VkMemoryHostPointerPropertiesEXT registry at www.khronos.org>
-type VkMemoryHostPointerPropertiesEXT =
-     VulkanStruct VkMemoryHostPointerPropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkMemoryHostPointerPropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryHostPointerPropertiesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryHostPointerPropertiesEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryHostPointerPropertiesEXT where
-        sizeOf ~_ = #{size VkMemoryHostPointerPropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryHostPointerPropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryHostPointerPropertiesEXT where
-        type StructFields VkMemoryHostPointerPropertiesEXT =
-             '["sType", "pNext", "memoryTypeBits"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryHostPointerPropertiesEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryHostPointerPropertiesEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryHostPointerPropertiesEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryHostPointerPropertiesEXT where
-        type FieldType "sType" VkMemoryHostPointerPropertiesEXT =
-             VkStructureType
-        type FieldOptional "sType" VkMemoryHostPointerPropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryHostPointerPropertiesEXT =
-             #{offset VkMemoryHostPointerPropertiesEXT, sType}
-        type FieldIsArray "sType" VkMemoryHostPointerPropertiesEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryHostPointerPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryHostPointerPropertiesEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryHostPointerPropertiesEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryHostPointerPropertiesEXT where
-        type FieldType "pNext" VkMemoryHostPointerPropertiesEXT = Ptr Void
-        type FieldOptional "pNext" VkMemoryHostPointerPropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryHostPointerPropertiesEXT =
-             #{offset VkMemoryHostPointerPropertiesEXT, pNext}
-        type FieldIsArray "pNext" VkMemoryHostPointerPropertiesEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryHostPointerPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryHostPointerPropertiesEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryHostPointerPropertiesEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryTypeBits" VkMemoryHostPointerPropertiesEXT where
-        type FieldType "memoryTypeBits" VkMemoryHostPointerPropertiesEXT =
-             Word32
-        type FieldOptional "memoryTypeBits"
-               VkMemoryHostPointerPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryTypeBits" VkMemoryHostPointerPropertiesEXT
-             =
-             #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
-        type FieldIsArray "memoryTypeBits" VkMemoryHostPointerPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryTypeBits" VkMemoryHostPointerPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryTypeBits" VkMemoryHostPointerPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
-
-instance Show VkMemoryHostPointerPropertiesEXT where
-        showsPrec d x
-          = showString "VkMemoryHostPointerPropertiesEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memoryTypeBits = " .
-                            showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
-
--- | > typedef struct VkMemoryRequirements {
---   >     VkDeviceSize           size;
---   >     VkDeviceSize           alignment;
---   >     uint32_t               memoryTypeBits;
---   > } VkMemoryRequirements;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryRequirements VkMemoryRequirements registry at www.khronos.org>
-type VkMemoryRequirements = VulkanStruct VkMemoryRequirements' -- ' closing tick for hsc2hs
-
-data VkMemoryRequirements' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryRequirements where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryRequirements where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryRequirements where
-        sizeOf ~_ = #{size VkMemoryRequirements}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryRequirements}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryRequirements where
-        type StructFields VkMemoryRequirements =
-             '["size", "alignment", "memoryTypeBits"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryRequirements = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryRequirements = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryRequirements = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "size" VkMemoryRequirements
-         where
-        type FieldType "size" VkMemoryRequirements = VkDeviceSize
-        type FieldOptional "size" VkMemoryRequirements = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkMemoryRequirements =
-             #{offset VkMemoryRequirements, size}
-        type FieldIsArray "size" VkMemoryRequirements = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryRequirements, size}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "size" VkMemoryRequirements where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryRequirements, size}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "size" VkMemoryRequirements where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryRequirements, size}
-
-instance {-# OVERLAPPING #-}
-         HasField "alignment" VkMemoryRequirements where
-        type FieldType "alignment" VkMemoryRequirements = VkDeviceSize
-        type FieldOptional "alignment" VkMemoryRequirements = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "alignment" VkMemoryRequirements =
-             #{offset VkMemoryRequirements, alignment}
-        type FieldIsArray "alignment" VkMemoryRequirements = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryRequirements, alignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "alignment" VkMemoryRequirements where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, alignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryRequirements, alignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "alignment" VkMemoryRequirements where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryRequirements, alignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryTypeBits" VkMemoryRequirements where
-        type FieldType "memoryTypeBits" VkMemoryRequirements = Word32
-        type FieldOptional "memoryTypeBits" VkMemoryRequirements = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryTypeBits" VkMemoryRequirements =
-             #{offset VkMemoryRequirements, memoryTypeBits}
-        type FieldIsArray "memoryTypeBits" VkMemoryRequirements = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryRequirements, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryTypeBits" VkMemoryRequirements where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements, memoryTypeBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryRequirements, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryTypeBits" VkMemoryRequirements where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryRequirements, memoryTypeBits}
-
-instance Show VkMemoryRequirements where
-        showsPrec d x
-          = showString "VkMemoryRequirements {" .
-              showString "size = " .
-                showsPrec d (getField @"size" x) .
-                  showString ", " .
-                    showString "alignment = " .
-                      showsPrec d (getField @"alignment" x) .
-                        showString ", " .
-                          showString "memoryTypeBits = " .
-                            showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
-
--- | > typedef struct VkMemoryRequirements2 {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkMemoryRequirements                                                 memoryRequirements;
---   > } VkMemoryRequirements2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryRequirements2 VkMemoryRequirements2 registry at www.khronos.org>
-type VkMemoryRequirements2 = VulkanStruct VkMemoryRequirements2' -- ' closing tick for hsc2hs
-
-data VkMemoryRequirements2' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryRequirements2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryRequirements2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryRequirements2 where
-        sizeOf ~_ = #{size VkMemoryRequirements2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryRequirements2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryRequirements2 where
-        type StructFields VkMemoryRequirements2 =
-             '["sType", "pNext", "memoryRequirements"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryRequirements2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryRequirements2 = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryRequirements2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkMemoryRequirements2
-         where
-        type FieldType "sType" VkMemoryRequirements2 = VkStructureType
-        type FieldOptional "sType" VkMemoryRequirements2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryRequirements2 =
-             #{offset VkMemoryRequirements2, sType}
-        type FieldIsArray "sType" VkMemoryRequirements2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryRequirements2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryRequirements2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryRequirements2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryRequirements2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryRequirements2, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkMemoryRequirements2
-         where
-        type FieldType "pNext" VkMemoryRequirements2 = Ptr Void
-        type FieldOptional "pNext" VkMemoryRequirements2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryRequirements2 =
-             #{offset VkMemoryRequirements2, pNext}
-        type FieldIsArray "pNext" VkMemoryRequirements2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryRequirements2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryRequirements2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryRequirements2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryRequirements2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryRequirements2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryRequirements" VkMemoryRequirements2 where
-        type FieldType "memoryRequirements" VkMemoryRequirements2 =
-             VkMemoryRequirements
-        type FieldOptional "memoryRequirements" VkMemoryRequirements2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryRequirements" VkMemoryRequirements2 =
-             #{offset VkMemoryRequirements2, memoryRequirements}
-        type FieldIsArray "memoryRequirements" VkMemoryRequirements2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryRequirements2, memoryRequirements}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryRequirements" VkMemoryRequirements2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryRequirements2, memoryRequirements})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryRequirements2, memoryRequirements}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryRequirements" VkMemoryRequirements2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryRequirements2, memoryRequirements}
-
-instance Show VkMemoryRequirements2 where
-        showsPrec d x
-          = showString "VkMemoryRequirements2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memoryRequirements = " .
-                            showsPrec d (getField @"memoryRequirements" x) . showChar '}'
-
--- | Alias for `VkMemoryRequirements2`
-type VkMemoryRequirements2KHR = VkMemoryRequirements2
-
--- | > typedef struct VkMemoryType {
---   >     VkMemoryPropertyFlags  propertyFlags;
---   >     uint32_t               heapIndex;
---   > } VkMemoryType;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryType VkMemoryType registry at www.khronos.org>
-type VkMemoryType = VulkanStruct VkMemoryType' -- ' closing tick for hsc2hs
-
-data VkMemoryType' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryType where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryType where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryType where
-        sizeOf ~_ = #{size VkMemoryType}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMemoryType}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryType where
-        type StructFields VkMemoryType = '["propertyFlags", "heapIndex"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryType = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryType = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryType = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "propertyFlags" VkMemoryType
-         where
-        type FieldType "propertyFlags" VkMemoryType = VkMemoryPropertyFlags
-        type FieldOptional "propertyFlags" VkMemoryType = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "propertyFlags" VkMemoryType =
-             #{offset VkMemoryType, propertyFlags}
-        type FieldIsArray "propertyFlags" VkMemoryType = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryType, propertyFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "propertyFlags" VkMemoryType where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryType, propertyFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryType, propertyFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "propertyFlags" VkMemoryType where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryType, propertyFlags}
-
-instance {-# OVERLAPPING #-} HasField "heapIndex" VkMemoryType
-         where
-        type FieldType "heapIndex" VkMemoryType = Word32
-        type FieldOptional "heapIndex" VkMemoryType = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "heapIndex" VkMemoryType =
-             #{offset VkMemoryType, heapIndex}
-        type FieldIsArray "heapIndex" VkMemoryType = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkMemoryType, heapIndex}
-
-instance {-# OVERLAPPING #-} CanReadField "heapIndex" VkMemoryType
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryType, heapIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryType, heapIndex}
-
-instance {-# OVERLAPPING #-} CanWriteField "heapIndex" VkMemoryType
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryType, heapIndex}
-
-instance Show VkMemoryType where
-        showsPrec d x
-          = showString "VkMemoryType {" .
-              showString "propertyFlags = " .
-                showsPrec d (getField @"propertyFlags" x) .
-                  showString ", " .
-                    showString "heapIndex = " .
-                      showsPrec d (getField @"heapIndex" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Memory
+       (VkMemoryAllocateFlagsInfo, VkMemoryAllocateFlagsInfoKHR,
+        VkMemoryAllocateInfo, VkMemoryBarrier,
+        VkMemoryDedicatedAllocateInfo, VkMemoryDedicatedAllocateInfoKHR,
+        VkMemoryDedicatedRequirements, VkMemoryDedicatedRequirementsKHR,
+        VkMemoryFdPropertiesKHR, VkMemoryGetFdInfoKHR, VkMemoryHeap,
+        VkMemoryHostPointerPropertiesEXT, VkMemoryRequirements,
+        VkMemoryRequirements2, VkMemoryRequirements2KHR, VkMemoryType)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes          (VkBool32, VkDeviceSize)
+import Graphics.Vulkan.Types.Enum.AccessFlags   (VkAccessFlags)
+import Graphics.Vulkan.Types.Enum.External      (VkExternalMemoryHandleTypeFlagBits)
+import Graphics.Vulkan.Types.Enum.Memory        (VkMemoryAllocateFlags,
+                                                 VkMemoryHeapFlags,
+                                                 VkMemoryPropertyFlags)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDeviceMemory,
+                                                 VkImage)
+
+-- | > typedef struct VkMemoryAllocateFlagsInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkMemoryAllocateFlags flags;
+--   >     uint32_t                         deviceMask;
+--   > } VkMemoryAllocateFlagsInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfo registry at www.khronos.org>
+type VkMemoryAllocateFlagsInfo =
+     VkStruct VkMemoryAllocateFlagsInfo' -- ' closing tick for hsc2hs
+
+data VkMemoryAllocateFlagsInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryAllocateFlagsInfo where
+    type StructRep VkMemoryAllocateFlagsInfo =
+         'StructMeta "VkMemoryAllocateFlagsInfo" VkMemoryAllocateFlagsInfo -- ' closing tick for hsc2hs
+           #{size VkMemoryAllocateFlagsInfo}
+           #{alignment VkMemoryAllocateFlagsInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryAllocateFlagsInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryAllocateFlagsInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkMemoryAllocateFlags 'True 
+                                                             #{offset VkMemoryAllocateFlagsInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceMask" Word32 'False 
+                                                    #{offset VkMemoryAllocateFlagsInfo, deviceMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkMemoryAllocateFlagsInfo`
+type VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo
+
+-- | > typedef struct VkMemoryAllocateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkDeviceSize           allocationSize;
+--   >     uint32_t               memoryTypeIndex;
+--   > } VkMemoryAllocateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryAllocateInfo VkMemoryAllocateInfo registry at www.khronos.org>
+type VkMemoryAllocateInfo = VkStruct VkMemoryAllocateInfo' -- ' closing tick for hsc2hs
+
+data VkMemoryAllocateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryAllocateInfo where
+    type StructRep VkMemoryAllocateInfo =
+         'StructMeta "VkMemoryAllocateInfo" VkMemoryAllocateInfo  -- ' closing tick for hsc2hs
+                                                                 #{size VkMemoryAllocateInfo}
+           #{alignment VkMemoryAllocateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryAllocateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryAllocateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "allocationSize" VkDeviceSize 'False 
+                                                              #{offset VkMemoryAllocateInfo, allocationSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryTypeIndex" Word32 'False 
+                                                         #{offset VkMemoryAllocateInfo, memoryTypeIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryBarrier {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkAccessFlags          srcAccessMask;
+--   >     VkAccessFlags          dstAccessMask;
+--   > } VkMemoryBarrier;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryBarrier VkMemoryBarrier registry at www.khronos.org>
+type VkMemoryBarrier = VkStruct VkMemoryBarrier' -- ' closing tick for hsc2hs
+
+data VkMemoryBarrier' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryBarrier where
+    type StructRep VkMemoryBarrier =
+         'StructMeta "VkMemoryBarrier" VkMemoryBarrier  -- ' closing tick for hsc2hs
+                                                       #{size VkMemoryBarrier}
+           #{alignment VkMemoryBarrier}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryBarrier, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryBarrier, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcAccessMask" VkAccessFlags 'True 
+                                                             #{offset VkMemoryBarrier, srcAccessMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstAccessMask" VkAccessFlags 'True 
+                                                             #{offset VkMemoryBarrier, dstAccessMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryDedicatedAllocateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkImage          image;
+--   >     VkBuffer         buffer;
+--   > } VkMemoryDedicatedAllocateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfo registry at www.khronos.org>
+type VkMemoryDedicatedAllocateInfo =
+     VkStruct VkMemoryDedicatedAllocateInfo' -- ' closing tick for hsc2hs
+
+data VkMemoryDedicatedAllocateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryDedicatedAllocateInfo where
+    type StructRep VkMemoryDedicatedAllocateInfo =
+         'StructMeta "VkMemoryDedicatedAllocateInfo" -- ' closing tick for hsc2hs
+           VkMemoryDedicatedAllocateInfo
+           #{size VkMemoryDedicatedAllocateInfo}
+           #{alignment VkMemoryDedicatedAllocateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryDedicatedAllocateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryDedicatedAllocateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "image" VkImage 'True 
+                                               #{offset VkMemoryDedicatedAllocateInfo, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'True 
+                                                 #{offset VkMemoryDedicatedAllocateInfo, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkMemoryDedicatedAllocateInfo`
+type VkMemoryDedicatedAllocateInfoKHR =
+     VkMemoryDedicatedAllocateInfo
+
+-- | > typedef struct VkMemoryDedicatedRequirements {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         prefersDedicatedAllocation;
+--   >     VkBool32                         requiresDedicatedAllocation;
+--   > } VkMemoryDedicatedRequirements;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryDedicatedRequirements VkMemoryDedicatedRequirements registry at www.khronos.org>
+type VkMemoryDedicatedRequirements =
+     VkStruct VkMemoryDedicatedRequirements' -- ' closing tick for hsc2hs
+
+data VkMemoryDedicatedRequirements' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryDedicatedRequirements where
+    type StructRep VkMemoryDedicatedRequirements =
+         'StructMeta "VkMemoryDedicatedRequirements" -- ' closing tick for hsc2hs
+           VkMemoryDedicatedRequirements
+           #{size VkMemoryDedicatedRequirements}
+           #{alignment VkMemoryDedicatedRequirements}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryDedicatedRequirements, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryDedicatedRequirements, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "prefersDedicatedAllocation" VkBool32 'False 
+                                                                      #{offset VkMemoryDedicatedRequirements, prefersDedicatedAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "requiresDedicatedAllocation" VkBool32 'False 
+                                                                       #{offset VkMemoryDedicatedRequirements, requiresDedicatedAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkMemoryRequirements2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkMemoryDedicatedRequirements`
+type VkMemoryDedicatedRequirementsKHR =
+     VkMemoryDedicatedRequirements
+
+-- | > typedef struct VkMemoryFdPropertiesKHR {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         memoryTypeBits;
+--   > } VkMemoryFdPropertiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryFdPropertiesKHR VkMemoryFdPropertiesKHR registry at www.khronos.org>
+type VkMemoryFdPropertiesKHR = VkStruct VkMemoryFdPropertiesKHR' -- ' closing tick for hsc2hs
+
+data VkMemoryFdPropertiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryFdPropertiesKHR where
+    type StructRep VkMemoryFdPropertiesKHR =
+         'StructMeta "VkMemoryFdPropertiesKHR" VkMemoryFdPropertiesKHR -- ' closing tick for hsc2hs
+           #{size VkMemoryFdPropertiesKHR}
+           #{alignment VkMemoryFdPropertiesKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryFdPropertiesKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryFdPropertiesKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryTypeBits" Word32 'False 
+                                                        #{offset VkMemoryFdPropertiesKHR, memoryTypeBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryGetFdInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDeviceMemory                   memory;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
+--   > } VkMemoryGetFdInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryGetFdInfoKHR VkMemoryGetFdInfoKHR registry at www.khronos.org>
+type VkMemoryGetFdInfoKHR = VkStruct VkMemoryGetFdInfoKHR' -- ' closing tick for hsc2hs
+
+data VkMemoryGetFdInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryGetFdInfoKHR where
+    type StructRep VkMemoryGetFdInfoKHR =
+         'StructMeta "VkMemoryGetFdInfoKHR" VkMemoryGetFdInfoKHR  -- ' closing tick for hsc2hs
+                                                                 #{size VkMemoryGetFdInfoKHR}
+           #{alignment VkMemoryGetFdInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryGetFdInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryGetFdInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memory" VkDeviceMemory 'False 
+                                                        #{offset VkMemoryGetFdInfoKHR, memory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagBits 'False
+                #{offset VkMemoryGetFdInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryHeap {
+--   >     VkDeviceSize           size;
+--   >     VkMemoryHeapFlags      flags;
+--   > } VkMemoryHeap;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryHeap VkMemoryHeap registry at www.khronos.org>
+type VkMemoryHeap = VkStruct VkMemoryHeap' -- ' closing tick for hsc2hs
+
+data VkMemoryHeap' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryHeap where
+    type StructRep VkMemoryHeap =
+         'StructMeta "VkMemoryHeap" VkMemoryHeap  -- ' closing tick for hsc2hs
+                                                 #{size VkMemoryHeap}
+           #{alignment VkMemoryHeap}
+           '[('FieldMeta "size" VkDeviceSize 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkMemoryHeap, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkMemoryHeapFlags 'True 
+                                                         #{offset VkMemoryHeap, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryHostPointerPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     uint32_t memoryTypeBits;
+--   > } VkMemoryHostPointerPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryHostPointerPropertiesEXT VkMemoryHostPointerPropertiesEXT registry at www.khronos.org>
+type VkMemoryHostPointerPropertiesEXT =
+     VkStruct VkMemoryHostPointerPropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkMemoryHostPointerPropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryHostPointerPropertiesEXT where
+    type StructRep VkMemoryHostPointerPropertiesEXT =
+         'StructMeta "VkMemoryHostPointerPropertiesEXT" -- ' closing tick for hsc2hs
+           VkMemoryHostPointerPropertiesEXT
+           #{size VkMemoryHostPointerPropertiesEXT}
+           #{alignment VkMemoryHostPointerPropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryHostPointerPropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryHostPointerPropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryTypeBits" Word32 'False 
+                                                        #{offset VkMemoryHostPointerPropertiesEXT, memoryTypeBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryRequirements {
+--   >     VkDeviceSize           size;
+--   >     VkDeviceSize           alignment;
+--   >     uint32_t               memoryTypeBits;
+--   > } VkMemoryRequirements;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryRequirements VkMemoryRequirements registry at www.khronos.org>
+type VkMemoryRequirements = VkStruct VkMemoryRequirements' -- ' closing tick for hsc2hs
+
+data VkMemoryRequirements' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryRequirements where
+    type StructRep VkMemoryRequirements =
+         'StructMeta "VkMemoryRequirements" VkMemoryRequirements  -- ' closing tick for hsc2hs
+                                                                 #{size VkMemoryRequirements}
+           #{alignment VkMemoryRequirements}
+           '[('FieldMeta "size" VkDeviceSize 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkMemoryRequirements, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "alignment" VkDeviceSize 'False 
+                                                         #{offset VkMemoryRequirements, alignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryTypeBits" Word32 'False 
+                                                        #{offset VkMemoryRequirements, memoryTypeBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryRequirements2 {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkMemoryRequirements                                                 memoryRequirements;
+--   > } VkMemoryRequirements2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryRequirements2 VkMemoryRequirements2 registry at www.khronos.org>
+type VkMemoryRequirements2 = VkStruct VkMemoryRequirements2' -- ' closing tick for hsc2hs
+
+data VkMemoryRequirements2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryRequirements2 where
+    type StructRep VkMemoryRequirements2 =
+         'StructMeta "VkMemoryRequirements2" VkMemoryRequirements2  -- ' closing tick for hsc2hs
+                                                                   #{size VkMemoryRequirements2}
+           #{alignment VkMemoryRequirements2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryRequirements2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryRequirements2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryRequirements" VkMemoryRequirements 'False
+                #{offset VkMemoryRequirements2, memoryRequirements}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkMemoryRequirements2`
+type VkMemoryRequirements2KHR = VkMemoryRequirements2
+
+-- | > typedef struct VkMemoryType {
+--   >     VkMemoryPropertyFlags  propertyFlags;
+--   >     uint32_t               heapIndex;
+--   > } VkMemoryType;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryType VkMemoryType registry at www.khronos.org>
+type VkMemoryType = VkStruct VkMemoryType' -- ' closing tick for hsc2hs
+
+data VkMemoryType' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryType where
+    type StructRep VkMemoryType =
+         'StructMeta "VkMemoryType" VkMemoryType  -- ' closing tick for hsc2hs
+                                                 #{size VkMemoryType}
+           #{alignment VkMemoryType}
+           '[('FieldMeta "propertyFlags" VkMemoryPropertyFlags 'True  -- ' closing tick for hsc2hs
+                                                                     #{offset VkMemoryType, propertyFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "heapIndex" Word32 'False 
+                                                   #{offset VkMemoryType, heapIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/MultisamplePropertiesEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/MultisamplePropertiesEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/MultisamplePropertiesEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/MultisamplePropertiesEXT.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.MultisamplePropertiesEXT
-       (VkMultisamplePropertiesEXT, VkMultisamplePropertiesEXT') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkMultisamplePropertiesEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Struct.Extent      (VkExtent2D)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMultisamplePropertiesEXT {
 --   >     VkStructureType sType;
@@ -24,158 +20,30 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMultisamplePropertiesEXT VkMultisamplePropertiesEXT registry at www.khronos.org>
 type VkMultisamplePropertiesEXT =
-     VulkanStruct VkMultisamplePropertiesEXT' -- ' closing tick for hsc2hs
+     VkStruct VkMultisamplePropertiesEXT' -- ' closing tick for hsc2hs
 
 data VkMultisamplePropertiesEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkMultisamplePropertiesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMultisamplePropertiesEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMultisamplePropertiesEXT where
-        sizeOf ~_ = #{size VkMultisamplePropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMultisamplePropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkMultisamplePropertiesEXT where
-        type StructFields VkMultisamplePropertiesEXT =
-             '["sType", "pNext", "maxSampleLocationGridSize"] -- ' closing tick for hsc2hs
-        type CUnionType VkMultisamplePropertiesEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMultisamplePropertiesEXT = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMultisamplePropertiesEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMultisamplePropertiesEXT where
-        type FieldType "sType" VkMultisamplePropertiesEXT = VkStructureType
-        type FieldOptional "sType" VkMultisamplePropertiesEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMultisamplePropertiesEXT =
-             #{offset VkMultisamplePropertiesEXT, sType}
-        type FieldIsArray "sType" VkMultisamplePropertiesEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMultisamplePropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMultisamplePropertiesEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMultisamplePropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMultisamplePropertiesEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMultisamplePropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMultisamplePropertiesEXT where
-        type FieldType "pNext" VkMultisamplePropertiesEXT = Ptr Void
-        type FieldOptional "pNext" VkMultisamplePropertiesEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMultisamplePropertiesEXT =
-             #{offset VkMultisamplePropertiesEXT, pNext}
-        type FieldIsArray "pNext" VkMultisamplePropertiesEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMultisamplePropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMultisamplePropertiesEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMultisamplePropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMultisamplePropertiesEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMultisamplePropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSampleLocationGridSize" VkMultisamplePropertiesEXT
-         where
-        type FieldType "maxSampleLocationGridSize"
-               VkMultisamplePropertiesEXT
-             = VkExtent2D
-        type FieldOptional "maxSampleLocationGridSize"
-               VkMultisamplePropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSampleLocationGridSize"
-               VkMultisamplePropertiesEXT
-             =
-             #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
-        type FieldIsArray "maxSampleLocationGridSize"
-               VkMultisamplePropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSampleLocationGridSize" VkMultisamplePropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSampleLocationGridSize"
-           VkMultisamplePropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
-
-instance Show VkMultisamplePropertiesEXT where
-        showsPrec d x
-          = showString "VkMultisamplePropertiesEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxSampleLocationGridSize = " .
-                            showsPrec d (getField @"maxSampleLocationGridSize" x) .
-                              showChar '}'
+    type StructRep VkMultisamplePropertiesEXT =
+         'StructMeta "VkMultisamplePropertiesEXT" VkMultisamplePropertiesEXT -- ' closing tick for hsc2hs
+           #{size VkMultisamplePropertiesEXT}
+           #{alignment VkMultisamplePropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMultisamplePropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMultisamplePropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSampleLocationGridSize" VkExtent2D 'False 
+                                                                       #{offset VkMultisamplePropertiesEXT, maxSampleLocationGridSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc b/src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc
@@ -2,1611 +2,339 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.ObjectTable
-       (VkObjectTableCreateInfoNVX, VkObjectTableCreateInfoNVX', -- ' closing tick for hsc2hs
-        VkObjectTableDescriptorSetEntryNVX,
-        VkObjectTableDescriptorSetEntryNVX', VkObjectTableEntryNVX, -- ' closing tick for hsc2hs
-        VkObjectTableEntryNVX', VkObjectTableIndexBufferEntryNVX, -- ' closing tick for hsc2hs
-        VkObjectTableIndexBufferEntryNVX', VkObjectTablePipelineEntryNVX, -- ' closing tick for hsc2hs
-        VkObjectTablePipelineEntryNVX', VkObjectTablePushConstantEntryNVX, -- ' closing tick for hsc2hs
-        VkObjectTablePushConstantEntryNVX', -- ' closing tick for hsc2hs
-        VkObjectTableVertexBufferEntryNVX,
-        VkObjectTableVertexBufferEntryNVX') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.Enum.IndexType     (VkIndexType)
-import Graphics.Vulkan.Types.Enum.Object        (VkObjectEntryTypeNVX,
-                                                 VkObjectEntryUsageFlagsNVX)
-import Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDescriptorSet,
-                                                 VkPipeline, VkPipelineLayout)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkObjectTableCreateInfoNVX {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                                          objectCount;
---   >     const VkObjectEntryTypeNVX*       pObjectEntryTypes;
---   >     const uint32_t*                   pObjectEntryCounts;
---   >     const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
---   >     uint32_t maxUniformBuffersPerDescriptor;
---   >     uint32_t maxStorageBuffersPerDescriptor;
---   >     uint32_t maxStorageImagesPerDescriptor;
---   >     uint32_t maxSampledImagesPerDescriptor;
---   >     uint32_t maxPipelineLayouts;
---   > } VkObjectTableCreateInfoNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableCreateInfoNVX VkObjectTableCreateInfoNVX registry at www.khronos.org>
-type VkObjectTableCreateInfoNVX =
-     VulkanStruct VkObjectTableCreateInfoNVX' -- ' closing tick for hsc2hs
-
-data VkObjectTableCreateInfoNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkObjectTableCreateInfoNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkObjectTableCreateInfoNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkObjectTableCreateInfoNVX where
-        sizeOf ~_ = #{size VkObjectTableCreateInfoNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkObjectTableCreateInfoNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkObjectTableCreateInfoNVX where
-        type StructFields VkObjectTableCreateInfoNVX =
-             '["sType", "pNext", "objectCount", "pObjectEntryTypes", -- ' closing tick for hsc2hs
-               "pObjectEntryCounts", "pObjectEntryUsageFlags",
-               "maxUniformBuffersPerDescriptor", "maxStorageBuffersPerDescriptor",
-               "maxStorageImagesPerDescriptor", "maxSampledImagesPerDescriptor",
-               "maxPipelineLayouts"]
-        type CUnionType VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkObjectTableCreateInfoNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkObjectTableCreateInfoNVX where
-        type FieldType "sType" VkObjectTableCreateInfoNVX = VkStructureType
-        type FieldOptional "sType" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkObjectTableCreateInfoNVX =
-             #{offset VkObjectTableCreateInfoNVX, sType}
-        type FieldIsArray "sType" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkObjectTableCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkObjectTableCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkObjectTableCreateInfoNVX where
-        type FieldType "pNext" VkObjectTableCreateInfoNVX = Ptr Void
-        type FieldOptional "pNext" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkObjectTableCreateInfoNVX =
-             #{offset VkObjectTableCreateInfoNVX, pNext}
-        type FieldIsArray "pNext" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkObjectTableCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkObjectTableCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "objectCount" VkObjectTableCreateInfoNVX where
-        type FieldType "objectCount" VkObjectTableCreateInfoNVX = Word32
-        type FieldOptional "objectCount" VkObjectTableCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "objectCount" VkObjectTableCreateInfoNVX =
-             #{offset VkObjectTableCreateInfoNVX, objectCount}
-        type FieldIsArray "objectCount" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, objectCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "objectCount" VkObjectTableCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, objectCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, objectCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "objectCount" VkObjectTableCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, objectCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
-        type FieldType "pObjectEntryTypes" VkObjectTableCreateInfoNVX =
-             Ptr VkObjectEntryTypeNVX
-        type FieldOptional "pObjectEntryTypes" VkObjectTableCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pObjectEntryTypes" VkObjectTableCreateInfoNVX =
-             #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
-        type FieldIsArray "pObjectEntryTypes" VkObjectTableCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
-
-instance {-# OVERLAPPING #-}
-         HasField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
-        type FieldType "pObjectEntryCounts" VkObjectTableCreateInfoNVX =
-             Ptr Word32
-        type FieldOptional "pObjectEntryCounts" VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pObjectEntryCounts" VkObjectTableCreateInfoNVX =
-             #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
-        type FieldIsArray "pObjectEntryCounts" VkObjectTableCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX where
-        type FieldType "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX
-             = Ptr VkObjectEntryUsageFlagsNVX
-        type FieldOptional "pObjectEntryUsageFlags"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pObjectEntryUsageFlags"
-               VkObjectTableCreateInfoNVX
-             =
-             #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
-        type FieldIsArray "pObjectEntryUsageFlags"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxUniformBuffersPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        type FieldType "maxUniformBuffersPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = Word32
-        type FieldOptional "maxUniformBuffersPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxUniformBuffersPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             =
-             #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
-        type FieldIsArray "maxUniformBuffersPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxUniformBuffersPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxUniformBuffersPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxStorageBuffersPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        type FieldType "maxStorageBuffersPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = Word32
-        type FieldOptional "maxStorageBuffersPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxStorageBuffersPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             =
-             #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
-        type FieldIsArray "maxStorageBuffersPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxStorageBuffersPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxStorageBuffersPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxStorageImagesPerDescriptor" VkObjectTableCreateInfoNVX
-         where
-        type FieldType "maxStorageImagesPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = Word32
-        type FieldOptional "maxStorageImagesPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxStorageImagesPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             =
-             #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
-        type FieldIsArray "maxStorageImagesPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxStorageImagesPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxStorageImagesPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSampledImagesPerDescriptor" VkObjectTableCreateInfoNVX
-         where
-        type FieldType "maxSampledImagesPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = Word32
-        type FieldOptional "maxSampledImagesPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSampledImagesPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             =
-             #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
-        type FieldIsArray "maxSampledImagesPerDescriptor"
-               VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSampledImagesPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSampledImagesPerDescriptor"
-           VkObjectTableCreateInfoNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
-        type FieldType "maxPipelineLayouts" VkObjectTableCreateInfoNVX =
-             Word32
-        type FieldOptional "maxPipelineLayouts" VkObjectTableCreateInfoNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPipelineLayouts" VkObjectTableCreateInfoNVX =
-             #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
-        type FieldIsArray "maxPipelineLayouts" VkObjectTableCreateInfoNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
-
-instance Show VkObjectTableCreateInfoNVX where
-        showsPrec d x
-          = showString "VkObjectTableCreateInfoNVX {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "objectCount = " .
-                            showsPrec d (getField @"objectCount" x) .
-                              showString ", " .
-                                showString "pObjectEntryTypes = " .
-                                  showsPrec d (getField @"pObjectEntryTypes" x) .
-                                    showString ", " .
-                                      showString "pObjectEntryCounts = " .
-                                        showsPrec d (getField @"pObjectEntryCounts" x) .
-                                          showString ", " .
-                                            showString "pObjectEntryUsageFlags = " .
-                                              showsPrec d (getField @"pObjectEntryUsageFlags" x) .
-                                                showString ", " .
-                                                  showString "maxUniformBuffersPerDescriptor = " .
-                                                    showsPrec d
-                                                      (getField @"maxUniformBuffersPerDescriptor" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString
-                                                          "maxStorageBuffersPerDescriptor = "
-                                                          .
-                                                          showsPrec d
-                                                            (getField
-                                                               @"maxStorageBuffersPerDescriptor"
-                                                               x)
-                                                            .
-                                                            showString ", " .
-                                                              showString
-                                                                "maxStorageImagesPerDescriptor = "
-                                                                .
-                                                                showsPrec d
-                                                                  (getField
-                                                                     @"maxStorageImagesPerDescriptor"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "maxSampledImagesPerDescriptor = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"maxSampledImagesPerDescriptor"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "maxPipelineLayouts = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"maxPipelineLayouts"
-                                                                                 x)
-                                                                              . showChar '}'
-
--- | > typedef struct VkObjectTableDescriptorSetEntryNVX {
---   >     VkObjectEntryTypeNVX         type;
---   >     VkObjectEntryUsageFlagsNVX   flags;
---   >     VkPipelineLayout             pipelineLayout;
---   >     VkDescriptorSet              descriptorSet;
---   > } VkObjectTableDescriptorSetEntryNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableDescriptorSetEntryNVX VkObjectTableDescriptorSetEntryNVX registry at www.khronos.org>
-type VkObjectTableDescriptorSetEntryNVX =
-     VulkanStruct VkObjectTableDescriptorSetEntryNVX' -- ' closing tick for hsc2hs
-
-data VkObjectTableDescriptorSetEntryNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkObjectTableDescriptorSetEntryNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkObjectTableDescriptorSetEntryNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkObjectTableDescriptorSetEntryNVX where
-        sizeOf ~_ = #{size VkObjectTableDescriptorSetEntryNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkObjectTableDescriptorSetEntryNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkObjectTableDescriptorSetEntryNVX where
-        type StructFields VkObjectTableDescriptorSetEntryNVX =
-             '["type", "flags", "pipelineLayout", "descriptorSet"] -- ' closing tick for hsc2hs
-        type CUnionType VkObjectTableDescriptorSetEntryNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkObjectTableDescriptorSetEntryNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkObjectTableDescriptorSetEntryNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkObjectTableDescriptorSetEntryNVX where
-        type FieldType "type" VkObjectTableDescriptorSetEntryNVX =
-             VkObjectEntryTypeNVX
-        type FieldOptional "type" VkObjectTableDescriptorSetEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkObjectTableDescriptorSetEntryNVX =
-             #{offset VkObjectTableDescriptorSetEntryNVX, type}
-        type FieldIsArray "type" VkObjectTableDescriptorSetEntryNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableDescriptorSetEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkObjectTableDescriptorSetEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkObjectTableDescriptorSetEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkObjectTableDescriptorSetEntryNVX where
-        type FieldType "flags" VkObjectTableDescriptorSetEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-        type FieldOptional "flags" VkObjectTableDescriptorSetEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkObjectTableDescriptorSetEntryNVX =
-             #{offset VkObjectTableDescriptorSetEntryNVX, flags}
-        type FieldIsArray "flags" VkObjectTableDescriptorSetEntryNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableDescriptorSetEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkObjectTableDescriptorSetEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkObjectTableDescriptorSetEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX where
-        type FieldType "pipelineLayout" VkObjectTableDescriptorSetEntryNVX
-             = VkPipelineLayout
-        type FieldOptional "pipelineLayout"
-               VkObjectTableDescriptorSetEntryNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineLayout"
-               VkObjectTableDescriptorSetEntryNVX
-             =
-             #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
-        type FieldIsArray "pipelineLayout"
-               VkObjectTableDescriptorSetEntryNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorSet" VkObjectTableDescriptorSetEntryNVX where
-        type FieldType "descriptorSet" VkObjectTableDescriptorSetEntryNVX =
-             VkDescriptorSet
-        type FieldOptional "descriptorSet"
-               VkObjectTableDescriptorSetEntryNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorSet" VkObjectTableDescriptorSetEntryNVX
-             =
-             #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
-        type FieldIsArray "descriptorSet"
-               VkObjectTableDescriptorSetEntryNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorSet" VkObjectTableDescriptorSetEntryNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorSet" VkObjectTableDescriptorSetEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
-
-instance Show VkObjectTableDescriptorSetEntryNVX where
-        showsPrec d x
-          = showString "VkObjectTableDescriptorSetEntryNVX {" .
-              showString "type = " .
-                showsPrec d (getField @"type" x) .
-                  showString ", " .
-                    showString "flags = " .
-                      showsPrec d (getField @"flags" x) .
-                        showString ", " .
-                          showString "pipelineLayout = " .
-                            showsPrec d (getField @"pipelineLayout" x) .
-                              showString ", " .
-                                showString "descriptorSet = " .
-                                  showsPrec d (getField @"descriptorSet" x) . showChar '}'
-
--- | > typedef struct VkObjectTableEntryNVX {
---   >     VkObjectEntryTypeNVX         type;
---   >     VkObjectEntryUsageFlagsNVX   flags;
---   > } VkObjectTableEntryNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableEntryNVX VkObjectTableEntryNVX registry at www.khronos.org>
-type VkObjectTableEntryNVX = VulkanStruct VkObjectTableEntryNVX' -- ' closing tick for hsc2hs
-
-data VkObjectTableEntryNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkObjectTableEntryNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkObjectTableEntryNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkObjectTableEntryNVX where
-        sizeOf ~_ = #{size VkObjectTableEntryNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkObjectTableEntryNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkObjectTableEntryNVX where
-        type StructFields VkObjectTableEntryNVX = '["type", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkObjectTableEntryNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "type" VkObjectTableEntryNVX
-         where
-        type FieldType "type" VkObjectTableEntryNVX = VkObjectEntryTypeNVX
-        type FieldOptional "type" VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkObjectTableEntryNVX =
-             #{offset VkObjectTableEntryNVX, type}
-        type FieldIsArray "type" VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkObjectTableEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkObjectTableEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableEntryNVX, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkObjectTableEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableEntryNVX, type}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkObjectTableEntryNVX
-         where
-        type FieldType "flags" VkObjectTableEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-        type FieldOptional "flags" VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkObjectTableEntryNVX =
-             #{offset VkObjectTableEntryNVX, flags}
-        type FieldIsArray "flags" VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkObjectTableEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkObjectTableEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableEntryNVX, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkObjectTableEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableEntryNVX, flags}
-
-instance Show VkObjectTableEntryNVX where
-        showsPrec d x
-          = showString "VkObjectTableEntryNVX {" .
-              showString "type = " .
-                showsPrec d (getField @"type" x) .
-                  showString ", " .
-                    showString "flags = " .
-                      showsPrec d (getField @"flags" x) . showChar '}'
-
--- | > typedef struct VkObjectTableIndexBufferEntryNVX {
---   >     VkObjectEntryTypeNVX         type;
---   >     VkObjectEntryUsageFlagsNVX   flags;
---   >     VkBuffer                     buffer;
---   >     VkIndexType                  indexType;
---   > } VkObjectTableIndexBufferEntryNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableIndexBufferEntryNVX VkObjectTableIndexBufferEntryNVX registry at www.khronos.org>
-type VkObjectTableIndexBufferEntryNVX =
-     VulkanStruct VkObjectTableIndexBufferEntryNVX' -- ' closing tick for hsc2hs
-
-data VkObjectTableIndexBufferEntryNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkObjectTableIndexBufferEntryNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkObjectTableIndexBufferEntryNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkObjectTableIndexBufferEntryNVX where
-        sizeOf ~_ = #{size VkObjectTableIndexBufferEntryNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkObjectTableIndexBufferEntryNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkObjectTableIndexBufferEntryNVX where
-        type StructFields VkObjectTableIndexBufferEntryNVX =
-             '["type", "flags", "buffer", "indexType"] -- ' closing tick for hsc2hs
-        type CUnionType VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkObjectTableIndexBufferEntryNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkObjectTableIndexBufferEntryNVX where
-        type FieldType "type" VkObjectTableIndexBufferEntryNVX =
-             VkObjectEntryTypeNVX
-        type FieldOptional "type" VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkObjectTableIndexBufferEntryNVX =
-             #{offset VkObjectTableIndexBufferEntryNVX, type}
-        type FieldIsArray "type" VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableIndexBufferEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkObjectTableIndexBufferEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkObjectTableIndexBufferEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkObjectTableIndexBufferEntryNVX where
-        type FieldType "flags" VkObjectTableIndexBufferEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-        type FieldOptional "flags" VkObjectTableIndexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkObjectTableIndexBufferEntryNVX =
-             #{offset VkObjectTableIndexBufferEntryNVX, flags}
-        type FieldIsArray "flags" VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableIndexBufferEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkObjectTableIndexBufferEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkObjectTableIndexBufferEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkObjectTableIndexBufferEntryNVX where
-        type FieldType "buffer" VkObjectTableIndexBufferEntryNVX = VkBuffer
-        type FieldOptional "buffer" VkObjectTableIndexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkObjectTableIndexBufferEntryNVX =
-             #{offset VkObjectTableIndexBufferEntryNVX, buffer}
-        type FieldIsArray "buffer" VkObjectTableIndexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableIndexBufferEntryNVX, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkObjectTableIndexBufferEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkObjectTableIndexBufferEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "indexType" VkObjectTableIndexBufferEntryNVX where
-        type FieldType "indexType" VkObjectTableIndexBufferEntryNVX =
-             VkIndexType
-        type FieldOptional "indexType" VkObjectTableIndexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "indexType" VkObjectTableIndexBufferEntryNVX =
-             #{offset VkObjectTableIndexBufferEntryNVX, indexType}
-        type FieldIsArray "indexType" VkObjectTableIndexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableIndexBufferEntryNVX, indexType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "indexType" VkObjectTableIndexBufferEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableIndexBufferEntryNVX, indexType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableIndexBufferEntryNVX, indexType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "indexType" VkObjectTableIndexBufferEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableIndexBufferEntryNVX, indexType}
-
-instance Show VkObjectTableIndexBufferEntryNVX where
-        showsPrec d x
-          = showString "VkObjectTableIndexBufferEntryNVX {" .
-              showString "type = " .
-                showsPrec d (getField @"type" x) .
-                  showString ", " .
-                    showString "flags = " .
-                      showsPrec d (getField @"flags" x) .
-                        showString ", " .
-                          showString "buffer = " .
-                            showsPrec d (getField @"buffer" x) .
-                              showString ", " .
-                                showString "indexType = " .
-                                  showsPrec d (getField @"indexType" x) . showChar '}'
-
--- | > typedef struct VkObjectTablePipelineEntryNVX {
---   >     VkObjectEntryTypeNVX         type;
---   >     VkObjectEntryUsageFlagsNVX   flags;
---   >     VkPipeline                   pipeline;
---   > } VkObjectTablePipelineEntryNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTablePipelineEntryNVX VkObjectTablePipelineEntryNVX registry at www.khronos.org>
-type VkObjectTablePipelineEntryNVX =
-     VulkanStruct VkObjectTablePipelineEntryNVX' -- ' closing tick for hsc2hs
-
-data VkObjectTablePipelineEntryNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkObjectTablePipelineEntryNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkObjectTablePipelineEntryNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkObjectTablePipelineEntryNVX where
-        sizeOf ~_ = #{size VkObjectTablePipelineEntryNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkObjectTablePipelineEntryNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkObjectTablePipelineEntryNVX where
-        type StructFields VkObjectTablePipelineEntryNVX =
-             '["type", "flags", "pipeline"] -- ' closing tick for hsc2hs
-        type CUnionType VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkObjectTablePipelineEntryNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkObjectTablePipelineEntryNVX where
-        type FieldType "type" VkObjectTablePipelineEntryNVX =
-             VkObjectEntryTypeNVX
-        type FieldOptional "type" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkObjectTablePipelineEntryNVX =
-             #{offset VkObjectTablePipelineEntryNVX, type}
-        type FieldIsArray "type" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTablePipelineEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkObjectTablePipelineEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkObjectTablePipelineEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkObjectTablePipelineEntryNVX where
-        type FieldType "flags" VkObjectTablePipelineEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-        type FieldOptional "flags" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkObjectTablePipelineEntryNVX =
-             #{offset VkObjectTablePipelineEntryNVX, flags}
-        type FieldIsArray "flags" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTablePipelineEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkObjectTablePipelineEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkObjectTablePipelineEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipeline" VkObjectTablePipelineEntryNVX where
-        type FieldType "pipeline" VkObjectTablePipelineEntryNVX =
-             VkPipeline
-        type FieldOptional "pipeline" VkObjectTablePipelineEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipeline" VkObjectTablePipelineEntryNVX =
-             #{offset VkObjectTablePipelineEntryNVX, pipeline}
-        type FieldIsArray "pipeline" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTablePipelineEntryNVX, pipeline}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipeline" VkObjectTablePipelineEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePipelineEntryNVX, pipeline})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTablePipelineEntryNVX, pipeline}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipeline" VkObjectTablePipelineEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTablePipelineEntryNVX, pipeline}
-
-instance Show VkObjectTablePipelineEntryNVX where
-        showsPrec d x
-          = showString "VkObjectTablePipelineEntryNVX {" .
-              showString "type = " .
-                showsPrec d (getField @"type" x) .
-                  showString ", " .
-                    showString "flags = " .
-                      showsPrec d (getField @"flags" x) .
-                        showString ", " .
-                          showString "pipeline = " .
-                            showsPrec d (getField @"pipeline" x) . showChar '}'
-
--- | > typedef struct VkObjectTablePushConstantEntryNVX {
---   >     VkObjectEntryTypeNVX         type;
---   >     VkObjectEntryUsageFlagsNVX   flags;
---   >     VkPipelineLayout             pipelineLayout;
---   >     VkShaderStageFlags           stageFlags;
---   > } VkObjectTablePushConstantEntryNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTablePushConstantEntryNVX VkObjectTablePushConstantEntryNVX registry at www.khronos.org>
-type VkObjectTablePushConstantEntryNVX =
-     VulkanStruct VkObjectTablePushConstantEntryNVX' -- ' closing tick for hsc2hs
-
-data VkObjectTablePushConstantEntryNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkObjectTablePushConstantEntryNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkObjectTablePushConstantEntryNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkObjectTablePushConstantEntryNVX where
-        sizeOf ~_ = #{size VkObjectTablePushConstantEntryNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkObjectTablePushConstantEntryNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkObjectTablePushConstantEntryNVX where
-        type StructFields VkObjectTablePushConstantEntryNVX =
-             '["type", "flags", "pipelineLayout", "stageFlags"] -- ' closing tick for hsc2hs
-        type CUnionType VkObjectTablePushConstantEntryNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkObjectTablePushConstantEntryNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkObjectTablePushConstantEntryNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkObjectTablePushConstantEntryNVX where
-        type FieldType "type" VkObjectTablePushConstantEntryNVX =
-             VkObjectEntryTypeNVX
-        type FieldOptional "type" VkObjectTablePushConstantEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkObjectTablePushConstantEntryNVX =
-             #{offset VkObjectTablePushConstantEntryNVX, type}
-        type FieldIsArray "type" VkObjectTablePushConstantEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTablePushConstantEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkObjectTablePushConstantEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkObjectTablePushConstantEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkObjectTablePushConstantEntryNVX where
-        type FieldType "flags" VkObjectTablePushConstantEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-        type FieldOptional "flags" VkObjectTablePushConstantEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkObjectTablePushConstantEntryNVX =
-             #{offset VkObjectTablePushConstantEntryNVX, flags}
-        type FieldIsArray "flags" VkObjectTablePushConstantEntryNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTablePushConstantEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkObjectTablePushConstantEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkObjectTablePushConstantEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineLayout" VkObjectTablePushConstantEntryNVX where
-        type FieldType "pipelineLayout" VkObjectTablePushConstantEntryNVX =
-             VkPipelineLayout
-        type FieldOptional "pipelineLayout"
-               VkObjectTablePushConstantEntryNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineLayout" VkObjectTablePushConstantEntryNVX
-             =
-             #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
-        type FieldIsArray "pipelineLayout"
-               VkObjectTablePushConstantEntryNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineLayout" VkObjectTablePushConstantEntryNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineLayout" VkObjectTablePushConstantEntryNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
-
-instance {-# OVERLAPPING #-}
-         HasField "stageFlags" VkObjectTablePushConstantEntryNVX where
-        type FieldType "stageFlags" VkObjectTablePushConstantEntryNVX =
-             VkShaderStageFlags
-        type FieldOptional "stageFlags" VkObjectTablePushConstantEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "stageFlags" VkObjectTablePushConstantEntryNVX =
-             #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
-        type FieldIsArray "stageFlags" VkObjectTablePushConstantEntryNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stageFlags" VkObjectTablePushConstantEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTablePushConstantEntryNVX, stageFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stageFlags" VkObjectTablePushConstantEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
-
-instance Show VkObjectTablePushConstantEntryNVX where
-        showsPrec d x
-          = showString "VkObjectTablePushConstantEntryNVX {" .
-              showString "type = " .
-                showsPrec d (getField @"type" x) .
-                  showString ", " .
-                    showString "flags = " .
-                      showsPrec d (getField @"flags" x) .
-                        showString ", " .
-                          showString "pipelineLayout = " .
-                            showsPrec d (getField @"pipelineLayout" x) .
-                              showString ", " .
-                                showString "stageFlags = " .
-                                  showsPrec d (getField @"stageFlags" x) . showChar '}'
-
--- | > typedef struct VkObjectTableVertexBufferEntryNVX {
---   >     VkObjectEntryTypeNVX         type;
---   >     VkObjectEntryUsageFlagsNVX   flags;
---   >     VkBuffer                     buffer;
---   > } VkObjectTableVertexBufferEntryNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableVertexBufferEntryNVX VkObjectTableVertexBufferEntryNVX registry at www.khronos.org>
-type VkObjectTableVertexBufferEntryNVX =
-     VulkanStruct VkObjectTableVertexBufferEntryNVX' -- ' closing tick for hsc2hs
-
-data VkObjectTableVertexBufferEntryNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkObjectTableVertexBufferEntryNVX where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkObjectTableVertexBufferEntryNVX where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkObjectTableVertexBufferEntryNVX where
-        sizeOf ~_ = #{size VkObjectTableVertexBufferEntryNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkObjectTableVertexBufferEntryNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkObjectTableVertexBufferEntryNVX where
-        type StructFields VkObjectTableVertexBufferEntryNVX =
-             '["type", "flags", "buffer"] -- ' closing tick for hsc2hs
-        type CUnionType VkObjectTableVertexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkObjectTableVertexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkObjectTableVertexBufferEntryNVX = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkObjectTableVertexBufferEntryNVX where
-        type FieldType "type" VkObjectTableVertexBufferEntryNVX =
-             VkObjectEntryTypeNVX
-        type FieldOptional "type" VkObjectTableVertexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkObjectTableVertexBufferEntryNVX =
-             #{offset VkObjectTableVertexBufferEntryNVX, type}
-        type FieldIsArray "type" VkObjectTableVertexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableVertexBufferEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkObjectTableVertexBufferEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkObjectTableVertexBufferEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkObjectTableVertexBufferEntryNVX where
-        type FieldType "flags" VkObjectTableVertexBufferEntryNVX =
-             VkObjectEntryUsageFlagsNVX
-        type FieldOptional "flags" VkObjectTableVertexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkObjectTableVertexBufferEntryNVX =
-             #{offset VkObjectTableVertexBufferEntryNVX, flags}
-        type FieldIsArray "flags" VkObjectTableVertexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableVertexBufferEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkObjectTableVertexBufferEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkObjectTableVertexBufferEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkObjectTableVertexBufferEntryNVX where
-        type FieldType "buffer" VkObjectTableVertexBufferEntryNVX =
-             VkBuffer
-        type FieldOptional "buffer" VkObjectTableVertexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkObjectTableVertexBufferEntryNVX =
-             #{offset VkObjectTableVertexBufferEntryNVX, buffer}
-        type FieldIsArray "buffer" VkObjectTableVertexBufferEntryNVX =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkObjectTableVertexBufferEntryNVX, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkObjectTableVertexBufferEntryNVX where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkObjectTableVertexBufferEntryNVX, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkObjectTableVertexBufferEntryNVX, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkObjectTableVertexBufferEntryNVX where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkObjectTableVertexBufferEntryNVX, buffer}
-
-instance Show VkObjectTableVertexBufferEntryNVX where
-        showsPrec d x
-          = showString "VkObjectTableVertexBufferEntryNVX {" .
-              showString "type = " .
-                showsPrec d (getField @"type" x) .
-                  showString ", " .
-                    showString "flags = " .
-                      showsPrec d (getField @"flags" x) .
-                        showString ", " .
-                          showString "buffer = " .
-                            showsPrec d (getField @"buffer" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.ObjectTable
+       (VkObjectTableCreateInfoNVX, VkObjectTableDescriptorSetEntryNVX,
+        VkObjectTableEntryNVX, VkObjectTableIndexBufferEntryNVX,
+        VkObjectTablePipelineEntryNVX, VkObjectTablePushConstantEntryNVX,
+        VkObjectTableVertexBufferEntryNVX)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.Enum.IndexType     (VkIndexType)
+import Graphics.Vulkan.Types.Enum.Object        (VkObjectEntryTypeNVX,
+                                                 VkObjectEntryUsageFlagsNVX)
+import Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDescriptorSet,
+                                                 VkPipeline, VkPipelineLayout)
+
+-- | > typedef struct VkObjectTableCreateInfoNVX {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                                          objectCount;
+--   >     const VkObjectEntryTypeNVX*       pObjectEntryTypes;
+--   >     const uint32_t*                   pObjectEntryCounts;
+--   >     const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
+--   >     uint32_t maxUniformBuffersPerDescriptor;
+--   >     uint32_t maxStorageBuffersPerDescriptor;
+--   >     uint32_t maxStorageImagesPerDescriptor;
+--   >     uint32_t maxSampledImagesPerDescriptor;
+--   >     uint32_t maxPipelineLayouts;
+--   > } VkObjectTableCreateInfoNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableCreateInfoNVX VkObjectTableCreateInfoNVX registry at www.khronos.org>
+type VkObjectTableCreateInfoNVX =
+     VkStruct VkObjectTableCreateInfoNVX' -- ' closing tick for hsc2hs
+
+data VkObjectTableCreateInfoNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkObjectTableCreateInfoNVX where
+    type StructRep VkObjectTableCreateInfoNVX =
+         'StructMeta "VkObjectTableCreateInfoNVX" VkObjectTableCreateInfoNVX -- ' closing tick for hsc2hs
+           #{size VkObjectTableCreateInfoNVX}
+           #{alignment VkObjectTableCreateInfoNVX}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkObjectTableCreateInfoNVX, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkObjectTableCreateInfoNVX, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "objectCount" Word32 'False 
+                                                     #{offset VkObjectTableCreateInfoNVX, objectCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pObjectEntryTypes" (Ptr VkObjectEntryTypeNVX) 'False
+                #{offset VkObjectTableCreateInfoNVX, pObjectEntryTypes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pObjectEntryCounts" (Ptr Word32) 'False 
+                                                                  #{offset VkObjectTableCreateInfoNVX, pObjectEntryCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pObjectEntryUsageFlags" -- ' closing tick for hsc2hs
+                (Ptr VkObjectEntryUsageFlagsNVX)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkObjectTableCreateInfoNVX, pObjectEntryUsageFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxUniformBuffersPerDescriptor" Word32 'False
+                #{offset VkObjectTableCreateInfoNVX, maxUniformBuffersPerDescriptor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxStorageBuffersPerDescriptor" Word32 'False
+                #{offset VkObjectTableCreateInfoNVX, maxStorageBuffersPerDescriptor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxStorageImagesPerDescriptor" Word32 'False 
+                                                                       #{offset VkObjectTableCreateInfoNVX, maxStorageImagesPerDescriptor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSampledImagesPerDescriptor" Word32 'False 
+                                                                       #{offset VkObjectTableCreateInfoNVX, maxSampledImagesPerDescriptor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPipelineLayouts" Word32 'False 
+                                                            #{offset VkObjectTableCreateInfoNVX, maxPipelineLayouts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkObjectTableDescriptorSetEntryNVX {
+--   >     VkObjectEntryTypeNVX         type;
+--   >     VkObjectEntryUsageFlagsNVX   flags;
+--   >     VkPipelineLayout             pipelineLayout;
+--   >     VkDescriptorSet              descriptorSet;
+--   > } VkObjectTableDescriptorSetEntryNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableDescriptorSetEntryNVX VkObjectTableDescriptorSetEntryNVX registry at www.khronos.org>
+type VkObjectTableDescriptorSetEntryNVX =
+     VkStruct VkObjectTableDescriptorSetEntryNVX' -- ' closing tick for hsc2hs
+
+data VkObjectTableDescriptorSetEntryNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkObjectTableDescriptorSetEntryNVX where
+    type StructRep VkObjectTableDescriptorSetEntryNVX =
+         'StructMeta "VkObjectTableDescriptorSetEntryNVX" -- ' closing tick for hsc2hs
+           VkObjectTableDescriptorSetEntryNVX
+           #{size VkObjectTableDescriptorSetEntryNVX}
+           #{alignment VkObjectTableDescriptorSetEntryNVX}
+           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
+                                                            #{offset VkObjectTableDescriptorSetEntryNVX, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False 
+                                                                   #{offset VkObjectTableDescriptorSetEntryNVX, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineLayout" VkPipelineLayout 'False 
+                                                                  #{offset VkObjectTableDescriptorSetEntryNVX, pipelineLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorSet" VkDescriptorSet 'False 
+                                                                #{offset VkObjectTableDescriptorSetEntryNVX, descriptorSet}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkObjectTableEntryNVX {
+--   >     VkObjectEntryTypeNVX         type;
+--   >     VkObjectEntryUsageFlagsNVX   flags;
+--   > } VkObjectTableEntryNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableEntryNVX VkObjectTableEntryNVX registry at www.khronos.org>
+type VkObjectTableEntryNVX = VkStruct VkObjectTableEntryNVX' -- ' closing tick for hsc2hs
+
+data VkObjectTableEntryNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkObjectTableEntryNVX where
+    type StructRep VkObjectTableEntryNVX =
+         'StructMeta "VkObjectTableEntryNVX" VkObjectTableEntryNVX  -- ' closing tick for hsc2hs
+                                                                   #{size VkObjectTableEntryNVX}
+           #{alignment VkObjectTableEntryNVX}
+           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
+                                                            #{offset VkObjectTableEntryNVX, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False 
+                                                                   #{offset VkObjectTableEntryNVX, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkObjectTableIndexBufferEntryNVX {
+--   >     VkObjectEntryTypeNVX         type;
+--   >     VkObjectEntryUsageFlagsNVX   flags;
+--   >     VkBuffer                     buffer;
+--   >     VkIndexType                  indexType;
+--   > } VkObjectTableIndexBufferEntryNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableIndexBufferEntryNVX VkObjectTableIndexBufferEntryNVX registry at www.khronos.org>
+type VkObjectTableIndexBufferEntryNVX =
+     VkStruct VkObjectTableIndexBufferEntryNVX' -- ' closing tick for hsc2hs
+
+data VkObjectTableIndexBufferEntryNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkObjectTableIndexBufferEntryNVX where
+    type StructRep VkObjectTableIndexBufferEntryNVX =
+         'StructMeta "VkObjectTableIndexBufferEntryNVX" -- ' closing tick for hsc2hs
+           VkObjectTableIndexBufferEntryNVX
+           #{size VkObjectTableIndexBufferEntryNVX}
+           #{alignment VkObjectTableIndexBufferEntryNVX}
+           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
+                                                            #{offset VkObjectTableIndexBufferEntryNVX, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False 
+                                                                   #{offset VkObjectTableIndexBufferEntryNVX, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'False 
+                                                  #{offset VkObjectTableIndexBufferEntryNVX, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "indexType" VkIndexType 'False 
+                                                        #{offset VkObjectTableIndexBufferEntryNVX, indexType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkObjectTablePipelineEntryNVX {
+--   >     VkObjectEntryTypeNVX         type;
+--   >     VkObjectEntryUsageFlagsNVX   flags;
+--   >     VkPipeline                   pipeline;
+--   > } VkObjectTablePipelineEntryNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTablePipelineEntryNVX VkObjectTablePipelineEntryNVX registry at www.khronos.org>
+type VkObjectTablePipelineEntryNVX =
+     VkStruct VkObjectTablePipelineEntryNVX' -- ' closing tick for hsc2hs
+
+data VkObjectTablePipelineEntryNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkObjectTablePipelineEntryNVX where
+    type StructRep VkObjectTablePipelineEntryNVX =
+         'StructMeta "VkObjectTablePipelineEntryNVX" -- ' closing tick for hsc2hs
+           VkObjectTablePipelineEntryNVX
+           #{size VkObjectTablePipelineEntryNVX}
+           #{alignment VkObjectTablePipelineEntryNVX}
+           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
+                                                            #{offset VkObjectTablePipelineEntryNVX, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False 
+                                                                   #{offset VkObjectTablePipelineEntryNVX, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipeline" VkPipeline 'False 
+                                                      #{offset VkObjectTablePipelineEntryNVX, pipeline}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkObjectTablePushConstantEntryNVX {
+--   >     VkObjectEntryTypeNVX         type;
+--   >     VkObjectEntryUsageFlagsNVX   flags;
+--   >     VkPipelineLayout             pipelineLayout;
+--   >     VkShaderStageFlags           stageFlags;
+--   > } VkObjectTablePushConstantEntryNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTablePushConstantEntryNVX VkObjectTablePushConstantEntryNVX registry at www.khronos.org>
+type VkObjectTablePushConstantEntryNVX =
+     VkStruct VkObjectTablePushConstantEntryNVX' -- ' closing tick for hsc2hs
+
+data VkObjectTablePushConstantEntryNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkObjectTablePushConstantEntryNVX where
+    type StructRep VkObjectTablePushConstantEntryNVX =
+         'StructMeta "VkObjectTablePushConstantEntryNVX" -- ' closing tick for hsc2hs
+           VkObjectTablePushConstantEntryNVX
+           #{size VkObjectTablePushConstantEntryNVX}
+           #{alignment VkObjectTablePushConstantEntryNVX}
+           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
+                                                            #{offset VkObjectTablePushConstantEntryNVX, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False 
+                                                                   #{offset VkObjectTablePushConstantEntryNVX, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineLayout" VkPipelineLayout 'False 
+                                                                  #{offset VkObjectTablePushConstantEntryNVX, pipelineLayout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stageFlags" VkShaderStageFlags 'False 
+                                                                #{offset VkObjectTablePushConstantEntryNVX, stageFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkObjectTableVertexBufferEntryNVX {
+--   >     VkObjectEntryTypeNVX         type;
+--   >     VkObjectEntryUsageFlagsNVX   flags;
+--   >     VkBuffer                     buffer;
+--   > } VkObjectTableVertexBufferEntryNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableVertexBufferEntryNVX VkObjectTableVertexBufferEntryNVX registry at www.khronos.org>
+type VkObjectTableVertexBufferEntryNVX =
+     VkStruct VkObjectTableVertexBufferEntryNVX' -- ' closing tick for hsc2hs
+
+data VkObjectTableVertexBufferEntryNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkObjectTableVertexBufferEntryNVX where
+    type StructRep VkObjectTableVertexBufferEntryNVX =
+         'StructMeta "VkObjectTableVertexBufferEntryNVX" -- ' closing tick for hsc2hs
+           VkObjectTableVertexBufferEntryNVX
+           #{size VkObjectTableVertexBufferEntryNVX}
+           #{alignment VkObjectTableVertexBufferEntryNVX}
+           '[('FieldMeta "type" VkObjectEntryTypeNVX 'False  -- ' closing tick for hsc2hs
+                                                            #{offset VkObjectTableVertexBufferEntryNVX, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkObjectEntryUsageFlagsNVX 'False 
+                                                                   #{offset VkObjectTableVertexBufferEntryNVX, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" VkBuffer 'False 
+                                                  #{offset VkObjectTableVertexBufferEntryNVX, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Offset.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Offset.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Offset.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Offset.hsc
@@ -2,17 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Offset
-       (VkOffset2D, VkOffset2D', VkOffset3D, VkOffset3D') where
-import Foreign.Storable                 (Storable (..))
+module Graphics.Vulkan.Types.Struct.Offset (VkOffset2D, VkOffset3D)
+       where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkOffset2D {
 --   >     int32_t        x;
@@ -20,99 +16,27 @@
 --   > } VkOffset2D;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkOffset2D VkOffset2D registry at www.khronos.org>
-type VkOffset2D = VulkanStruct VkOffset2D' -- ' closing tick for hsc2hs
+type VkOffset2D = VkStruct VkOffset2D' -- ' closing tick for hsc2hs
 
 data VkOffset2D' -- ' closing tick for hsc2hs
 
-instance Eq VkOffset2D where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkOffset2D where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkOffset2D where
-        sizeOf ~_ = #{size VkOffset2D}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkOffset2D}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkOffset2D where
-        type StructFields VkOffset2D = '["x", "y"] -- ' closing tick for hsc2hs
-        type CUnionType VkOffset2D = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkOffset2D = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkOffset2D = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "x" VkOffset2D where
-        type FieldType "x" VkOffset2D = Int32
-        type FieldOptional "x" VkOffset2D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "x" VkOffset2D =
-             #{offset VkOffset2D, x}
-        type FieldIsArray "x" VkOffset2D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkOffset2D, x}
-
-instance {-# OVERLAPPING #-} CanReadField "x" VkOffset2D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset2D, x})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkOffset2D, x}
-
-instance {-# OVERLAPPING #-} CanWriteField "x" VkOffset2D where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkOffset2D, x}
-
-instance {-# OVERLAPPING #-} HasField "y" VkOffset2D where
-        type FieldType "y" VkOffset2D = Int32
-        type FieldOptional "y" VkOffset2D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "y" VkOffset2D =
-             #{offset VkOffset2D, y}
-        type FieldIsArray "y" VkOffset2D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkOffset2D, y}
-
-instance {-# OVERLAPPING #-} CanReadField "y" VkOffset2D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset2D, y})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkOffset2D, y}
-
-instance {-# OVERLAPPING #-} CanWriteField "y" VkOffset2D where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkOffset2D, y}
-
-instance Show VkOffset2D where
-        showsPrec d x
-          = showString "VkOffset2D {" .
-              showString "x = " .
-                showsPrec d (getField @"x" x) .
-                  showString ", " .
-                    showString "y = " . showsPrec d (getField @"y" x) . showChar '}'
+    type StructRep VkOffset2D =
+         'StructMeta "VkOffset2D" VkOffset2D  -- ' closing tick for hsc2hs
+                                             #{size VkOffset2D}
+           #{alignment VkOffset2D}
+           '[('FieldMeta "x" Int32 'False  -- ' closing tick for hsc2hs
+                                          #{offset VkOffset2D, x}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "y" Int32 'False 
+                                          #{offset VkOffset2D, y} 1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkOffset3D {
 --   >     int32_t        x;
@@ -121,125 +45,28 @@
 --   > } VkOffset3D;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkOffset3D VkOffset3D registry at www.khronos.org>
-type VkOffset3D = VulkanStruct VkOffset3D' -- ' closing tick for hsc2hs
+type VkOffset3D = VkStruct VkOffset3D' -- ' closing tick for hsc2hs
 
 data VkOffset3D' -- ' closing tick for hsc2hs
 
-instance Eq VkOffset3D where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkOffset3D where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkOffset3D where
-        sizeOf ~_ = #{size VkOffset3D}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkOffset3D}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkOffset3D where
-        type StructFields VkOffset3D = '["x", "y", "z"] -- ' closing tick for hsc2hs
-        type CUnionType VkOffset3D = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkOffset3D = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkOffset3D = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "x" VkOffset3D where
-        type FieldType "x" VkOffset3D = Int32
-        type FieldOptional "x" VkOffset3D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "x" VkOffset3D =
-             #{offset VkOffset3D, x}
-        type FieldIsArray "x" VkOffset3D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkOffset3D, x}
-
-instance {-# OVERLAPPING #-} CanReadField "x" VkOffset3D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset3D, x})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkOffset3D, x}
-
-instance {-# OVERLAPPING #-} CanWriteField "x" VkOffset3D where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkOffset3D, x}
-
-instance {-# OVERLAPPING #-} HasField "y" VkOffset3D where
-        type FieldType "y" VkOffset3D = Int32
-        type FieldOptional "y" VkOffset3D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "y" VkOffset3D =
-             #{offset VkOffset3D, y}
-        type FieldIsArray "y" VkOffset3D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkOffset3D, y}
-
-instance {-# OVERLAPPING #-} CanReadField "y" VkOffset3D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset3D, y})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkOffset3D, y}
-
-instance {-# OVERLAPPING #-} CanWriteField "y" VkOffset3D where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkOffset3D, y}
-
-instance {-# OVERLAPPING #-} HasField "z" VkOffset3D where
-        type FieldType "z" VkOffset3D = Int32
-        type FieldOptional "z" VkOffset3D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "z" VkOffset3D =
-             #{offset VkOffset3D, z}
-        type FieldIsArray "z" VkOffset3D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkOffset3D, z}
-
-instance {-# OVERLAPPING #-} CanReadField "z" VkOffset3D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkOffset3D, z})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkOffset3D, z}
-
-instance {-# OVERLAPPING #-} CanWriteField "z" VkOffset3D where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkOffset3D, z}
-
-instance Show VkOffset3D where
-        showsPrec d x
-          = showString "VkOffset3D {" .
-              showString "x = " .
-                showsPrec d (getField @"x" x) .
-                  showString ", " .
-                    showString "y = " .
-                      showsPrec d (getField @"y" x) .
-                        showString ", " .
-                          showString "z = " . showsPrec d (getField @"z" x) . showChar '}'
+    type StructRep VkOffset3D =
+         'StructMeta "VkOffset3D" VkOffset3D  -- ' closing tick for hsc2hs
+                                             #{size VkOffset3D}
+           #{alignment VkOffset3D}
+           '[('FieldMeta "x" Int32 'False  -- ' closing tick for hsc2hs
+                                          #{offset VkOffset3D, x}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "y" Int32 'False 
+                                          #{offset VkOffset3D, y} 1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "z" Int32 'False 
+                                          #{offset VkOffset3D, z} 1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PastPresentationTimingGOOGLE.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PastPresentationTimingGOOGLE.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PastPresentationTimingGOOGLE.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PastPresentationTimingGOOGLE.hsc
@@ -2,18 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PastPresentationTimingGOOGLE
-       (VkPastPresentationTimingGOOGLE, VkPastPresentationTimingGOOGLE') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                 (Storable (..))
+       (VkPastPresentationTimingGOOGLE) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPastPresentationTimingGOOGLE {
 --   >     uint32_t                         presentID;
@@ -25,248 +20,41 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPastPresentationTimingGOOGLE VkPastPresentationTimingGOOGLE registry at www.khronos.org>
 type VkPastPresentationTimingGOOGLE =
-     VulkanStruct VkPastPresentationTimingGOOGLE' -- ' closing tick for hsc2hs
+     VkStruct VkPastPresentationTimingGOOGLE' -- ' closing tick for hsc2hs
 
 data VkPastPresentationTimingGOOGLE' -- ' closing tick for hsc2hs
 
-instance Eq VkPastPresentationTimingGOOGLE where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPastPresentationTimingGOOGLE where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPastPresentationTimingGOOGLE where
-        sizeOf ~_ = #{size VkPastPresentationTimingGOOGLE}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPastPresentationTimingGOOGLE}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkPastPresentationTimingGOOGLE where
-        type StructFields VkPastPresentationTimingGOOGLE =
-             '["presentID", "desiredPresentTime", "actualPresentTime", -- ' closing tick for hsc2hs
-               "earliestPresentTime", "presentMargin"]
-        type CUnionType VkPastPresentationTimingGOOGLE = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPastPresentationTimingGOOGLE = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPastPresentationTimingGOOGLE = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "presentID" VkPastPresentationTimingGOOGLE where
-        type FieldType "presentID" VkPastPresentationTimingGOOGLE = Word32
-        type FieldOptional "presentID" VkPastPresentationTimingGOOGLE =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "presentID" VkPastPresentationTimingGOOGLE =
-             #{offset VkPastPresentationTimingGOOGLE, presentID}
-        type FieldIsArray "presentID" VkPastPresentationTimingGOOGLE =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPastPresentationTimingGOOGLE, presentID}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "presentID" VkPastPresentationTimingGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, presentID})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, presentID}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "presentID" VkPastPresentationTimingGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, presentID}
-
-instance {-# OVERLAPPING #-}
-         HasField "desiredPresentTime" VkPastPresentationTimingGOOGLE where
-        type FieldType "desiredPresentTime" VkPastPresentationTimingGOOGLE
-             = Word64
-        type FieldOptional "desiredPresentTime"
-               VkPastPresentationTimingGOOGLE
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "desiredPresentTime"
-               VkPastPresentationTimingGOOGLE
-             =
-             #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
-        type FieldIsArray "desiredPresentTime"
-               VkPastPresentationTimingGOOGLE
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "desiredPresentTime" VkPastPresentationTimingGOOGLE
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "desiredPresentTime" VkPastPresentationTimingGOOGLE
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
-
-instance {-# OVERLAPPING #-}
-         HasField "actualPresentTime" VkPastPresentationTimingGOOGLE where
-        type FieldType "actualPresentTime" VkPastPresentationTimingGOOGLE =
-             Word64
-        type FieldOptional "actualPresentTime"
-               VkPastPresentationTimingGOOGLE
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "actualPresentTime" VkPastPresentationTimingGOOGLE
-             =
-             #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
-        type FieldIsArray "actualPresentTime"
-               VkPastPresentationTimingGOOGLE
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "actualPresentTime" VkPastPresentationTimingGOOGLE
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, actualPresentTime})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "actualPresentTime" VkPastPresentationTimingGOOGLE
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
-
-instance {-# OVERLAPPING #-}
-         HasField "earliestPresentTime" VkPastPresentationTimingGOOGLE where
-        type FieldType "earliestPresentTime" VkPastPresentationTimingGOOGLE
-             = Word64
-        type FieldOptional "earliestPresentTime"
-               VkPastPresentationTimingGOOGLE
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "earliestPresentTime"
-               VkPastPresentationTimingGOOGLE
-             =
-             #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
-        type FieldIsArray "earliestPresentTime"
-               VkPastPresentationTimingGOOGLE
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "earliestPresentTime" VkPastPresentationTimingGOOGLE
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "earliestPresentTime" VkPastPresentationTimingGOOGLE
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
-
-instance {-# OVERLAPPING #-}
-         HasField "presentMargin" VkPastPresentationTimingGOOGLE where
-        type FieldType "presentMargin" VkPastPresentationTimingGOOGLE =
-             Word64
-        type FieldOptional "presentMargin" VkPastPresentationTimingGOOGLE =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "presentMargin" VkPastPresentationTimingGOOGLE =
-             #{offset VkPastPresentationTimingGOOGLE, presentMargin}
-        type FieldIsArray "presentMargin" VkPastPresentationTimingGOOGLE =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPastPresentationTimingGOOGLE, presentMargin}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "presentMargin" VkPastPresentationTimingGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPastPresentationTimingGOOGLE, presentMargin})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPastPresentationTimingGOOGLE, presentMargin}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "presentMargin" VkPastPresentationTimingGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPastPresentationTimingGOOGLE, presentMargin}
-
-instance Show VkPastPresentationTimingGOOGLE where
-        showsPrec d x
-          = showString "VkPastPresentationTimingGOOGLE {" .
-              showString "presentID = " .
-                showsPrec d (getField @"presentID" x) .
-                  showString ", " .
-                    showString "desiredPresentTime = " .
-                      showsPrec d (getField @"desiredPresentTime" x) .
-                        showString ", " .
-                          showString "actualPresentTime = " .
-                            showsPrec d (getField @"actualPresentTime" x) .
-                              showString ", " .
-                                showString "earliestPresentTime = " .
-                                  showsPrec d (getField @"earliestPresentTime" x) .
-                                    showString ", " .
-                                      showString "presentMargin = " .
-                                        showsPrec d (getField @"presentMargin" x) . showChar '}'
+    type StructRep VkPastPresentationTimingGOOGLE =
+         'StructMeta "VkPastPresentationTimingGOOGLE" -- ' closing tick for hsc2hs
+           VkPastPresentationTimingGOOGLE
+           #{size VkPastPresentationTimingGOOGLE}
+           #{alignment VkPastPresentationTimingGOOGLE}
+           '[('FieldMeta "presentID" Word32 'False  -- ' closing tick for hsc2hs
+                                                   #{offset VkPastPresentationTimingGOOGLE, presentID}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "desiredPresentTime" Word64 'False 
+                                                            #{offset VkPastPresentationTimingGOOGLE, desiredPresentTime}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "actualPresentTime" Word64 'False 
+                                                           #{offset VkPastPresentationTimingGOOGLE, actualPresentTime}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "earliestPresentTime" Word64 'False 
+                                                             #{offset VkPastPresentationTimingGOOGLE, earliestPresentTime}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "presentMargin" Word64 'False 
+                                                       #{offset VkPastPresentationTimingGOOGLE, presentMargin}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDevice.hsc
@@ -1,19013 +1,3049 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.PhysicalDevice
-       (VkPhysicalDevice16BitStorageFeatures,
-        VkPhysicalDevice16BitStorageFeatures', -- ' closing tick for hsc2hs
-        VkPhysicalDevice16BitStorageFeaturesKHR,
-        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
-        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
-        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
-        VkPhysicalDeviceConservativeRasterizationPropertiesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
-        VkPhysicalDeviceDescriptorIndexingFeaturesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
-        VkPhysicalDeviceDescriptorIndexingPropertiesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
-        VkPhysicalDeviceDiscardRectanglePropertiesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceExternalBufferInfo,
-        VkPhysicalDeviceExternalBufferInfo', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceExternalBufferInfoKHR,
-        VkPhysicalDeviceExternalFenceInfo,
-        VkPhysicalDeviceExternalFenceInfo', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceExternalFenceInfoKHR,
-        VkPhysicalDeviceExternalImageFormatInfo,
-        VkPhysicalDeviceExternalImageFormatInfo', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceExternalImageFormatInfoKHR,
-        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
-        VkPhysicalDeviceExternalMemoryHostPropertiesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceExternalSemaphoreInfo,
-        VkPhysicalDeviceExternalSemaphoreInfo', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceExternalSemaphoreInfoKHR,
-        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceFeatures2KHR, VkPhysicalDeviceGroupProperties,
-        VkPhysicalDeviceGroupProperties', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceGroupPropertiesKHR, VkPhysicalDeviceIDProperties,
-        VkPhysicalDeviceIDProperties', VkPhysicalDeviceIDPropertiesKHR, -- ' closing tick for hsc2hs
-        VkPhysicalDeviceImageFormatInfo2,
-        VkPhysicalDeviceImageFormatInfo2', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceImageFormatInfo2KHR, VkPhysicalDeviceLimits,
-        VkPhysicalDeviceLimits', VkPhysicalDeviceMaintenance3Properties, -- ' closing tick for hsc2hs
-        VkPhysicalDeviceMaintenance3Properties', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceMaintenance3PropertiesKHR,
-        VkPhysicalDeviceMemoryProperties,
-        VkPhysicalDeviceMemoryProperties', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceMemoryProperties2,
-        VkPhysicalDeviceMemoryProperties2', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceMemoryProperties2KHR,
-        VkPhysicalDeviceMultiviewFeatures,
-        VkPhysicalDeviceMultiviewFeatures', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceMultiviewFeaturesKHR,
-        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
-        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceMultiviewProperties,
-        VkPhysicalDeviceMultiviewProperties', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceMultiviewPropertiesKHR,
-        VkPhysicalDevicePointClippingProperties,
-        VkPhysicalDevicePointClippingProperties', -- ' closing tick for hsc2hs
-        VkPhysicalDevicePointClippingPropertiesKHR,
-        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceProperties2, VkPhysicalDeviceProperties2', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceProperties2KHR,
-        VkPhysicalDeviceProtectedMemoryFeatures,
-        VkPhysicalDeviceProtectedMemoryFeatures', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceProtectedMemoryProperties,
-        VkPhysicalDeviceProtectedMemoryProperties', -- ' closing tick for hsc2hs
-        VkPhysicalDevicePushDescriptorPropertiesKHR,
-        VkPhysicalDevicePushDescriptorPropertiesKHR', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceSampleLocationsPropertiesEXT,
-        VkPhysicalDeviceSampleLocationsPropertiesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
-        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
-        VkPhysicalDeviceSamplerYcbcrConversionFeatures', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
-        VkPhysicalDeviceShaderCorePropertiesAMD,
-        VkPhysicalDeviceShaderCorePropertiesAMD', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceShaderDrawParameterFeatures,
-        VkPhysicalDeviceShaderDrawParameterFeatures', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceSparseImageFormatInfo2,
-        VkPhysicalDeviceSparseImageFormatInfo2', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceSparseImageFormatInfo2KHR,
-        VkPhysicalDeviceSparseProperties,
-        VkPhysicalDeviceSparseProperties', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceSubgroupProperties,
-        VkPhysicalDeviceSubgroupProperties', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceSurfaceInfo2KHR, VkPhysicalDeviceSurfaceInfo2KHR', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceVariablePointerFeatures,
-        VkPhysicalDeviceVariablePointerFeatures', -- ' closing tick for hsc2hs
-        VkPhysicalDeviceVariablePointerFeaturesKHR,
-        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT,
-        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                    (Storable (..))
-import Graphics.Vulkan.Constants                           (VK_LUID_SIZE,
-                                                            pattern VK_LUID_SIZE,
-                                                            VK_MAX_DEVICE_GROUP_SIZE,
-                                                            pattern VK_MAX_DEVICE_GROUP_SIZE,
-                                                            VK_MAX_MEMORY_HEAPS,
-                                                            pattern VK_MAX_MEMORY_HEAPS,
-                                                            VK_MAX_MEMORY_TYPES,
-                                                            pattern VK_MAX_MEMORY_TYPES,
-                                                            VK_MAX_PHYSICAL_DEVICE_NAME_SIZE,
-                                                            pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE,
-                                                            VK_UUID_SIZE,
-                                                            pattern VK_UUID_SIZE)
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes                     (VkBool32,
-                                                            VkDeviceSize)
-import Graphics.Vulkan.Types.Enum.Buffer                   (VkBufferCreateFlags,
-                                                            VkBufferUsageFlags)
-import Graphics.Vulkan.Types.Enum.External                 (VkExternalFenceHandleTypeFlagBits,
-                                                            VkExternalMemoryHandleTypeFlagBits,
-                                                            VkExternalSemaphoreHandleTypeFlagBits)
-import Graphics.Vulkan.Types.Enum.Format                   (VkFormat)
-import Graphics.Vulkan.Types.Enum.Image                    (VkImageCreateFlags,
-                                                            VkImageTiling,
-                                                            VkImageType,
-                                                            VkImageUsageFlags)
-import Graphics.Vulkan.Types.Enum.PhysicalDeviceType       (VkPhysicalDeviceType)
-import Graphics.Vulkan.Types.Enum.PointClippingBehavior    (VkPointClippingBehavior)
-import Graphics.Vulkan.Types.Enum.SampleCountFlags         (VkSampleCountFlagBits,
-                                                            VkSampleCountFlags)
-import Graphics.Vulkan.Types.Enum.Shader                   (VkShaderStageFlags)
-import Graphics.Vulkan.Types.Enum.StructureType            (VkStructureType)
-import Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags     (VkSubgroupFeatureFlags)
-import Graphics.Vulkan.Types.Handles                       (VkPhysicalDevice,
-                                                            VkSurfaceKHR)
-import Graphics.Vulkan.Types.Struct.Device                 (VkDeviceCreateInfo)
-import Graphics.Vulkan.Types.Struct.Extent                 (VkExtent2D)
-import Graphics.Vulkan.Types.Struct.Memory                 (VkMemoryHeap,
-                                                            VkMemoryType)
-import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
-import System.IO.Unsafe                                    (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDevice16BitStorageFeatures {
---   >     VkStructureType sType;
---   >     void*      pNext;
---   >     VkBool32                         storageBuffer16BitAccess;
---   >     VkBool32                         uniformAndStorageBuffer16BitAccess;
---   >     VkBool32                         storagePushConstant16;
---   >     VkBool32                         storageInputOutput16;
---   > } VkPhysicalDevice16BitStorageFeatures;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeatures registry at www.khronos.org>
-type VkPhysicalDevice16BitStorageFeatures =
-     VulkanStruct VkPhysicalDevice16BitStorageFeatures' -- ' closing tick for hsc2hs
-
-data VkPhysicalDevice16BitStorageFeatures' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDevice16BitStorageFeatures where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDevice16BitStorageFeatures where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDevice16BitStorageFeatures where
-        sizeOf ~_
-          = #{size VkPhysicalDevice16BitStorageFeatures}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDevice16BitStorageFeatures}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDevice16BitStorageFeatures where
-        type StructFields VkPhysicalDevice16BitStorageFeatures =
-             '["sType", "pNext", "storageBuffer16BitAccess", -- ' closing tick for hsc2hs
-               "uniformAndStorageBuffer16BitAccess", "storagePushConstant16",
-               "storageInputOutput16"]
-        type CUnionType VkPhysicalDevice16BitStorageFeatures = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDevice16BitStorageFeatures = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDevice16BitStorageFeatures =
-             '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDevice16BitStorageFeatures where
-        type FieldType "sType" VkPhysicalDevice16BitStorageFeatures =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDevice16BitStorageFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDevice16BitStorageFeatures =
-             #{offset VkPhysicalDevice16BitStorageFeatures, sType}
-        type FieldIsArray "sType" VkPhysicalDevice16BitStorageFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDevice16BitStorageFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeatures, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDevice16BitStorageFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDevice16BitStorageFeatures where
-        type FieldType "pNext" VkPhysicalDevice16BitStorageFeatures =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDevice16BitStorageFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDevice16BitStorageFeatures =
-             #{offset VkPhysicalDevice16BitStorageFeatures, pNext}
-        type FieldIsArray "pNext" VkPhysicalDevice16BitStorageFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDevice16BitStorageFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeatures, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDevice16BitStorageFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "storageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        type FieldType "storageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeatures
-             = VkBool32
-        type FieldOptional "storageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "storageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeatures
-             =
-             #{offset VkPhysicalDevice16BitStorageFeatures, storageBuffer16BitAccess}
-        type FieldIsArray "storageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeatures, storageBuffer16BitAccess}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "storageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeatures, storageBuffer16BitAccess})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, storageBuffer16BitAccess}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "storageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, storageBuffer16BitAccess}
-
-instance {-# OVERLAPPING #-}
-         HasField "uniformAndStorageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        type FieldType "uniformAndStorageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeatures
-             = VkBool32
-        type FieldOptional "uniformAndStorageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "uniformAndStorageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeatures
-             =
-             #{offset VkPhysicalDevice16BitStorageFeatures, uniformAndStorageBuffer16BitAccess}
-        type FieldIsArray "uniformAndStorageBuffer16BitAccess"
-               VkPhysicalDevice16BitStorageFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeatures, uniformAndStorageBuffer16BitAccess}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "uniformAndStorageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeatures, uniformAndStorageBuffer16BitAccess})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, uniformAndStorageBuffer16BitAccess}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "uniformAndStorageBuffer16BitAccess"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, uniformAndStorageBuffer16BitAccess}
-
-instance {-# OVERLAPPING #-}
-         HasField "storagePushConstant16"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        type FieldType "storagePushConstant16"
-               VkPhysicalDevice16BitStorageFeatures
-             = VkBool32
-        type FieldOptional "storagePushConstant16"
-               VkPhysicalDevice16BitStorageFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "storagePushConstant16"
-               VkPhysicalDevice16BitStorageFeatures
-             =
-             #{offset VkPhysicalDevice16BitStorageFeatures, storagePushConstant16}
-        type FieldIsArray "storagePushConstant16"
-               VkPhysicalDevice16BitStorageFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeatures, storagePushConstant16}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "storagePushConstant16"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeatures, storagePushConstant16})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, storagePushConstant16}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "storagePushConstant16"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, storagePushConstant16}
-
-instance {-# OVERLAPPING #-}
-         HasField "storageInputOutput16"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        type FieldType "storageInputOutput16"
-               VkPhysicalDevice16BitStorageFeatures
-             = VkBool32
-        type FieldOptional "storageInputOutput16"
-               VkPhysicalDevice16BitStorageFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "storageInputOutput16"
-               VkPhysicalDevice16BitStorageFeatures
-             =
-             #{offset VkPhysicalDevice16BitStorageFeatures, storageInputOutput16}
-        type FieldIsArray "storageInputOutput16"
-               VkPhysicalDevice16BitStorageFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevice16BitStorageFeatures, storageInputOutput16}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "storageInputOutput16"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevice16BitStorageFeatures, storageInputOutput16})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, storageInputOutput16}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "storageInputOutput16"
-           VkPhysicalDevice16BitStorageFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevice16BitStorageFeatures, storageInputOutput16}
-
-instance Show VkPhysicalDevice16BitStorageFeatures where
-        showsPrec d x
-          = showString "VkPhysicalDevice16BitStorageFeatures {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "storageBuffer16BitAccess = " .
-                            showsPrec d (getField @"storageBuffer16BitAccess" x) .
-                              showString ", " .
-                                showString "uniformAndStorageBuffer16BitAccess = " .
-                                  showsPrec d (getField @"uniformAndStorageBuffer16BitAccess" x) .
-                                    showString ", " .
-                                      showString "storagePushConstant16 = " .
-                                        showsPrec d (getField @"storagePushConstant16" x) .
-                                          showString ", " .
-                                            showString "storageInputOutput16 = " .
-                                              showsPrec d (getField @"storageInputOutput16" x) .
-                                                showChar '}'
-
--- | Alias for `VkPhysicalDevice16BitStorageFeatures`
-type VkPhysicalDevice16BitStorageFeaturesKHR =
-     VkPhysicalDevice16BitStorageFeatures
-
--- | > typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         advancedBlendCoherentOperations;
---   > } VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT registry at www.khronos.org>
-type VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT =
-     VulkanStruct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        type StructFields VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = '["sType", "pNext", "advancedBlendCoherentOperations"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = '[VkPhysicalDeviceFeatures2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "advancedBlendCoherentOperations"
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        type FieldType "advancedBlendCoherentOperations"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = VkBool32
-        type FieldOptional "advancedBlendCoherentOperations"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "advancedBlendCoherentOperations"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
-        type FieldIsArray "advancedBlendCoherentOperations"
-               VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "advancedBlendCoherentOperations"
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "advancedBlendCoherentOperations"
-           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
-
-instance Show VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
-         where
-        showsPrec d x
-          = showString "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "advancedBlendCoherentOperations = " .
-                            showsPrec d (getField @"advancedBlendCoherentOperations" x) .
-                              showChar '}'
-
--- | > typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         advancedBlendMaxColorAttachments;
---   >     VkBool32                         advancedBlendIndependentBlend;
---   >     VkBool32                         advancedBlendNonPremultipliedSrcColor;
---   >     VkBool32                         advancedBlendNonPremultipliedDstColor;
---   >     VkBool32                         advancedBlendCorrelatedOverlap;
---   >     VkBool32                         advancedBlendAllOperations;
---   > } VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT registry at www.khronos.org>
-type VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT =
-     VulkanStruct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type StructFields
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             '["sType", "pNext", "advancedBlendMaxColorAttachments", -- ' closing tick for hsc2hs
-               "advancedBlendIndependentBlend",
-               "advancedBlendNonPremultipliedSrcColor",
-               "advancedBlendNonPremultipliedDstColor",
-               "advancedBlendCorrelatedOverlap", "advancedBlendAllOperations"]
-        type CUnionType VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'True -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "advancedBlendMaxColorAttachments"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type FieldType "advancedBlendMaxColorAttachments"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = Word32
-        type FieldOptional "advancedBlendMaxColorAttachments"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "advancedBlendMaxColorAttachments"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
-        type FieldIsArray "advancedBlendMaxColorAttachments"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "advancedBlendMaxColorAttachments"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "advancedBlendMaxColorAttachments"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "advancedBlendIndependentBlend"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type FieldType "advancedBlendIndependentBlend"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-        type FieldOptional "advancedBlendIndependentBlend"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "advancedBlendIndependentBlend"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
-        type FieldIsArray "advancedBlendIndependentBlend"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "advancedBlendIndependentBlend"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "advancedBlendIndependentBlend"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
-
-instance {-# OVERLAPPING #-}
-         HasField "advancedBlendNonPremultipliedSrcColor"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type FieldType "advancedBlendNonPremultipliedSrcColor"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-        type FieldOptional "advancedBlendNonPremultipliedSrcColor"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "advancedBlendNonPremultipliedSrcColor"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
-        type FieldIsArray "advancedBlendNonPremultipliedSrcColor"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "advancedBlendNonPremultipliedSrcColor"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "advancedBlendNonPremultipliedSrcColor"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
-
-instance {-# OVERLAPPING #-}
-         HasField "advancedBlendNonPremultipliedDstColor"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type FieldType "advancedBlendNonPremultipliedDstColor"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-        type FieldOptional "advancedBlendNonPremultipliedDstColor"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "advancedBlendNonPremultipliedDstColor"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
-        type FieldIsArray "advancedBlendNonPremultipliedDstColor"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "advancedBlendNonPremultipliedDstColor"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "advancedBlendNonPremultipliedDstColor"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
-
-instance {-# OVERLAPPING #-}
-         HasField "advancedBlendCorrelatedOverlap"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type FieldType "advancedBlendCorrelatedOverlap"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-        type FieldOptional "advancedBlendCorrelatedOverlap"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "advancedBlendCorrelatedOverlap"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
-        type FieldIsArray "advancedBlendCorrelatedOverlap"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "advancedBlendCorrelatedOverlap"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "advancedBlendCorrelatedOverlap"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
-
-instance {-# OVERLAPPING #-}
-         HasField "advancedBlendAllOperations"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        type FieldType "advancedBlendAllOperations"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = VkBool32
-        type FieldOptional "advancedBlendAllOperations"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "advancedBlendAllOperations"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
-        type FieldIsArray "advancedBlendAllOperations"
-               VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "advancedBlendAllOperations"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "advancedBlendAllOperations"
-           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
-
-instance Show VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
-         where
-        showsPrec d x
-          = showString
-              "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "advancedBlendMaxColorAttachments = " .
-                            showsPrec d (getField @"advancedBlendMaxColorAttachments" x) .
-                              showString ", " .
-                                showString "advancedBlendIndependentBlend = " .
-                                  showsPrec d (getField @"advancedBlendIndependentBlend" x) .
-                                    showString ", " .
-                                      showString "advancedBlendNonPremultipliedSrcColor = " .
-                                        showsPrec d
-                                          (getField @"advancedBlendNonPremultipliedSrcColor" x)
-                                          .
-                                          showString ", " .
-                                            showString "advancedBlendNonPremultipliedDstColor = " .
-                                              showsPrec d
-                                                (getField @"advancedBlendNonPremultipliedDstColor"
-                                                   x)
-                                                .
-                                                showString ", " .
-                                                  showString "advancedBlendCorrelatedOverlap = " .
-                                                    showsPrec d
-                                                      (getField @"advancedBlendCorrelatedOverlap" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "advancedBlendAllOperations = " .
-                                                          showsPrec d
-                                                            (getField @"advancedBlendAllOperations"
-                                                               x)
-                                                            . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
---   >     VkStructureType sType;
---   >     void*                  pNext;
---   >     float                  primitiveOverestimationSize;
---   >     float                  maxExtraPrimitiveOverestimationSize;
---   >     float                  extraPrimitiveOverestimationSizeGranularity;
---   >     VkBool32               primitiveUnderestimation;
---   >     VkBool32               conservativePointAndLineRasterization;
---   >     VkBool32               degenerateTrianglesRasterized;
---   >     VkBool32               degenerateLinesRasterized;
---   >     VkBool32               fullyCoveredFragmentShaderInputVariable;
---   >     VkBool32               conservativeRasterizationPostDepthCoverage;
---   > } VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceConservativeRasterizationPropertiesEXT VkPhysicalDeviceConservativeRasterizationPropertiesEXT registry at www.khronos.org>
-type VkPhysicalDeviceConservativeRasterizationPropertiesEXT =
-     VulkanStruct
-       VkPhysicalDeviceConservativeRasterizationPropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceConservativeRasterizationPropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceConservativeRasterizationPropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceConservativeRasterizationPropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type StructFields
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             '["sType", "pNext", "primitiveOverestimationSize", -- ' closing tick for hsc2hs
-               "maxExtraPrimitiveOverestimationSize",
-               "extraPrimitiveOverestimationSizeGranularity",
-               "primitiveUnderestimation",
-               "conservativePointAndLineRasterization",
-               "degenerateTrianglesRasterized", "degenerateLinesRasterized",
-               "fullyCoveredFragmentShaderInputVariable",
-               "conservativeRasterizationPostDepthCoverage"]
-        type CUnionType
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "primitiveOverestimationSize"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "primitiveOverestimationSize"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = #{type float}
-        type FieldOptional "primitiveOverestimationSize"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "primitiveOverestimationSize"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
-        type FieldIsArray "primitiveOverestimationSize"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "primitiveOverestimationSize"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "primitiveOverestimationSize"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxExtraPrimitiveOverestimationSize"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "maxExtraPrimitiveOverestimationSize"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = #{type float}
-        type FieldOptional "maxExtraPrimitiveOverestimationSize"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxExtraPrimitiveOverestimationSize"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
-        type FieldIsArray "maxExtraPrimitiveOverestimationSize"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxExtraPrimitiveOverestimationSize"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxExtraPrimitiveOverestimationSize"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "extraPrimitiveOverestimationSizeGranularity"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "extraPrimitiveOverestimationSizeGranularity"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = #{type float}
-        type FieldOptional "extraPrimitiveOverestimationSizeGranularity"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extraPrimitiveOverestimationSizeGranularity"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
-        type FieldIsArray "extraPrimitiveOverestimationSizeGranularity"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "extraPrimitiveOverestimationSizeGranularity"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "extraPrimitiveOverestimationSizeGranularity"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
-
-instance {-# OVERLAPPING #-}
-         HasField "primitiveUnderestimation"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "primitiveUnderestimation"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-        type FieldOptional "primitiveUnderestimation"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "primitiveUnderestimation"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
-        type FieldIsArray "primitiveUnderestimation"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "primitiveUnderestimation"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "primitiveUnderestimation"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
-
-instance {-# OVERLAPPING #-}
-         HasField "conservativePointAndLineRasterization"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "conservativePointAndLineRasterization"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-        type FieldOptional "conservativePointAndLineRasterization"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "conservativePointAndLineRasterization"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
-        type FieldIsArray "conservativePointAndLineRasterization"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "conservativePointAndLineRasterization"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "conservativePointAndLineRasterization"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
-
-instance {-# OVERLAPPING #-}
-         HasField "degenerateTrianglesRasterized"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "degenerateTrianglesRasterized"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-        type FieldOptional "degenerateTrianglesRasterized"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "degenerateTrianglesRasterized"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
-        type FieldIsArray "degenerateTrianglesRasterized"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "degenerateTrianglesRasterized"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "degenerateTrianglesRasterized"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
-
-instance {-# OVERLAPPING #-}
-         HasField "degenerateLinesRasterized"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "degenerateLinesRasterized"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-        type FieldOptional "degenerateLinesRasterized"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "degenerateLinesRasterized"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
-        type FieldIsArray "degenerateLinesRasterized"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "degenerateLinesRasterized"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "degenerateLinesRasterized"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
-
-instance {-# OVERLAPPING #-}
-         HasField "fullyCoveredFragmentShaderInputVariable"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "fullyCoveredFragmentShaderInputVariable"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-        type FieldOptional "fullyCoveredFragmentShaderInputVariable"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fullyCoveredFragmentShaderInputVariable"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
-        type FieldIsArray "fullyCoveredFragmentShaderInputVariable"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fullyCoveredFragmentShaderInputVariable"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fullyCoveredFragmentShaderInputVariable"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
-
-instance {-# OVERLAPPING #-}
-         HasField "conservativeRasterizationPostDepthCoverage"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        type FieldType "conservativeRasterizationPostDepthCoverage"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = VkBool32
-        type FieldOptional "conservativeRasterizationPostDepthCoverage"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "conservativeRasterizationPostDepthCoverage"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
-        type FieldIsArray "conservativeRasterizationPostDepthCoverage"
-               VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "conservativeRasterizationPostDepthCoverage"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "conservativeRasterizationPostDepthCoverage"
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
-
-instance Show
-           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
-         where
-        showsPrec d x
-          = showString
-              "VkPhysicalDeviceConservativeRasterizationPropertiesEXT {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "primitiveOverestimationSize = " .
-                            showsPrec d (getField @"primitiveOverestimationSize" x) .
-                              showString ", " .
-                                showString "maxExtraPrimitiveOverestimationSize = " .
-                                  showsPrec d (getField @"maxExtraPrimitiveOverestimationSize" x) .
-                                    showString ", " .
-                                      showString "extraPrimitiveOverestimationSizeGranularity = " .
-                                        showsPrec d
-                                          (getField @"extraPrimitiveOverestimationSizeGranularity"
-                                             x)
-                                          .
-                                          showString ", " .
-                                            showString "primitiveUnderestimation = " .
-                                              showsPrec d (getField @"primitiveUnderestimation" x) .
-                                                showString ", " .
-                                                  showString
-                                                    "conservativePointAndLineRasterization = "
-                                                    .
-                                                    showsPrec d
-                                                      (getField
-                                                         @"conservativePointAndLineRasterization"
-                                                         x)
-                                                      .
-                                                      showString ", " .
-                                                        showString
-                                                          "degenerateTrianglesRasterized = "
-                                                          .
-                                                          showsPrec d
-                                                            (getField
-                                                               @"degenerateTrianglesRasterized"
-                                                               x)
-                                                            .
-                                                            showString ", " .
-                                                              showString
-                                                                "degenerateLinesRasterized = "
-                                                                .
-                                                                showsPrec d
-                                                                  (getField
-                                                                     @"degenerateLinesRasterized"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "fullyCoveredFragmentShaderInputVariable = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"fullyCoveredFragmentShaderInputVariable"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "conservativeRasterizationPostDepthCoverage = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"conservativeRasterizationPostDepthCoverage"
-                                                                                 x)
-                                                                              . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32               shaderInputAttachmentArrayDynamicIndexing;
---   >     VkBool32               shaderUniformTexelBufferArrayDynamicIndexing;
---   >     VkBool32               shaderStorageTexelBufferArrayDynamicIndexing;
---   >     VkBool32               shaderUniformBufferArrayNonUniformIndexing;
---   >     VkBool32               shaderSampledImageArrayNonUniformIndexing;
---   >     VkBool32               shaderStorageBufferArrayNonUniformIndexing;
---   >     VkBool32               shaderStorageImageArrayNonUniformIndexing;
---   >     VkBool32               shaderInputAttachmentArrayNonUniformIndexing;
---   >     VkBool32               shaderUniformTexelBufferArrayNonUniformIndexing;
---   >     VkBool32               shaderStorageTexelBufferArrayNonUniformIndexing;
---   >     VkBool32               descriptorBindingUniformBufferUpdateAfterBind;
---   >     VkBool32               descriptorBindingSampledImageUpdateAfterBind;
---   >     VkBool32               descriptorBindingStorageImageUpdateAfterBind;
---   >     VkBool32               descriptorBindingStorageBufferUpdateAfterBind;
---   >     VkBool32               descriptorBindingUniformTexelBufferUpdateAfterBind;
---   >     VkBool32               descriptorBindingStorageTexelBufferUpdateAfterBind;
---   >     VkBool32               descriptorBindingUpdateUnusedWhilePending;
---   >     VkBool32               descriptorBindingPartiallyBound;
---   >     VkBool32               descriptorBindingVariableDescriptorCount;
---   >     VkBool32               runtimeDescriptorArray;
---   > } VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceDescriptorIndexingFeaturesEXT VkPhysicalDeviceDescriptorIndexingFeaturesEXT registry at www.khronos.org>
-type VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
-     VulkanStruct VkPhysicalDeviceDescriptorIndexingFeaturesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceDescriptorIndexingFeaturesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceDescriptorIndexingFeaturesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceDescriptorIndexingFeaturesEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceDescriptorIndexingFeaturesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceDescriptorIndexingFeaturesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type StructFields VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
-             '["sType", "pNext", "shaderInputAttachmentArrayDynamicIndexing", -- ' closing tick for hsc2hs
-               "shaderUniformTexelBufferArrayDynamicIndexing",
-               "shaderStorageTexelBufferArrayDynamicIndexing",
-               "shaderUniformBufferArrayNonUniformIndexing",
-               "shaderSampledImageArrayNonUniformIndexing",
-               "shaderStorageBufferArrayNonUniformIndexing",
-               "shaderStorageImageArrayNonUniformIndexing",
-               "shaderInputAttachmentArrayNonUniformIndexing",
-               "shaderUniformTexelBufferArrayNonUniformIndexing",
-               "shaderStorageTexelBufferArrayNonUniformIndexing",
-               "descriptorBindingUniformBufferUpdateAfterBind",
-               "descriptorBindingSampledImageUpdateAfterBind",
-               "descriptorBindingStorageImageUpdateAfterBind",
-               "descriptorBindingStorageBufferUpdateAfterBind",
-               "descriptorBindingUniformTexelBufferUpdateAfterBind",
-               "descriptorBindingStorageTexelBufferUpdateAfterBind",
-               "descriptorBindingUpdateUnusedWhilePending",
-               "descriptorBindingPartiallyBound",
-               "descriptorBindingVariableDescriptorCount",
-               "runtimeDescriptorArray"]
-        type CUnionType VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
-             '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderInputAttachmentArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderInputAttachmentArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "shaderInputAttachmentArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderInputAttachmentArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayDynamicIndexing}
-        type FieldIsArray "shaderInputAttachmentArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderInputAttachmentArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayDynamicIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderInputAttachmentArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderUniformTexelBufferArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderUniformTexelBufferArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "shaderUniformTexelBufferArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderUniformTexelBufferArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayDynamicIndexing}
-        type FieldIsArray "shaderUniformTexelBufferArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderUniformTexelBufferArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayDynamicIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderUniformTexelBufferArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageTexelBufferArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderStorageTexelBufferArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "shaderStorageTexelBufferArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageTexelBufferArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayDynamicIndexing}
-        type FieldIsArray "shaderStorageTexelBufferArrayDynamicIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageTexelBufferArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayDynamicIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageTexelBufferArrayDynamicIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderUniformBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderUniformBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "shaderUniformBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderUniformBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformBufferArrayNonUniformIndexing}
-        type FieldIsArray "shaderUniformBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderUniformBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformBufferArrayNonUniformIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderUniformBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderSampledImageArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderSampledImageArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "shaderSampledImageArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderSampledImageArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderSampledImageArrayNonUniformIndexing}
-        type FieldIsArray "shaderSampledImageArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderSampledImageArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderSampledImageArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderSampledImageArrayNonUniformIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderSampledImageArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderSampledImageArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderSampledImageArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderStorageBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "shaderStorageBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageBufferArrayNonUniformIndexing}
-        type FieldIsArray "shaderStorageBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageBufferArrayNonUniformIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageImageArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderStorageImageArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "shaderStorageImageArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageImageArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageImageArrayNonUniformIndexing}
-        type FieldIsArray "shaderStorageImageArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageImageArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageImageArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageImageArrayNonUniformIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageImageArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageImageArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageImageArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderInputAttachmentArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderInputAttachmentArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "shaderInputAttachmentArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderInputAttachmentArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayNonUniformIndexing}
-        type FieldIsArray "shaderInputAttachmentArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderInputAttachmentArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayNonUniformIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderInputAttachmentArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderUniformTexelBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderUniformTexelBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional
-               "shaderUniformTexelBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderUniformTexelBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayNonUniformIndexing}
-        type FieldIsArray "shaderUniformTexelBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderUniformTexelBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayNonUniformIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderUniformTexelBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageTexelBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "shaderStorageTexelBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional
-               "shaderStorageTexelBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageTexelBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayNonUniformIndexing}
-        type FieldIsArray "shaderStorageTexelBufferArrayNonUniformIndexing"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageTexelBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayNonUniformIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageTexelBufferArrayNonUniformIndexing"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayNonUniformIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingUniformBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingUniformBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "descriptorBindingUniformBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorBindingUniformBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformBufferUpdateAfterBind}
-        type FieldIsArray "descriptorBindingUniformBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingUniformBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformBufferUpdateAfterBind})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingUniformBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingSampledImageUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingSampledImageUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "descriptorBindingSampledImageUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorBindingSampledImageUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingSampledImageUpdateAfterBind}
-        type FieldIsArray "descriptorBindingSampledImageUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingSampledImageUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingSampledImageUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingSampledImageUpdateAfterBind})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingSampledImageUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingSampledImageUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingSampledImageUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingStorageImageUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingStorageImageUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "descriptorBindingStorageImageUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorBindingStorageImageUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageImageUpdateAfterBind}
-        type FieldIsArray "descriptorBindingStorageImageUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageImageUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingStorageImageUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageImageUpdateAfterBind})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageImageUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingStorageImageUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageImageUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingStorageBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingStorageBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "descriptorBindingStorageBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorBindingStorageBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageBufferUpdateAfterBind}
-        type FieldIsArray "descriptorBindingStorageBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingStorageBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageBufferUpdateAfterBind})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingStorageBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingUniformTexelBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingUniformTexelBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional
-               "descriptorBindingUniformTexelBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "descriptorBindingUniformTexelBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformTexelBufferUpdateAfterBind}
-        type FieldIsArray
-               "descriptorBindingUniformTexelBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformTexelBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingUniformTexelBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformTexelBufferUpdateAfterBind})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformTexelBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingUniformTexelBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformTexelBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingStorageTexelBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingStorageTexelBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional
-               "descriptorBindingStorageTexelBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "descriptorBindingStorageTexelBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageTexelBufferUpdateAfterBind}
-        type FieldIsArray
-               "descriptorBindingStorageTexelBufferUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageTexelBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingStorageTexelBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageTexelBufferUpdateAfterBind})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageTexelBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingStorageTexelBufferUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageTexelBufferUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingUpdateUnusedWhilePending"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingUpdateUnusedWhilePending"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "descriptorBindingUpdateUnusedWhilePending"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorBindingUpdateUnusedWhilePending"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUpdateUnusedWhilePending}
-        type FieldIsArray "descriptorBindingUpdateUnusedWhilePending"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUpdateUnusedWhilePending}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingUpdateUnusedWhilePending"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUpdateUnusedWhilePending})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUpdateUnusedWhilePending}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingUpdateUnusedWhilePending"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUpdateUnusedWhilePending}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingPartiallyBound"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingPartiallyBound"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "descriptorBindingPartiallyBound"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorBindingPartiallyBound"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingPartiallyBound}
-        type FieldIsArray "descriptorBindingPartiallyBound"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingPartiallyBound}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingPartiallyBound"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingPartiallyBound})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingPartiallyBound}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingPartiallyBound"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingPartiallyBound}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorBindingVariableDescriptorCount"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "descriptorBindingVariableDescriptorCount"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "descriptorBindingVariableDescriptorCount"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorBindingVariableDescriptorCount"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingVariableDescriptorCount}
-        type FieldIsArray "descriptorBindingVariableDescriptorCount"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingVariableDescriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorBindingVariableDescriptorCount"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingVariableDescriptorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingVariableDescriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorBindingVariableDescriptorCount"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingVariableDescriptorCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "runtimeDescriptorArray"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        type FieldType "runtimeDescriptorArray"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = VkBool32
-        type FieldOptional "runtimeDescriptorArray"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "runtimeDescriptorArray"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, runtimeDescriptorArray}
-        type FieldIsArray "runtimeDescriptorArray"
-               VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, runtimeDescriptorArray}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "runtimeDescriptorArray"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, runtimeDescriptorArray})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, runtimeDescriptorArray}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "runtimeDescriptorArray"
-           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, runtimeDescriptorArray}
-
-instance Show VkPhysicalDeviceDescriptorIndexingFeaturesEXT where
-        showsPrec d x
-          = showString "VkPhysicalDeviceDescriptorIndexingFeaturesEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "shaderInputAttachmentArrayDynamicIndexing = " .
-                            showsPrec d
-                              (getField @"shaderInputAttachmentArrayDynamicIndexing" x)
-                              .
-                              showString ", " .
-                                showString "shaderUniformTexelBufferArrayDynamicIndexing = " .
-                                  showsPrec d
-                                    (getField @"shaderUniformTexelBufferArrayDynamicIndexing" x)
-                                    .
-                                    showString ", " .
-                                      showString "shaderStorageTexelBufferArrayDynamicIndexing = " .
-                                        showsPrec d
-                                          (getField @"shaderStorageTexelBufferArrayDynamicIndexing"
-                                             x)
-                                          .
-                                          showString ", " .
-                                            showString
-                                              "shaderUniformBufferArrayNonUniformIndexing = "
-                                              .
-                                              showsPrec d
-                                                (getField
-                                                   @"shaderUniformBufferArrayNonUniformIndexing"
-                                                   x)
-                                                .
-                                                showString ", " .
-                                                  showString
-                                                    "shaderSampledImageArrayNonUniformIndexing = "
-                                                    .
-                                                    showsPrec d
-                                                      (getField
-                                                         @"shaderSampledImageArrayNonUniformIndexing"
-                                                         x)
-                                                      .
-                                                      showString ", " .
-                                                        showString
-                                                          "shaderStorageBufferArrayNonUniformIndexing = "
-                                                          .
-                                                          showsPrec d
-                                                            (getField
-                                                               @"shaderStorageBufferArrayNonUniformIndexing"
-                                                               x)
-                                                            .
-                                                            showString ", " .
-                                                              showString
-                                                                "shaderStorageImageArrayNonUniformIndexing = "
-                                                                .
-                                                                showsPrec d
-                                                                  (getField
-                                                                     @"shaderStorageImageArrayNonUniformIndexing"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "shaderInputAttachmentArrayNonUniformIndexing = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"shaderInputAttachmentArrayNonUniformIndexing"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "shaderUniformTexelBufferArrayNonUniformIndexing = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"shaderUniformTexelBufferArrayNonUniformIndexing"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "shaderStorageTexelBufferArrayNonUniformIndexing = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"shaderStorageTexelBufferArrayNonUniformIndexing"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "descriptorBindingUniformBufferUpdateAfterBind = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"descriptorBindingUniformBufferUpdateAfterBind"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "descriptorBindingSampledImageUpdateAfterBind = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"descriptorBindingSampledImageUpdateAfterBind"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "descriptorBindingStorageImageUpdateAfterBind = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"descriptorBindingStorageImageUpdateAfterBind"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "descriptorBindingStorageBufferUpdateAfterBind = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (getField
-                                                                                                               @"descriptorBindingStorageBufferUpdateAfterBind"
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "descriptorBindingUniformTexelBufferUpdateAfterBind = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (getField
-                                                                                                                     @"descriptorBindingUniformTexelBufferUpdateAfterBind"
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "descriptorBindingStorageTexelBufferUpdateAfterBind = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (getField
-                                                                                                                           @"descriptorBindingStorageTexelBufferUpdateAfterBind"
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showString
-                                                                                                                          ", "
-                                                                                                                          .
-                                                                                                                          showString
-                                                                                                                            "descriptorBindingUpdateUnusedWhilePending = "
-                                                                                                                            .
-                                                                                                                            showsPrec
-                                                                                                                              d
-                                                                                                                              (getField
-                                                                                                                                 @"descriptorBindingUpdateUnusedWhilePending"
-                                                                                                                                 x)
-                                                                                                                              .
-                                                                                                                              showString
-                                                                                                                                ", "
-                                                                                                                                .
-                                                                                                                                showString
-                                                                                                                                  "descriptorBindingPartiallyBound = "
-                                                                                                                                  .
-                                                                                                                                  showsPrec
-                                                                                                                                    d
-                                                                                                                                    (getField
-                                                                                                                                       @"descriptorBindingPartiallyBound"
-                                                                                                                                       x)
-                                                                                                                                    .
-                                                                                                                                    showString
-                                                                                                                                      ", "
-                                                                                                                                      .
-                                                                                                                                      showString
-                                                                                                                                        "descriptorBindingVariableDescriptorCount = "
-                                                                                                                                        .
-                                                                                                                                        showsPrec
-                                                                                                                                          d
-                                                                                                                                          (getField
-                                                                                                                                             @"descriptorBindingVariableDescriptorCount"
-                                                                                                                                             x)
-                                                                                                                                          .
-                                                                                                                                          showString
-                                                                                                                                            ", "
-                                                                                                                                            .
-                                                                                                                                            showString
-                                                                                                                                              "runtimeDescriptorArray = "
-                                                                                                                                              .
-                                                                                                                                              showsPrec
-                                                                                                                                                d
-                                                                                                                                                (getField
-                                                                                                                                                   @"runtimeDescriptorArray"
-                                                                                                                                                   x)
-                                                                                                                                                .
-                                                                                                                                                showChar
-                                                                                                                                                  '}'
-
--- | > typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t               maxUpdateAfterBindDescriptorsInAllPools;
---   >     VkBool32               shaderUniformBufferArrayNonUniformIndexingNative;
---   >     VkBool32               shaderSampledImageArrayNonUniformIndexingNative;
---   >     VkBool32               shaderStorageBufferArrayNonUniformIndexingNative;
---   >     VkBool32               shaderStorageImageArrayNonUniformIndexingNative;
---   >     VkBool32               shaderInputAttachmentArrayNonUniformIndexingNative;
---   >     VkBool32               robustBufferAccessUpdateAfterBind;
---   >     VkBool32               quadDivergentImplicitLod;
---   >     uint32_t               maxPerStageDescriptorUpdateAfterBindSamplers;
---   >     uint32_t               maxPerStageDescriptorUpdateAfterBindUniformBuffers;
---   >     uint32_t               maxPerStageDescriptorUpdateAfterBindStorageBuffers;
---   >     uint32_t               maxPerStageDescriptorUpdateAfterBindSampledImages;
---   >     uint32_t               maxPerStageDescriptorUpdateAfterBindStorageImages;
---   >     uint32_t               maxPerStageDescriptorUpdateAfterBindInputAttachments;
---   >     uint32_t               maxPerStageUpdateAfterBindResources;
---   >     uint32_t               maxDescriptorSetUpdateAfterBindSamplers;
---   >     uint32_t               maxDescriptorSetUpdateAfterBindUniformBuffers;
---   >     uint32_t               maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
---   >     uint32_t               maxDescriptorSetUpdateAfterBindStorageBuffers;
---   >     uint32_t               maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
---   >     uint32_t               maxDescriptorSetUpdateAfterBindSampledImages;
---   >     uint32_t               maxDescriptorSetUpdateAfterBindStorageImages;
---   >     uint32_t               maxDescriptorSetUpdateAfterBindInputAttachments;
---   > } VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceDescriptorIndexingPropertiesEXT VkPhysicalDeviceDescriptorIndexingPropertiesEXT registry at www.khronos.org>
-type VkPhysicalDeviceDescriptorIndexingPropertiesEXT =
-     VulkanStruct VkPhysicalDeviceDescriptorIndexingPropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceDescriptorIndexingPropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceDescriptorIndexingPropertiesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceDescriptorIndexingPropertiesEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceDescriptorIndexingPropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceDescriptorIndexingPropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type StructFields VkPhysicalDeviceDescriptorIndexingPropertiesEXT =
-             '["sType", "pNext", "maxUpdateAfterBindDescriptorsInAllPools", -- ' closing tick for hsc2hs
-               "shaderUniformBufferArrayNonUniformIndexingNative",
-               "shaderSampledImageArrayNonUniformIndexingNative",
-               "shaderStorageBufferArrayNonUniformIndexingNative",
-               "shaderStorageImageArrayNonUniformIndexingNative",
-               "shaderInputAttachmentArrayNonUniformIndexingNative",
-               "robustBufferAccessUpdateAfterBind", "quadDivergentImplicitLod",
-               "maxPerStageDescriptorUpdateAfterBindSamplers",
-               "maxPerStageDescriptorUpdateAfterBindUniformBuffers",
-               "maxPerStageDescriptorUpdateAfterBindStorageBuffers",
-               "maxPerStageDescriptorUpdateAfterBindSampledImages",
-               "maxPerStageDescriptorUpdateAfterBindStorageImages",
-               "maxPerStageDescriptorUpdateAfterBindInputAttachments",
-               "maxPerStageUpdateAfterBindResources",
-               "maxDescriptorSetUpdateAfterBindSamplers",
-               "maxDescriptorSetUpdateAfterBindUniformBuffers",
-               "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic",
-               "maxDescriptorSetUpdateAfterBindStorageBuffers",
-               "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic",
-               "maxDescriptorSetUpdateAfterBindSampledImages",
-               "maxDescriptorSetUpdateAfterBindStorageImages",
-               "maxDescriptorSetUpdateAfterBindInputAttachments"]
-        type CUnionType VkPhysicalDeviceDescriptorIndexingPropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceDescriptorIndexingPropertiesEXT =
-             'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxUpdateAfterBindDescriptorsInAllPools"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxUpdateAfterBindDescriptorsInAllPools"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional "maxUpdateAfterBindDescriptorsInAllPools"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxUpdateAfterBindDescriptorsInAllPools"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxUpdateAfterBindDescriptorsInAllPools}
-        type FieldIsArray "maxUpdateAfterBindDescriptorsInAllPools"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxUpdateAfterBindDescriptorsInAllPools}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxUpdateAfterBindDescriptorsInAllPools"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxUpdateAfterBindDescriptorsInAllPools})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxUpdateAfterBindDescriptorsInAllPools}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxUpdateAfterBindDescriptorsInAllPools"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxUpdateAfterBindDescriptorsInAllPools}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderUniformBufferArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "shaderUniformBufferArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = VkBool32
-        type FieldOptional
-               "shaderUniformBufferArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderUniformBufferArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderUniformBufferArrayNonUniformIndexingNative}
-        type FieldIsArray
-               "shaderUniformBufferArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderUniformBufferArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderUniformBufferArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderUniformBufferArrayNonUniformIndexingNative})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderUniformBufferArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderUniformBufferArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderUniformBufferArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderSampledImageArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "shaderSampledImageArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = VkBool32
-        type FieldOptional
-               "shaderSampledImageArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderSampledImageArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderSampledImageArrayNonUniformIndexingNative}
-        type FieldIsArray "shaderSampledImageArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderSampledImageArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderSampledImageArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderSampledImageArrayNonUniformIndexingNative})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderSampledImageArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderSampledImageArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderSampledImageArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageBufferArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "shaderStorageBufferArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = VkBool32
-        type FieldOptional
-               "shaderStorageBufferArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageBufferArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageBufferArrayNonUniformIndexingNative}
-        type FieldIsArray
-               "shaderStorageBufferArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageBufferArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageBufferArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageBufferArrayNonUniformIndexingNative})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageBufferArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageBufferArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageBufferArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageImageArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "shaderStorageImageArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = VkBool32
-        type FieldOptional
-               "shaderStorageImageArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageImageArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageImageArrayNonUniformIndexingNative}
-        type FieldIsArray "shaderStorageImageArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageImageArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageImageArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageImageArrayNonUniformIndexingNative})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageImageArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageImageArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageImageArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderInputAttachmentArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "shaderInputAttachmentArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = VkBool32
-        type FieldOptional
-               "shaderInputAttachmentArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "shaderInputAttachmentArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderInputAttachmentArrayNonUniformIndexingNative}
-        type FieldIsArray
-               "shaderInputAttachmentArrayNonUniformIndexingNative"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderInputAttachmentArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderInputAttachmentArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderInputAttachmentArrayNonUniformIndexingNative})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderInputAttachmentArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderInputAttachmentArrayNonUniformIndexingNative"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderInputAttachmentArrayNonUniformIndexingNative}
-
-instance {-# OVERLAPPING #-}
-         HasField "robustBufferAccessUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "robustBufferAccessUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = VkBool32
-        type FieldOptional "robustBufferAccessUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "robustBufferAccessUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, robustBufferAccessUpdateAfterBind}
-        type FieldIsArray "robustBufferAccessUpdateAfterBind"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, robustBufferAccessUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "robustBufferAccessUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, robustBufferAccessUpdateAfterBind})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, robustBufferAccessUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "robustBufferAccessUpdateAfterBind"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, robustBufferAccessUpdateAfterBind}
-
-instance {-# OVERLAPPING #-}
-         HasField "quadDivergentImplicitLod"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "quadDivergentImplicitLod"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = VkBool32
-        type FieldOptional "quadDivergentImplicitLod"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "quadDivergentImplicitLod"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, quadDivergentImplicitLod}
-        type FieldIsArray "quadDivergentImplicitLod"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, quadDivergentImplicitLod}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "quadDivergentImplicitLod"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, quadDivergentImplicitLod})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, quadDivergentImplicitLod}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "quadDivergentImplicitLod"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, quadDivergentImplicitLod}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorUpdateAfterBindSamplers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxPerStageDescriptorUpdateAfterBindSamplers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional "maxPerStageDescriptorUpdateAfterBindSamplers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageDescriptorUpdateAfterBindSamplers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSamplers}
-        type FieldIsArray "maxPerStageDescriptorUpdateAfterBindSamplers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorUpdateAfterBindSamplers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSamplers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorUpdateAfterBindSamplers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSamplers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorUpdateAfterBindUniformBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxPerStageDescriptorUpdateAfterBindUniformBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional
-               "maxPerStageDescriptorUpdateAfterBindUniformBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "maxPerStageDescriptorUpdateAfterBindUniformBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindUniformBuffers}
-        type FieldIsArray
-               "maxPerStageDescriptorUpdateAfterBindUniformBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorUpdateAfterBindUniformBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindUniformBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorUpdateAfterBindUniformBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorUpdateAfterBindStorageBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxPerStageDescriptorUpdateAfterBindStorageBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional
-               "maxPerStageDescriptorUpdateAfterBindStorageBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "maxPerStageDescriptorUpdateAfterBindStorageBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageBuffers}
-        type FieldIsArray
-               "maxPerStageDescriptorUpdateAfterBindStorageBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorUpdateAfterBindStorageBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorUpdateAfterBindStorageBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorUpdateAfterBindSampledImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxPerStageDescriptorUpdateAfterBindSampledImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional
-               "maxPerStageDescriptorUpdateAfterBindSampledImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "maxPerStageDescriptorUpdateAfterBindSampledImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSampledImages}
-        type FieldIsArray
-               "maxPerStageDescriptorUpdateAfterBindSampledImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSampledImages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorUpdateAfterBindSampledImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSampledImages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSampledImages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorUpdateAfterBindSampledImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSampledImages}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorUpdateAfterBindStorageImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxPerStageDescriptorUpdateAfterBindStorageImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional
-               "maxPerStageDescriptorUpdateAfterBindStorageImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "maxPerStageDescriptorUpdateAfterBindStorageImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageImages}
-        type FieldIsArray
-               "maxPerStageDescriptorUpdateAfterBindStorageImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageImages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorUpdateAfterBindStorageImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageImages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageImages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorUpdateAfterBindStorageImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageImages}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorUpdateAfterBindInputAttachments"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType
-               "maxPerStageDescriptorUpdateAfterBindInputAttachments"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional
-               "maxPerStageDescriptorUpdateAfterBindInputAttachments"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "maxPerStageDescriptorUpdateAfterBindInputAttachments"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindInputAttachments}
-        type FieldIsArray
-               "maxPerStageDescriptorUpdateAfterBindInputAttachments"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorUpdateAfterBindInputAttachments"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindInputAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField
-           "maxPerStageDescriptorUpdateAfterBindInputAttachments"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageUpdateAfterBindResources"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxPerStageUpdateAfterBindResources"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional "maxPerStageUpdateAfterBindResources"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageUpdateAfterBindResources"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageUpdateAfterBindResources}
-        type FieldIsArray "maxPerStageUpdateAfterBindResources"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageUpdateAfterBindResources}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageUpdateAfterBindResources"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageUpdateAfterBindResources})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageUpdateAfterBindResources}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageUpdateAfterBindResources"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageUpdateAfterBindResources}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUpdateAfterBindSamplers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxDescriptorSetUpdateAfterBindSamplers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional "maxDescriptorSetUpdateAfterBindSamplers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetUpdateAfterBindSamplers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSamplers}
-        type FieldIsArray "maxDescriptorSetUpdateAfterBindSamplers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUpdateAfterBindSamplers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSamplers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetUpdateAfterBindSamplers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSamplers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUpdateAfterBindUniformBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxDescriptorSetUpdateAfterBindUniformBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional "maxDescriptorSetUpdateAfterBindUniformBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetUpdateAfterBindUniformBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffers}
-        type FieldIsArray "maxDescriptorSetUpdateAfterBindUniformBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUpdateAfterBindUniformBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetUpdateAfterBindUniformBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType
-               "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional
-               "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic}
-        type FieldIsArray
-               "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField
-           "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUpdateAfterBindStorageBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxDescriptorSetUpdateAfterBindStorageBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional "maxDescriptorSetUpdateAfterBindStorageBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetUpdateAfterBindStorageBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffers}
-        type FieldIsArray "maxDescriptorSetUpdateAfterBindStorageBuffers"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUpdateAfterBindStorageBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetUpdateAfterBindStorageBuffers"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType
-               "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional
-               "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset
-               "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic}
-        type FieldIsArray
-               "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField
-           "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUpdateAfterBindSampledImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxDescriptorSetUpdateAfterBindSampledImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional "maxDescriptorSetUpdateAfterBindSampledImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetUpdateAfterBindSampledImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSampledImages}
-        type FieldIsArray "maxDescriptorSetUpdateAfterBindSampledImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSampledImages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUpdateAfterBindSampledImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSampledImages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSampledImages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetUpdateAfterBindSampledImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSampledImages}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUpdateAfterBindStorageImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxDescriptorSetUpdateAfterBindStorageImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional "maxDescriptorSetUpdateAfterBindStorageImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetUpdateAfterBindStorageImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageImages}
-        type FieldIsArray "maxDescriptorSetUpdateAfterBindStorageImages"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageImages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUpdateAfterBindStorageImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageImages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageImages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetUpdateAfterBindStorageImages"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageImages}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUpdateAfterBindInputAttachments"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        type FieldType "maxDescriptorSetUpdateAfterBindInputAttachments"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = Word32
-        type FieldOptional
-               "maxDescriptorSetUpdateAfterBindInputAttachments"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetUpdateAfterBindInputAttachments"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindInputAttachments}
-        type FieldIsArray "maxDescriptorSetUpdateAfterBindInputAttachments"
-               VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUpdateAfterBindInputAttachments"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindInputAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetUpdateAfterBindInputAttachments"
-           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindInputAttachments}
-
-instance Show VkPhysicalDeviceDescriptorIndexingPropertiesEXT where
-        showsPrec d x
-          = showString "VkPhysicalDeviceDescriptorIndexingPropertiesEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxUpdateAfterBindDescriptorsInAllPools = " .
-                            showsPrec d (getField @"maxUpdateAfterBindDescriptorsInAllPools" x)
-                              .
-                              showString ", " .
-                                showString "shaderUniformBufferArrayNonUniformIndexingNative = " .
-                                  showsPrec d
-                                    (getField @"shaderUniformBufferArrayNonUniformIndexingNative" x)
-                                    .
-                                    showString ", " .
-                                      showString
-                                        "shaderSampledImageArrayNonUniformIndexingNative = "
-                                        .
-                                        showsPrec d
-                                          (getField
-                                             @"shaderSampledImageArrayNonUniformIndexingNative"
-                                             x)
-                                          .
-                                          showString ", " .
-                                            showString
-                                              "shaderStorageBufferArrayNonUniformIndexingNative = "
-                                              .
-                                              showsPrec d
-                                                (getField
-                                                   @"shaderStorageBufferArrayNonUniformIndexingNative"
-                                                   x)
-                                                .
-                                                showString ", " .
-                                                  showString
-                                                    "shaderStorageImageArrayNonUniformIndexingNative = "
-                                                    .
-                                                    showsPrec d
-                                                      (getField
-                                                         @"shaderStorageImageArrayNonUniformIndexingNative"
-                                                         x)
-                                                      .
-                                                      showString ", " .
-                                                        showString
-                                                          "shaderInputAttachmentArrayNonUniformIndexingNative = "
-                                                          .
-                                                          showsPrec d
-                                                            (getField
-                                                               @"shaderInputAttachmentArrayNonUniformIndexingNative"
-                                                               x)
-                                                            .
-                                                            showString ", " .
-                                                              showString
-                                                                "robustBufferAccessUpdateAfterBind = "
-                                                                .
-                                                                showsPrec d
-                                                                  (getField
-                                                                     @"robustBufferAccessUpdateAfterBind"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "quadDivergentImplicitLod = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"quadDivergentImplicitLod"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "maxPerStageDescriptorUpdateAfterBindSamplers = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"maxPerStageDescriptorUpdateAfterBindSamplers"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "maxPerStageDescriptorUpdateAfterBindUniformBuffers = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"maxPerStageDescriptorUpdateAfterBindUniformBuffers"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "maxPerStageDescriptorUpdateAfterBindStorageBuffers = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"maxPerStageDescriptorUpdateAfterBindStorageBuffers"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "maxPerStageDescriptorUpdateAfterBindSampledImages = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"maxPerStageDescriptorUpdateAfterBindSampledImages"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "maxPerStageDescriptorUpdateAfterBindStorageImages = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"maxPerStageDescriptorUpdateAfterBindStorageImages"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "maxPerStageDescriptorUpdateAfterBindInputAttachments = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (getField
-                                                                                                               @"maxPerStageDescriptorUpdateAfterBindInputAttachments"
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "maxPerStageUpdateAfterBindResources = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (getField
-                                                                                                                     @"maxPerStageUpdateAfterBindResources"
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "maxDescriptorSetUpdateAfterBindSamplers = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (getField
-                                                                                                                           @"maxDescriptorSetUpdateAfterBindSamplers"
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showString
-                                                                                                                          ", "
-                                                                                                                          .
-                                                                                                                          showString
-                                                                                                                            "maxDescriptorSetUpdateAfterBindUniformBuffers = "
-                                                                                                                            .
-                                                                                                                            showsPrec
-                                                                                                                              d
-                                                                                                                              (getField
-                                                                                                                                 @"maxDescriptorSetUpdateAfterBindUniformBuffers"
-                                                                                                                                 x)
-                                                                                                                              .
-                                                                                                                              showString
-                                                                                                                                ", "
-                                                                                                                                .
-                                                                                                                                showString
-                                                                                                                                  "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = "
-                                                                                                                                  .
-                                                                                                                                  showsPrec
-                                                                                                                                    d
-                                                                                                                                    (getField
-                                                                                                                                       @"maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"
-                                                                                                                                       x)
-                                                                                                                                    .
-                                                                                                                                    showString
-                                                                                                                                      ", "
-                                                                                                                                      .
-                                                                                                                                      showString
-                                                                                                                                        "maxDescriptorSetUpdateAfterBindStorageBuffers = "
-                                                                                                                                        .
-                                                                                                                                        showsPrec
-                                                                                                                                          d
-                                                                                                                                          (getField
-                                                                                                                                             @"maxDescriptorSetUpdateAfterBindStorageBuffers"
-                                                                                                                                             x)
-                                                                                                                                          .
-                                                                                                                                          showString
-                                                                                                                                            ", "
-                                                                                                                                            .
-                                                                                                                                            showString
-                                                                                                                                              "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = "
-                                                                                                                                              .
-                                                                                                                                              showsPrec
-                                                                                                                                                d
-                                                                                                                                                (getField
-                                                                                                                                                   @"maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"
-                                                                                                                                                   x)
-                                                                                                                                                .
-                                                                                                                                                showString
-                                                                                                                                                  ", "
-                                                                                                                                                  .
-                                                                                                                                                  showString
-                                                                                                                                                    "maxDescriptorSetUpdateAfterBindSampledImages = "
-                                                                                                                                                    .
-                                                                                                                                                    showsPrec
-                                                                                                                                                      d
-                                                                                                                                                      (getField
-                                                                                                                                                         @"maxDescriptorSetUpdateAfterBindSampledImages"
-                                                                                                                                                         x)
-                                                                                                                                                      .
-                                                                                                                                                      showString
-                                                                                                                                                        ", "
-                                                                                                                                                        .
-                                                                                                                                                        showString
-                                                                                                                                                          "maxDescriptorSetUpdateAfterBindStorageImages = "
-                                                                                                                                                          .
-                                                                                                                                                          showsPrec
-                                                                                                                                                            d
-                                                                                                                                                            (getField
-                                                                                                                                                               @"maxDescriptorSetUpdateAfterBindStorageImages"
-                                                                                                                                                               x)
-                                                                                                                                                            .
-                                                                                                                                                            showString
-                                                                                                                                                              ", "
-                                                                                                                                                              .
-                                                                                                                                                              showString
-                                                                                                                                                                "maxDescriptorSetUpdateAfterBindInputAttachments = "
-                                                                                                                                                                .
-                                                                                                                                                                showsPrec
-                                                                                                                                                                  d
-                                                                                                                                                                  (getField
-                                                                                                                                                                     @"maxDescriptorSetUpdateAfterBindInputAttachments"
-                                                                                                                                                                     x)
-                                                                                                                                                                  .
-                                                                                                                                                                  showChar
-                                                                                                                                                                    '}'
-
--- | > typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
---   >     VkStructureType sType;
---   >     void*                  pNext;
---   >     uint32_t               maxDiscardRectangles;
---   > } VkPhysicalDeviceDiscardRectanglePropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceDiscardRectanglePropertiesEXT VkPhysicalDeviceDiscardRectanglePropertiesEXT registry at www.khronos.org>
-type VkPhysicalDeviceDiscardRectanglePropertiesEXT =
-     VulkanStruct VkPhysicalDeviceDiscardRectanglePropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceDiscardRectanglePropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceDiscardRectanglePropertiesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceDiscardRectanglePropertiesEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceDiscardRectanglePropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceDiscardRectanglePropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        type StructFields VkPhysicalDeviceDiscardRectanglePropertiesEXT =
-             '["sType", "pNext", "maxDiscardRectangles"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceDiscardRectanglePropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceDiscardRectanglePropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceDiscardRectanglePropertiesEXT =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDiscardRectangles"
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        type FieldType "maxDiscardRectangles"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = Word32
-        type FieldOptional "maxDiscardRectangles"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDiscardRectangles"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             =
-             #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
-        type FieldIsArray "maxDiscardRectangles"
-               VkPhysicalDeviceDiscardRectanglePropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDiscardRectangles"
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDiscardRectangles"
-           VkPhysicalDeviceDiscardRectanglePropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
-
-instance Show VkPhysicalDeviceDiscardRectanglePropertiesEXT where
-        showsPrec d x
-          = showString "VkPhysicalDeviceDiscardRectanglePropertiesEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxDiscardRectangles = " .
-                            showsPrec d (getField @"maxDiscardRectangles" x) . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceExternalBufferInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkBufferCreateFlags flags;
---   >     VkBufferUsageFlags               usage;
---   >     VkExternalMemoryHandleTypeFlagBits handleType;
---   > } VkPhysicalDeviceExternalBufferInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfo registry at www.khronos.org>
-type VkPhysicalDeviceExternalBufferInfo =
-     VulkanStruct VkPhysicalDeviceExternalBufferInfo' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceExternalBufferInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceExternalBufferInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalBufferInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalBufferInfo where
-        sizeOf ~_ = #{size VkPhysicalDeviceExternalBufferInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalBufferInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceExternalBufferInfo where
-        type StructFields VkPhysicalDeviceExternalBufferInfo =
-             '["sType", "pNext", "flags", "usage", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalBufferInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalBufferInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalBufferInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalBufferInfo where
-        type FieldType "sType" VkPhysicalDeviceExternalBufferInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceExternalBufferInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceExternalBufferInfo =
-             #{offset VkPhysicalDeviceExternalBufferInfo, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceExternalBufferInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceExternalBufferInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceExternalBufferInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalBufferInfo where
-        type FieldType "pNext" VkPhysicalDeviceExternalBufferInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceExternalBufferInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceExternalBufferInfo =
-             #{offset VkPhysicalDeviceExternalBufferInfo, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceExternalBufferInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceExternalBufferInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceExternalBufferInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPhysicalDeviceExternalBufferInfo where
-        type FieldType "flags" VkPhysicalDeviceExternalBufferInfo =
-             VkBufferCreateFlags
-        type FieldOptional "flags" VkPhysicalDeviceExternalBufferInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPhysicalDeviceExternalBufferInfo =
-             #{offset VkPhysicalDeviceExternalBufferInfo, flags}
-        type FieldIsArray "flags" VkPhysicalDeviceExternalBufferInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPhysicalDeviceExternalBufferInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPhysicalDeviceExternalBufferInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "usage" VkPhysicalDeviceExternalBufferInfo where
-        type FieldType "usage" VkPhysicalDeviceExternalBufferInfo =
-             VkBufferUsageFlags
-        type FieldOptional "usage" VkPhysicalDeviceExternalBufferInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkPhysicalDeviceExternalBufferInfo =
-             #{offset VkPhysicalDeviceExternalBufferInfo, usage}
-        type FieldIsArray "usage" VkPhysicalDeviceExternalBufferInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "usage" VkPhysicalDeviceExternalBufferInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfo, usage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "usage" VkPhysicalDeviceExternalBufferInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkPhysicalDeviceExternalBufferInfo where
-        type FieldType "handleType" VkPhysicalDeviceExternalBufferInfo =
-             VkExternalMemoryHandleTypeFlagBits
-        type FieldOptional "handleType" VkPhysicalDeviceExternalBufferInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkPhysicalDeviceExternalBufferInfo =
-             #{offset VkPhysicalDeviceExternalBufferInfo, handleType}
-        type FieldIsArray "handleType" VkPhysicalDeviceExternalBufferInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalBufferInfo, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkPhysicalDeviceExternalBufferInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalBufferInfo, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkPhysicalDeviceExternalBufferInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalBufferInfo, handleType}
-
-instance Show VkPhysicalDeviceExternalBufferInfo where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalBufferInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "usage = " .
-                                  showsPrec d (getField @"usage" x) .
-                                    showString ", " .
-                                      showString "handleType = " .
-                                        showsPrec d (getField @"handleType" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceExternalBufferInfo`
-type VkPhysicalDeviceExternalBufferInfoKHR =
-     VkPhysicalDeviceExternalBufferInfo
-
--- | > typedef struct VkPhysicalDeviceExternalFenceInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalFenceHandleTypeFlagBits handleType;
---   > } VkPhysicalDeviceExternalFenceInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfo registry at www.khronos.org>
-type VkPhysicalDeviceExternalFenceInfo =
-     VulkanStruct VkPhysicalDeviceExternalFenceInfo' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceExternalFenceInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceExternalFenceInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalFenceInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalFenceInfo where
-        sizeOf ~_ = #{size VkPhysicalDeviceExternalFenceInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalFenceInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceExternalFenceInfo where
-        type StructFields VkPhysicalDeviceExternalFenceInfo =
-             '["sType", "pNext", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalFenceInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalFenceInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalFenceInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalFenceInfo where
-        type FieldType "sType" VkPhysicalDeviceExternalFenceInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceExternalFenceInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceExternalFenceInfo =
-             #{offset VkPhysicalDeviceExternalFenceInfo, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceExternalFenceInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalFenceInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceExternalFenceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalFenceInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalFenceInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceExternalFenceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalFenceInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalFenceInfo where
-        type FieldType "pNext" VkPhysicalDeviceExternalFenceInfo = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceExternalFenceInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceExternalFenceInfo =
-             #{offset VkPhysicalDeviceExternalFenceInfo, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceExternalFenceInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalFenceInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceExternalFenceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalFenceInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalFenceInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceExternalFenceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalFenceInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkPhysicalDeviceExternalFenceInfo where
-        type FieldType "handleType" VkPhysicalDeviceExternalFenceInfo =
-             VkExternalFenceHandleTypeFlagBits
-        type FieldOptional "handleType" VkPhysicalDeviceExternalFenceInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkPhysicalDeviceExternalFenceInfo =
-             #{offset VkPhysicalDeviceExternalFenceInfo, handleType}
-        type FieldIsArray "handleType" VkPhysicalDeviceExternalFenceInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalFenceInfo, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkPhysicalDeviceExternalFenceInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalFenceInfo, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalFenceInfo, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkPhysicalDeviceExternalFenceInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalFenceInfo, handleType}
-
-instance Show VkPhysicalDeviceExternalFenceInfo where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalFenceInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleType = " .
-                            showsPrec d (getField @"handleType" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceExternalFenceInfo`
-type VkPhysicalDeviceExternalFenceInfoKHR =
-     VkPhysicalDeviceExternalFenceInfo
-
--- | > typedef struct VkPhysicalDeviceExternalImageFormatInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagBits handleType;
---   > } VkPhysicalDeviceExternalImageFormatInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfo registry at www.khronos.org>
-type VkPhysicalDeviceExternalImageFormatInfo =
-     VulkanStruct VkPhysicalDeviceExternalImageFormatInfo' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceExternalImageFormatInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceExternalImageFormatInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalImageFormatInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalImageFormatInfo where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceExternalImageFormatInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalImageFormatInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceExternalImageFormatInfo
-         where
-        type StructFields VkPhysicalDeviceExternalImageFormatInfo =
-             '["sType", "pNext", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalImageFormatInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalImageFormatInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalImageFormatInfo =
-             '[VkPhysicalDeviceImageFormatInfo2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalImageFormatInfo where
-        type FieldType "sType" VkPhysicalDeviceExternalImageFormatInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceExternalImageFormatInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceExternalImageFormatInfo =
-             #{offset VkPhysicalDeviceExternalImageFormatInfo, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceExternalImageFormatInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalImageFormatInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceExternalImageFormatInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalImageFormatInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceExternalImageFormatInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalImageFormatInfo where
-        type FieldType "pNext" VkPhysicalDeviceExternalImageFormatInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceExternalImageFormatInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceExternalImageFormatInfo =
-             #{offset VkPhysicalDeviceExternalImageFormatInfo, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceExternalImageFormatInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalImageFormatInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceExternalImageFormatInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalImageFormatInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceExternalImageFormatInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkPhysicalDeviceExternalImageFormatInfo where
-        type FieldType "handleType" VkPhysicalDeviceExternalImageFormatInfo
-             = VkExternalMemoryHandleTypeFlagBits
-        type FieldOptional "handleType"
-               VkPhysicalDeviceExternalImageFormatInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleType"
-               VkPhysicalDeviceExternalImageFormatInfo
-             =
-             #{offset VkPhysicalDeviceExternalImageFormatInfo, handleType}
-        type FieldIsArray "handleType"
-               VkPhysicalDeviceExternalImageFormatInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalImageFormatInfo, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkPhysicalDeviceExternalImageFormatInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalImageFormatInfo, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfo, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkPhysicalDeviceExternalImageFormatInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalImageFormatInfo, handleType}
-
-instance Show VkPhysicalDeviceExternalImageFormatInfo where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalImageFormatInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleType = " .
-                            showsPrec d (getField @"handleType" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceExternalImageFormatInfo`
-type VkPhysicalDeviceExternalImageFormatInfoKHR =
-     VkPhysicalDeviceExternalImageFormatInfo
-
--- | > typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkDeviceSize minImportedHostPointerAlignment;
---   > } VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalMemoryHostPropertiesEXT VkPhysicalDeviceExternalMemoryHostPropertiesEXT registry at www.khronos.org>
-type VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
-     VulkanStruct VkPhysicalDeviceExternalMemoryHostPropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceExternalMemoryHostPropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceExternalMemoryHostPropertiesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalMemoryHostPropertiesEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceExternalMemoryHostPropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalMemoryHostPropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        type StructFields VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
-             '["sType", "pNext", "minImportedHostPointerAlignment"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "minImportedHostPointerAlignment"
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        type FieldType "minImportedHostPointerAlignment"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = VkDeviceSize
-        type FieldOptional "minImportedHostPointerAlignment"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minImportedHostPointerAlignment"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
-        type FieldIsArray "minImportedHostPointerAlignment"
-               VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minImportedHostPointerAlignment"
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minImportedHostPointerAlignment"
-           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
-
-instance Show VkPhysicalDeviceExternalMemoryHostPropertiesEXT where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalMemoryHostPropertiesEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "minImportedHostPointerAlignment = " .
-                            showsPrec d (getField @"minImportedHostPointerAlignment" x) .
-                              showChar '}'
-
--- | > typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
---   > } VkPhysicalDeviceExternalSemaphoreInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfo registry at www.khronos.org>
-type VkPhysicalDeviceExternalSemaphoreInfo =
-     VulkanStruct VkPhysicalDeviceExternalSemaphoreInfo' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceExternalSemaphoreInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceExternalSemaphoreInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceExternalSemaphoreInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceExternalSemaphoreInfo where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceExternalSemaphoreInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceExternalSemaphoreInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceExternalSemaphoreInfo where
-        type StructFields VkPhysicalDeviceExternalSemaphoreInfo =
-             '["sType", "pNext", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceExternalSemaphoreInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceExternalSemaphoreInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceExternalSemaphoreInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceExternalSemaphoreInfo where
-        type FieldType "sType" VkPhysicalDeviceExternalSemaphoreInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceExternalSemaphoreInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceExternalSemaphoreInfo =
-             #{offset VkPhysicalDeviceExternalSemaphoreInfo, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceExternalSemaphoreInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceExternalSemaphoreInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalSemaphoreInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceExternalSemaphoreInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceExternalSemaphoreInfo where
-        type FieldType "pNext" VkPhysicalDeviceExternalSemaphoreInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceExternalSemaphoreInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceExternalSemaphoreInfo =
-             #{offset VkPhysicalDeviceExternalSemaphoreInfo, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceExternalSemaphoreInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceExternalSemaphoreInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalSemaphoreInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceExternalSemaphoreInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkPhysicalDeviceExternalSemaphoreInfo where
-        type FieldType "handleType" VkPhysicalDeviceExternalSemaphoreInfo =
-             VkExternalSemaphoreHandleTypeFlagBits
-        type FieldOptional "handleType"
-               VkPhysicalDeviceExternalSemaphoreInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkPhysicalDeviceExternalSemaphoreInfo
-             =
-             #{offset VkPhysicalDeviceExternalSemaphoreInfo, handleType}
-        type FieldIsArray "handleType"
-               VkPhysicalDeviceExternalSemaphoreInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceExternalSemaphoreInfo, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkPhysicalDeviceExternalSemaphoreInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceExternalSemaphoreInfo, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfo, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkPhysicalDeviceExternalSemaphoreInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceExternalSemaphoreInfo, handleType}
-
-instance Show VkPhysicalDeviceExternalSemaphoreInfo where
-        showsPrec d x
-          = showString "VkPhysicalDeviceExternalSemaphoreInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleType = " .
-                            showsPrec d (getField @"handleType" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceExternalSemaphoreInfo`
-type VkPhysicalDeviceExternalSemaphoreInfoKHR =
-     VkPhysicalDeviceExternalSemaphoreInfo
-
--- | > typedef struct VkPhysicalDeviceFeatures2 {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkPhysicalDeviceFeatures         features;
---   > } VkPhysicalDeviceFeatures2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2 registry at www.khronos.org>
-type VkPhysicalDeviceFeatures2 =
-     VulkanStruct VkPhysicalDeviceFeatures2' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceFeatures2' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceFeatures2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceFeatures2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceFeatures2 where
-        sizeOf ~_ = #{size VkPhysicalDeviceFeatures2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPhysicalDeviceFeatures2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceFeatures2 where
-        type StructFields VkPhysicalDeviceFeatures2 =
-             '["sType", "pNext", "features"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceFeatures2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceFeatures2 = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceFeatures2 =
-             '[VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceFeatures2 where
-        type FieldType "sType" VkPhysicalDeviceFeatures2 = VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceFeatures2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceFeatures2 =
-             #{offset VkPhysicalDeviceFeatures2, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceFeatures2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceFeatures2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceFeatures2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceFeatures2 where
-        type FieldType "pNext" VkPhysicalDeviceFeatures2 = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceFeatures2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceFeatures2 =
-             #{offset VkPhysicalDeviceFeatures2, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceFeatures2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceFeatures2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceFeatures2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "features" VkPhysicalDeviceFeatures2 where
-        type FieldType "features" VkPhysicalDeviceFeatures2 =
-             VkPhysicalDeviceFeatures
-        type FieldOptional "features" VkPhysicalDeviceFeatures2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "features" VkPhysicalDeviceFeatures2 =
-             #{offset VkPhysicalDeviceFeatures2, features}
-        type FieldIsArray "features" VkPhysicalDeviceFeatures2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures2, features}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "features" VkPhysicalDeviceFeatures2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures2, features})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures2, features}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "features" VkPhysicalDeviceFeatures2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures2, features}
-
-instance Show VkPhysicalDeviceFeatures2 where
-        showsPrec d x
-          = showString "VkPhysicalDeviceFeatures2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "features = " .
-                            showsPrec d (getField @"features" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceFeatures2`
-type VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2
-
--- | > typedef struct VkPhysicalDeviceGroupProperties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         physicalDeviceCount;
---   >     VkPhysicalDevice                 physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
---   >     VkBool32                         subsetAllocation;
---   > } VkPhysicalDeviceGroupProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupProperties registry at www.khronos.org>
-type VkPhysicalDeviceGroupProperties =
-     VulkanStruct VkPhysicalDeviceGroupProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceGroupProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceGroupProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceGroupProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceGroupProperties where
-        sizeOf ~_ = #{size VkPhysicalDeviceGroupProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceGroupProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceGroupProperties where
-        type StructFields VkPhysicalDeviceGroupProperties =
-             '["sType", "pNext", "physicalDeviceCount", "physicalDevices", -- ' closing tick for hsc2hs
-               "subsetAllocation"]
-        type CUnionType VkPhysicalDeviceGroupProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceGroupProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceGroupProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceGroupProperties where
-        type FieldType "sType" VkPhysicalDeviceGroupProperties =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceGroupProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceGroupProperties =
-             #{offset VkPhysicalDeviceGroupProperties, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceGroupProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceGroupProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceGroupProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceGroupProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceGroupProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceGroupProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceGroupProperties where
-        type FieldType "pNext" VkPhysicalDeviceGroupProperties = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceGroupProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceGroupProperties =
-             #{offset VkPhysicalDeviceGroupProperties, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceGroupProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceGroupProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceGroupProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceGroupProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceGroupProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceGroupProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "physicalDeviceCount" VkPhysicalDeviceGroupProperties
-         where
-        type FieldType "physicalDeviceCount"
-               VkPhysicalDeviceGroupProperties
-             = Word32
-        type FieldOptional "physicalDeviceCount"
-               VkPhysicalDeviceGroupProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "physicalDeviceCount"
-               VkPhysicalDeviceGroupProperties
-             =
-             #{offset VkPhysicalDeviceGroupProperties, physicalDeviceCount}
-        type FieldIsArray "physicalDeviceCount"
-               VkPhysicalDeviceGroupProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupProperties, physicalDeviceCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "physicalDeviceCount" VkPhysicalDeviceGroupProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceGroupProperties, physicalDeviceCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceGroupProperties, physicalDeviceCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "physicalDeviceCount" VkPhysicalDeviceGroupProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceGroupProperties, physicalDeviceCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "physicalDevices" VkPhysicalDeviceGroupProperties where
-        type FieldType "physicalDevices" VkPhysicalDeviceGroupProperties =
-             VkPhysicalDevice
-        type FieldOptional "physicalDevices"
-               VkPhysicalDeviceGroupProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "physicalDevices" VkPhysicalDeviceGroupProperties
-             =
-             #{offset VkPhysicalDeviceGroupProperties, physicalDevices}
-        type FieldIsArray "physicalDevices" VkPhysicalDeviceGroupProperties
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupProperties, physicalDevices}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "physicalDevices" VkPhysicalDeviceGroupProperties
-         where
-        type FieldArrayLength "physicalDevices"
-               VkPhysicalDeviceGroupProperties
-             = VK_MAX_DEVICE_GROUP_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_DEVICE_GROUP_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceGroupProperties, physicalDevices}
-                      + sizeOf (undefined :: VkPhysicalDevice) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceGroupProperties, physicalDevices}
-                 + sizeOf (undefined :: VkPhysicalDevice) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "physicalDevices"
-           VkPhysicalDeviceGroupProperties
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceGroupProperties, physicalDevices}
-                 + sizeOf (undefined :: VkPhysicalDevice) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "subsetAllocation" VkPhysicalDeviceGroupProperties where
-        type FieldType "subsetAllocation" VkPhysicalDeviceGroupProperties =
-             VkBool32
-        type FieldOptional "subsetAllocation"
-               VkPhysicalDeviceGroupProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "subsetAllocation" VkPhysicalDeviceGroupProperties
-             =
-             #{offset VkPhysicalDeviceGroupProperties, subsetAllocation}
-        type FieldIsArray "subsetAllocation"
-               VkPhysicalDeviceGroupProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceGroupProperties, subsetAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subsetAllocation" VkPhysicalDeviceGroupProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceGroupProperties, subsetAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceGroupProperties, subsetAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subsetAllocation" VkPhysicalDeviceGroupProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceGroupProperties, subsetAllocation}
-
-instance Show VkPhysicalDeviceGroupProperties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceGroupProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "physicalDeviceCount = " .
-                            showsPrec d (getField @"physicalDeviceCount" x) .
-                              showString ", " .
-                                (showString "physicalDevices = [" .
-                                   showsPrec d
-                                     (let s = sizeOf
-                                                (undefined ::
-                                                   FieldType "physicalDevices"
-                                                     VkPhysicalDeviceGroupProperties)
-                                          o = fieldOffset @"physicalDevices"
-                                                @VkPhysicalDeviceGroupProperties
-                                          f i
-                                            = peekByteOff (unsafePtr x) i ::
-                                                IO
-                                                  (FieldType "physicalDevices"
-                                                     VkPhysicalDeviceGroupProperties)
-                                        in
-                                        unsafeDupablePerformIO . mapM f $
-                                          map (\ i -> o + i * s)
-                                            [0 .. VK_MAX_DEVICE_GROUP_SIZE - 1])
-                                     . showChar ']')
-                                  .
-                                  showString ", " .
-                                    showString "subsetAllocation = " .
-                                      showsPrec d (getField @"subsetAllocation" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceGroupProperties`
-type VkPhysicalDeviceGroupPropertiesKHR =
-     VkPhysicalDeviceGroupProperties
-
--- | > typedef struct VkPhysicalDeviceIDProperties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint8_t                          deviceUUID[VK_UUID_SIZE];
---   >     uint8_t                          driverUUID[VK_UUID_SIZE];
---   >     uint8_t                          deviceLUID[VK_LUID_SIZE];
---   >     uint32_t                         deviceNodeMask;
---   >     VkBool32                         deviceLUIDValid;
---   > } VkPhysicalDeviceIDProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceIDProperties VkPhysicalDeviceIDProperties registry at www.khronos.org>
-type VkPhysicalDeviceIDProperties =
-     VulkanStruct VkPhysicalDeviceIDProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceIDProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceIDProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceIDProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceIDProperties where
-        sizeOf ~_ = #{size VkPhysicalDeviceIDProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceIDProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceIDProperties where
-        type StructFields VkPhysicalDeviceIDProperties =
-             '["sType", "pNext", "deviceUUID", "driverUUID", "deviceLUID", -- ' closing tick for hsc2hs
-               "deviceNodeMask", "deviceLUIDValid"]
-        type CUnionType VkPhysicalDeviceIDProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceIDProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceIDProperties =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceIDProperties where
-        type FieldType "sType" VkPhysicalDeviceIDProperties =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceIDProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceIDProperties =
-             #{offset VkPhysicalDeviceIDProperties, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceIDProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceIDProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceIDProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceIDProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceIDProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceIDProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceIDProperties where
-        type FieldType "pNext" VkPhysicalDeviceIDProperties = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceIDProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceIDProperties =
-             #{offset VkPhysicalDeviceIDProperties, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceIDProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceIDProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceIDProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceIDProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceIDProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceIDProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceUUID" VkPhysicalDeviceIDProperties where
-        type FieldType "deviceUUID" VkPhysicalDeviceIDProperties = Word8
-        type FieldOptional "deviceUUID" VkPhysicalDeviceIDProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceUUID" VkPhysicalDeviceIDProperties =
-             #{offset VkPhysicalDeviceIDProperties, deviceUUID}
-        type FieldIsArray "deviceUUID" VkPhysicalDeviceIDProperties = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDProperties, deviceUUID}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "deviceUUID" VkPhysicalDeviceIDProperties where
-        type FieldArrayLength "deviceUUID" VkPhysicalDeviceIDProperties =
-             VK_UUID_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_UUID_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceIDProperties, deviceUUID} +
-                      sizeOf (undefined :: Word8) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceIDProperties, deviceUUID} +
-                 sizeOf (undefined :: Word8) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "deviceUUID" VkPhysicalDeviceIDProperties where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceIDProperties, deviceUUID} +
-                 sizeOf (undefined :: Word8) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "driverUUID" VkPhysicalDeviceIDProperties where
-        type FieldType "driverUUID" VkPhysicalDeviceIDProperties = Word8
-        type FieldOptional "driverUUID" VkPhysicalDeviceIDProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "driverUUID" VkPhysicalDeviceIDProperties =
-             #{offset VkPhysicalDeviceIDProperties, driverUUID}
-        type FieldIsArray "driverUUID" VkPhysicalDeviceIDProperties = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDProperties, driverUUID}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "driverUUID" VkPhysicalDeviceIDProperties where
-        type FieldArrayLength "driverUUID" VkPhysicalDeviceIDProperties =
-             VK_UUID_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_UUID_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceIDProperties, driverUUID} +
-                      sizeOf (undefined :: Word8) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceIDProperties, driverUUID} +
-                 sizeOf (undefined :: Word8) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "driverUUID" VkPhysicalDeviceIDProperties where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceIDProperties, driverUUID} +
-                 sizeOf (undefined :: Word8) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceLUID" VkPhysicalDeviceIDProperties where
-        type FieldType "deviceLUID" VkPhysicalDeviceIDProperties = Word8
-        type FieldOptional "deviceLUID" VkPhysicalDeviceIDProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceLUID" VkPhysicalDeviceIDProperties =
-             #{offset VkPhysicalDeviceIDProperties, deviceLUID}
-        type FieldIsArray "deviceLUID" VkPhysicalDeviceIDProperties = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDProperties, deviceLUID}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "deviceLUID" VkPhysicalDeviceIDProperties where
-        type FieldArrayLength "deviceLUID" VkPhysicalDeviceIDProperties =
-             VK_LUID_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_LUID_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceIDProperties, deviceLUID} +
-                      sizeOf (undefined :: Word8) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceIDProperties, deviceLUID} +
-                 sizeOf (undefined :: Word8) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "deviceLUID" VkPhysicalDeviceIDProperties where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceIDProperties, deviceLUID} +
-                 sizeOf (undefined :: Word8) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceNodeMask" VkPhysicalDeviceIDProperties where
-        type FieldType "deviceNodeMask" VkPhysicalDeviceIDProperties =
-             Word32
-        type FieldOptional "deviceNodeMask" VkPhysicalDeviceIDProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceNodeMask" VkPhysicalDeviceIDProperties =
-             #{offset VkPhysicalDeviceIDProperties, deviceNodeMask}
-        type FieldIsArray "deviceNodeMask" VkPhysicalDeviceIDProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDProperties, deviceNodeMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceNodeMask" VkPhysicalDeviceIDProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceIDProperties, deviceNodeMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceIDProperties, deviceNodeMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceNodeMask" VkPhysicalDeviceIDProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceIDProperties, deviceNodeMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceLUIDValid" VkPhysicalDeviceIDProperties where
-        type FieldType "deviceLUIDValid" VkPhysicalDeviceIDProperties =
-             VkBool32
-        type FieldOptional "deviceLUIDValid" VkPhysicalDeviceIDProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceLUIDValid" VkPhysicalDeviceIDProperties =
-             #{offset VkPhysicalDeviceIDProperties, deviceLUIDValid}
-        type FieldIsArray "deviceLUIDValid" VkPhysicalDeviceIDProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceIDProperties, deviceLUIDValid}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceLUIDValid" VkPhysicalDeviceIDProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceIDProperties, deviceLUIDValid})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceIDProperties, deviceLUIDValid}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceLUIDValid" VkPhysicalDeviceIDProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceIDProperties, deviceLUIDValid}
-
-instance Show VkPhysicalDeviceIDProperties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceIDProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          (showString "deviceUUID = [" .
-                             showsPrec d
-                               (let s = sizeOf
-                                          (undefined ::
-                                             FieldType "deviceUUID" VkPhysicalDeviceIDProperties)
-                                    o = fieldOffset @"deviceUUID" @VkPhysicalDeviceIDProperties
-                                    f i
-                                      = peekByteOff (unsafePtr x) i ::
-                                          IO (FieldType "deviceUUID" VkPhysicalDeviceIDProperties)
-                                  in
-                                  unsafeDupablePerformIO . mapM f $
-                                    map (\ i -> o + i * s) [0 .. VK_UUID_SIZE - 1])
-                               . showChar ']')
-                            .
-                            showString ", " .
-                              (showString "driverUUID = [" .
-                                 showsPrec d
-                                   (let s = sizeOf
-                                              (undefined ::
-                                                 FieldType "driverUUID"
-                                                   VkPhysicalDeviceIDProperties)
-                                        o = fieldOffset @"driverUUID" @VkPhysicalDeviceIDProperties
-                                        f i
-                                          = peekByteOff (unsafePtr x) i ::
-                                              IO
-                                                (FieldType "driverUUID"
-                                                   VkPhysicalDeviceIDProperties)
-                                      in
-                                      unsafeDupablePerformIO . mapM f $
-                                        map (\ i -> o + i * s) [0 .. VK_UUID_SIZE - 1])
-                                   . showChar ']')
-                                .
-                                showString ", " .
-                                  (showString "deviceLUID = [" .
-                                     showsPrec d
-                                       (let s = sizeOf
-                                                  (undefined ::
-                                                     FieldType "deviceLUID"
-                                                       VkPhysicalDeviceIDProperties)
-                                            o = fieldOffset @"deviceLUID"
-                                                  @VkPhysicalDeviceIDProperties
-                                            f i
-                                              = peekByteOff (unsafePtr x) i ::
-                                                  IO
-                                                    (FieldType "deviceLUID"
-                                                       VkPhysicalDeviceIDProperties)
-                                          in
-                                          unsafeDupablePerformIO . mapM f $
-                                            map (\ i -> o + i * s) [0 .. VK_LUID_SIZE - 1])
-                                       . showChar ']')
-                                    .
-                                    showString ", " .
-                                      showString "deviceNodeMask = " .
-                                        showsPrec d (getField @"deviceNodeMask" x) .
-                                          showString ", " .
-                                            showString "deviceLUIDValid = " .
-                                              showsPrec d (getField @"deviceLUIDValid" x) .
-                                                showChar '}'
-
--- | Alias for `VkPhysicalDeviceIDProperties`
-type VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties
-
--- | > typedef struct VkPhysicalDeviceImageFormatInfo2 {
---   >     VkStructureType sType;
---   >     const void* pNext;
---   >     VkFormat                         format;
---   >     VkImageType                      type;
---   >     VkImageTiling                    tiling;
---   >     VkImageUsageFlags                usage;
---   >     VkImageCreateFlags flags;
---   > } VkPhysicalDeviceImageFormatInfo2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2 registry at www.khronos.org>
-type VkPhysicalDeviceImageFormatInfo2 =
-     VulkanStruct VkPhysicalDeviceImageFormatInfo2' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceImageFormatInfo2' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceImageFormatInfo2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceImageFormatInfo2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceImageFormatInfo2 where
-        sizeOf ~_ = #{size VkPhysicalDeviceImageFormatInfo2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceImageFormatInfo2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceImageFormatInfo2 where
-        type StructFields VkPhysicalDeviceImageFormatInfo2 =
-             '["sType", "pNext", "format", "type", "tiling", "usage", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceImageFormatInfo2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceImageFormatInfo2 where
-        type FieldType "sType" VkPhysicalDeviceImageFormatInfo2 =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceImageFormatInfo2 =
-             #{offset VkPhysicalDeviceImageFormatInfo2, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceImageFormatInfo2 where
-        type FieldType "pNext" VkPhysicalDeviceImageFormatInfo2 = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceImageFormatInfo2 =
-             #{offset VkPhysicalDeviceImageFormatInfo2, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkPhysicalDeviceImageFormatInfo2 where
-        type FieldType "format" VkPhysicalDeviceImageFormatInfo2 = VkFormat
-        type FieldOptional "format" VkPhysicalDeviceImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkPhysicalDeviceImageFormatInfo2 =
-             #{offset VkPhysicalDeviceImageFormatInfo2, format}
-        type FieldIsArray "format" VkPhysicalDeviceImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkPhysicalDeviceImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkPhysicalDeviceImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkPhysicalDeviceImageFormatInfo2 where
-        type FieldType "type" VkPhysicalDeviceImageFormatInfo2 =
-             VkImageType
-        type FieldOptional "type" VkPhysicalDeviceImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkPhysicalDeviceImageFormatInfo2 =
-             #{offset VkPhysicalDeviceImageFormatInfo2, type}
-        type FieldIsArray "type" VkPhysicalDeviceImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkPhysicalDeviceImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkPhysicalDeviceImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "tiling" VkPhysicalDeviceImageFormatInfo2 where
-        type FieldType "tiling" VkPhysicalDeviceImageFormatInfo2 =
-             VkImageTiling
-        type FieldOptional "tiling" VkPhysicalDeviceImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "tiling" VkPhysicalDeviceImageFormatInfo2 =
-             #{offset VkPhysicalDeviceImageFormatInfo2, tiling}
-        type FieldIsArray "tiling" VkPhysicalDeviceImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2, tiling}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tiling" VkPhysicalDeviceImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2, tiling})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, tiling}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tiling" VkPhysicalDeviceImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, tiling}
-
-instance {-# OVERLAPPING #-}
-         HasField "usage" VkPhysicalDeviceImageFormatInfo2 where
-        type FieldType "usage" VkPhysicalDeviceImageFormatInfo2 =
-             VkImageUsageFlags
-        type FieldOptional "usage" VkPhysicalDeviceImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkPhysicalDeviceImageFormatInfo2 =
-             #{offset VkPhysicalDeviceImageFormatInfo2, usage}
-        type FieldIsArray "usage" VkPhysicalDeviceImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2, usage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "usage" VkPhysicalDeviceImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2, usage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, usage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "usage" VkPhysicalDeviceImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPhysicalDeviceImageFormatInfo2 where
-        type FieldType "flags" VkPhysicalDeviceImageFormatInfo2 =
-             VkImageCreateFlags
-        type FieldOptional "flags" VkPhysicalDeviceImageFormatInfo2 = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPhysicalDeviceImageFormatInfo2 =
-             #{offset VkPhysicalDeviceImageFormatInfo2, flags}
-        type FieldIsArray "flags" VkPhysicalDeviceImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceImageFormatInfo2, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPhysicalDeviceImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceImageFormatInfo2, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPhysicalDeviceImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceImageFormatInfo2, flags}
-
-instance Show VkPhysicalDeviceImageFormatInfo2 where
-        showsPrec d x
-          = showString "VkPhysicalDeviceImageFormatInfo2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "format = " .
-                            showsPrec d (getField @"format" x) .
-                              showString ", " .
-                                showString "type = " .
-                                  showsPrec d (getField @"type" x) .
-                                    showString ", " .
-                                      showString "tiling = " .
-                                        showsPrec d (getField @"tiling" x) .
-                                          showString ", " .
-                                            showString "usage = " .
-                                              showsPrec d (getField @"usage" x) .
-                                                showString ", " .
-                                                  showString "flags = " .
-                                                    showsPrec d (getField @"flags" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceImageFormatInfo2`
-type VkPhysicalDeviceImageFormatInfo2KHR =
-     VkPhysicalDeviceImageFormatInfo2
-
--- | > typedef struct VkPhysicalDeviceLimits {
---   >     uint32_t               maxImageDimension1D;
---   >     uint32_t               maxImageDimension2D;
---   >     uint32_t               maxImageDimension3D;
---   >     uint32_t               maxImageDimensionCube;
---   >     uint32_t               maxImageArrayLayers;
---   >     uint32_t               maxTexelBufferElements;
---   >     uint32_t               maxUniformBufferRange;
---   >     uint32_t               maxStorageBufferRange;
---   >     uint32_t               maxPushConstantsSize;
---   >     uint32_t               maxMemoryAllocationCount;
---   >     uint32_t               maxSamplerAllocationCount;
---   >     VkDeviceSize           bufferImageGranularity;
---   >     VkDeviceSize           sparseAddressSpaceSize;
---   >     uint32_t               maxBoundDescriptorSets;
---   >     uint32_t               maxPerStageDescriptorSamplers;
---   >     uint32_t               maxPerStageDescriptorUniformBuffers;
---   >     uint32_t               maxPerStageDescriptorStorageBuffers;
---   >     uint32_t               maxPerStageDescriptorSampledImages;
---   >     uint32_t               maxPerStageDescriptorStorageImages;
---   >     uint32_t               maxPerStageDescriptorInputAttachments;
---   >     uint32_t               maxPerStageResources;
---   >     uint32_t               maxDescriptorSetSamplers;
---   >     uint32_t               maxDescriptorSetUniformBuffers;
---   >     uint32_t               maxDescriptorSetUniformBuffersDynamic;
---   >     uint32_t               maxDescriptorSetStorageBuffers;
---   >     uint32_t               maxDescriptorSetStorageBuffersDynamic;
---   >     uint32_t               maxDescriptorSetSampledImages;
---   >     uint32_t               maxDescriptorSetStorageImages;
---   >     uint32_t               maxDescriptorSetInputAttachments;
---   >     uint32_t               maxVertexInputAttributes;
---   >     uint32_t               maxVertexInputBindings;
---   >     uint32_t               maxVertexInputAttributeOffset;
---   >     uint32_t               maxVertexInputBindingStride;
---   >     uint32_t               maxVertexOutputComponents;
---   >     uint32_t               maxTessellationGenerationLevel;
---   >     uint32_t               maxTessellationPatchSize;
---   >     uint32_t               maxTessellationControlPerVertexInputComponents;
---   >     uint32_t               maxTessellationControlPerVertexOutputComponents;
---   >     uint32_t               maxTessellationControlPerPatchOutputComponents;
---   >     uint32_t               maxTessellationControlTotalOutputComponents;
---   >     uint32_t               maxTessellationEvaluationInputComponents;
---   >     uint32_t               maxTessellationEvaluationOutputComponents;
---   >     uint32_t               maxGeometryShaderInvocations;
---   >     uint32_t               maxGeometryInputComponents;
---   >     uint32_t               maxGeometryOutputComponents;
---   >     uint32_t               maxGeometryOutputVertices;
---   >     uint32_t               maxGeometryTotalOutputComponents;
---   >     uint32_t               maxFragmentInputComponents;
---   >     uint32_t               maxFragmentOutputAttachments;
---   >     uint32_t               maxFragmentDualSrcAttachments;
---   >     uint32_t               maxFragmentCombinedOutputResources;
---   >     uint32_t               maxComputeSharedMemorySize;
---   >     uint32_t               maxComputeWorkGroupCount[3];
---   >     uint32_t               maxComputeWorkGroupInvocations;
---   >     uint32_t               maxComputeWorkGroupSize[3];
---   >     uint32_t               subPixelPrecisionBits;
---   >     uint32_t               subTexelPrecisionBits;
---   >     uint32_t               mipmapPrecisionBits;
---   >     uint32_t               maxDrawIndexedIndexValue;
---   >     uint32_t               maxDrawIndirectCount;
---   >     float                  maxSamplerLodBias;
---   >     float                  maxSamplerAnisotropy;
---   >     uint32_t               maxViewports;
---   >     uint32_t               maxViewportDimensions[2];
---   >     float                  viewportBoundsRange[2];
---   >     uint32_t               viewportSubPixelBits;
---   >     size_t                 minMemoryMapAlignment;
---   >     VkDeviceSize           minTexelBufferOffsetAlignment;
---   >     VkDeviceSize           minUniformBufferOffsetAlignment;
---   >     VkDeviceSize           minStorageBufferOffsetAlignment;
---   >     int32_t                minTexelOffset;
---   >     uint32_t               maxTexelOffset;
---   >     int32_t                minTexelGatherOffset;
---   >     uint32_t               maxTexelGatherOffset;
---   >     float                  minInterpolationOffset;
---   >     float                  maxInterpolationOffset;
---   >     uint32_t               subPixelInterpolationOffsetBits;
---   >     uint32_t               maxFramebufferWidth;
---   >     uint32_t               maxFramebufferHeight;
---   >     uint32_t               maxFramebufferLayers;
---   >     VkSampleCountFlags     framebufferColorSampleCounts;
---   >     VkSampleCountFlags     framebufferDepthSampleCounts;
---   >     VkSampleCountFlags     framebufferStencilSampleCounts;
---   >     VkSampleCountFlags     framebufferNoAttachmentsSampleCounts;
---   >     uint32_t               maxColorAttachments;
---   >     VkSampleCountFlags     sampledImageColorSampleCounts;
---   >     VkSampleCountFlags     sampledImageIntegerSampleCounts;
---   >     VkSampleCountFlags     sampledImageDepthSampleCounts;
---   >     VkSampleCountFlags     sampledImageStencilSampleCounts;
---   >     VkSampleCountFlags     storageImageSampleCounts;
---   >     uint32_t               maxSampleMaskWords;
---   >     VkBool32               timestampComputeAndGraphics;
---   >     float                  timestampPeriod;
---   >     uint32_t               maxClipDistances;
---   >     uint32_t               maxCullDistances;
---   >     uint32_t               maxCombinedClipAndCullDistances;
---   >     uint32_t               discreteQueuePriorities;
---   >     float                  pointSizeRange[2];
---   >     float                  lineWidthRange[2];
---   >     float                  pointSizeGranularity;
---   >     float                  lineWidthGranularity;
---   >     VkBool32               strictLines;
---   >     VkBool32               standardSampleLocations;
---   >     VkDeviceSize           optimalBufferCopyOffsetAlignment;
---   >     VkDeviceSize           optimalBufferCopyRowPitchAlignment;
---   >     VkDeviceSize           nonCoherentAtomSize;
---   > } VkPhysicalDeviceLimits;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceLimits VkPhysicalDeviceLimits registry at www.khronos.org>
-type VkPhysicalDeviceLimits = VulkanStruct VkPhysicalDeviceLimits' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceLimits' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceLimits where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceLimits where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceLimits where
-        sizeOf ~_ = #{size VkPhysicalDeviceLimits}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPhysicalDeviceLimits}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceLimits where
-        type StructFields VkPhysicalDeviceLimits =
-             '["maxImageDimension1D", "maxImageDimension2D", -- ' closing tick for hsc2hs
-               "maxImageDimension3D", "maxImageDimensionCube",
-               "maxImageArrayLayers", "maxTexelBufferElements",
-               "maxUniformBufferRange", "maxStorageBufferRange",
-               "maxPushConstantsSize", "maxMemoryAllocationCount",
-               "maxSamplerAllocationCount", "bufferImageGranularity",
-               "sparseAddressSpaceSize", "maxBoundDescriptorSets",
-               "maxPerStageDescriptorSamplers",
-               "maxPerStageDescriptorUniformBuffers",
-               "maxPerStageDescriptorStorageBuffers",
-               "maxPerStageDescriptorSampledImages",
-               "maxPerStageDescriptorStorageImages",
-               "maxPerStageDescriptorInputAttachments", "maxPerStageResources",
-               "maxDescriptorSetSamplers", "maxDescriptorSetUniformBuffers",
-               "maxDescriptorSetUniformBuffersDynamic",
-               "maxDescriptorSetStorageBuffers",
-               "maxDescriptorSetStorageBuffersDynamic",
-               "maxDescriptorSetSampledImages", "maxDescriptorSetStorageImages",
-               "maxDescriptorSetInputAttachments", "maxVertexInputAttributes",
-               "maxVertexInputBindings", "maxVertexInputAttributeOffset",
-               "maxVertexInputBindingStride", "maxVertexOutputComponents",
-               "maxTessellationGenerationLevel", "maxTessellationPatchSize",
-               "maxTessellationControlPerVertexInputComponents",
-               "maxTessellationControlPerVertexOutputComponents",
-               "maxTessellationControlPerPatchOutputComponents",
-               "maxTessellationControlTotalOutputComponents",
-               "maxTessellationEvaluationInputComponents",
-               "maxTessellationEvaluationOutputComponents",
-               "maxGeometryShaderInvocations", "maxGeometryInputComponents",
-               "maxGeometryOutputComponents", "maxGeometryOutputVertices",
-               "maxGeometryTotalOutputComponents", "maxFragmentInputComponents",
-               "maxFragmentOutputAttachments", "maxFragmentDualSrcAttachments",
-               "maxFragmentCombinedOutputResources", "maxComputeSharedMemorySize",
-               "maxComputeWorkGroupCount", "maxComputeWorkGroupInvocations",
-               "maxComputeWorkGroupSize", "subPixelPrecisionBits",
-               "subTexelPrecisionBits", "mipmapPrecisionBits",
-               "maxDrawIndexedIndexValue", "maxDrawIndirectCount",
-               "maxSamplerLodBias", "maxSamplerAnisotropy", "maxViewports",
-               "maxViewportDimensions", "viewportBoundsRange",
-               "viewportSubPixelBits", "minMemoryMapAlignment",
-               "minTexelBufferOffsetAlignment", "minUniformBufferOffsetAlignment",
-               "minStorageBufferOffsetAlignment", "minTexelOffset",
-               "maxTexelOffset", "minTexelGatherOffset", "maxTexelGatherOffset",
-               "minInterpolationOffset", "maxInterpolationOffset",
-               "subPixelInterpolationOffsetBits", "maxFramebufferWidth",
-               "maxFramebufferHeight", "maxFramebufferLayers",
-               "framebufferColorSampleCounts", "framebufferDepthSampleCounts",
-               "framebufferStencilSampleCounts",
-               "framebufferNoAttachmentsSampleCounts", "maxColorAttachments",
-               "sampledImageColorSampleCounts", "sampledImageIntegerSampleCounts",
-               "sampledImageDepthSampleCounts", "sampledImageStencilSampleCounts",
-               "storageImageSampleCounts", "maxSampleMaskWords",
-               "timestampComputeAndGraphics", "timestampPeriod",
-               "maxClipDistances", "maxCullDistances",
-               "maxCombinedClipAndCullDistances", "discreteQueuePriorities",
-               "pointSizeRange", "lineWidthRange", "pointSizeGranularity",
-               "lineWidthGranularity", "strictLines", "standardSampleLocations",
-               "optimalBufferCopyOffsetAlignment",
-               "optimalBufferCopyRowPitchAlignment", "nonCoherentAtomSize"]
-        type CUnionType VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceLimits = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceLimits = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageDimension1D" VkPhysicalDeviceLimits where
-        type FieldType "maxImageDimension1D" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxImageDimension1D" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageDimension1D" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxImageDimension1D}
-        type FieldIsArray "maxImageDimension1D" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxImageDimension1D}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageDimension1D" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageDimension1D})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension1D}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageDimension1D" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension1D}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageDimension2D" VkPhysicalDeviceLimits where
-        type FieldType "maxImageDimension2D" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxImageDimension2D" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageDimension2D" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxImageDimension2D}
-        type FieldIsArray "maxImageDimension2D" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxImageDimension2D}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageDimension2D" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageDimension2D})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension2D}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageDimension2D" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension2D}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageDimension3D" VkPhysicalDeviceLimits where
-        type FieldType "maxImageDimension3D" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxImageDimension3D" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageDimension3D" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxImageDimension3D}
-        type FieldIsArray "maxImageDimension3D" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxImageDimension3D}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageDimension3D" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageDimension3D})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension3D}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageDimension3D" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimension3D}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageDimensionCube" VkPhysicalDeviceLimits where
-        type FieldType "maxImageDimensionCube" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxImageDimensionCube" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageDimensionCube" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxImageDimensionCube}
-        type FieldIsArray "maxImageDimensionCube" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxImageDimensionCube}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageDimensionCube" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageDimensionCube})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimensionCube}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageDimensionCube" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageDimensionCube}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageArrayLayers" VkPhysicalDeviceLimits where
-        type FieldType "maxImageArrayLayers" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxImageArrayLayers" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageArrayLayers" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxImageArrayLayers}
-        type FieldIsArray "maxImageArrayLayers" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageArrayLayers" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxImageArrayLayers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageArrayLayers" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTexelBufferElements" VkPhysicalDeviceLimits where
-        type FieldType "maxTexelBufferElements" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxTexelBufferElements" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTexelBufferElements" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxTexelBufferElements}
-        type FieldIsArray "maxTexelBufferElements" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTexelBufferElements}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTexelBufferElements" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTexelBufferElements})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTexelBufferElements}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTexelBufferElements" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTexelBufferElements}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxUniformBufferRange" VkPhysicalDeviceLimits where
-        type FieldType "maxUniformBufferRange" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxUniformBufferRange" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxUniformBufferRange" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxUniformBufferRange}
-        type FieldIsArray "maxUniformBufferRange" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxUniformBufferRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxUniformBufferRange" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxUniformBufferRange})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxUniformBufferRange}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxUniformBufferRange" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxUniformBufferRange}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxStorageBufferRange" VkPhysicalDeviceLimits where
-        type FieldType "maxStorageBufferRange" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxStorageBufferRange" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxStorageBufferRange" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxStorageBufferRange}
-        type FieldIsArray "maxStorageBufferRange" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxStorageBufferRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxStorageBufferRange" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxStorageBufferRange})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxStorageBufferRange}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxStorageBufferRange" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxStorageBufferRange}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPushConstantsSize" VkPhysicalDeviceLimits where
-        type FieldType "maxPushConstantsSize" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxPushConstantsSize" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPushConstantsSize" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxPushConstantsSize}
-        type FieldIsArray "maxPushConstantsSize" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxPushConstantsSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPushConstantsSize" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPushConstantsSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPushConstantsSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPushConstantsSize" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPushConstantsSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxMemoryAllocationCount" VkPhysicalDeviceLimits where
-        type FieldType "maxMemoryAllocationCount" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxMemoryAllocationCount"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxMemoryAllocationCount" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount}
-        type FieldIsArray "maxMemoryAllocationCount" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxMemoryAllocationCount" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxMemoryAllocationCount" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSamplerAllocationCount" VkPhysicalDeviceLimits where
-        type FieldType "maxSamplerAllocationCount" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxSamplerAllocationCount"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSamplerAllocationCount" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount}
-        type FieldIsArray "maxSamplerAllocationCount"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSamplerAllocationCount" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSamplerAllocationCount" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "bufferImageGranularity" VkPhysicalDeviceLimits where
-        type FieldType "bufferImageGranularity" VkPhysicalDeviceLimits =
-             VkDeviceSize
-        type FieldOptional "bufferImageGranularity" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "bufferImageGranularity" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, bufferImageGranularity}
-        type FieldIsArray "bufferImageGranularity" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, bufferImageGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bufferImageGranularity" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, bufferImageGranularity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, bufferImageGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bufferImageGranularity" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, bufferImageGranularity}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseAddressSpaceSize" VkPhysicalDeviceLimits where
-        type FieldType "sparseAddressSpaceSize" VkPhysicalDeviceLimits =
-             VkDeviceSize
-        type FieldOptional "sparseAddressSpaceSize" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseAddressSpaceSize" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize}
-        type FieldIsArray "sparseAddressSpaceSize" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseAddressSpaceSize" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseAddressSpaceSize" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxBoundDescriptorSets" VkPhysicalDeviceLimits where
-        type FieldType "maxBoundDescriptorSets" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxBoundDescriptorSets" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxBoundDescriptorSets" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets}
-        type FieldIsArray "maxBoundDescriptorSets" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxBoundDescriptorSets" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxBoundDescriptorSets" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorSamplers" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxPerStageDescriptorSamplers"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxPerStageDescriptorSamplers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageDescriptorSamplers"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers}
-        type FieldIsArray "maxPerStageDescriptorSamplers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorSamplers" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorSamplers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorUniformBuffers"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxPerStageDescriptorUniformBuffers"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxPerStageDescriptorUniformBuffers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageDescriptorUniformBuffers"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers}
-        type FieldIsArray "maxPerStageDescriptorUniformBuffers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorUniformBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorUniformBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorStorageBuffers"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxPerStageDescriptorStorageBuffers"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxPerStageDescriptorStorageBuffers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageDescriptorStorageBuffers"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers}
-        type FieldIsArray "maxPerStageDescriptorStorageBuffers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorStorageBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorStorageBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorSampledImages"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxPerStageDescriptorSampledImages"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxPerStageDescriptorSampledImages"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageDescriptorSampledImages"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages}
-        type FieldIsArray "maxPerStageDescriptorSampledImages"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorSampledImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorSampledImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorStorageImages"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxPerStageDescriptorStorageImages"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxPerStageDescriptorStorageImages"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageDescriptorStorageImages"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages}
-        type FieldIsArray "maxPerStageDescriptorStorageImages"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorStorageImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorStorageImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageDescriptorInputAttachments"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxPerStageDescriptorInputAttachments"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxPerStageDescriptorInputAttachments"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageDescriptorInputAttachments"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments}
-        type FieldIsArray "maxPerStageDescriptorInputAttachments"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageDescriptorInputAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageDescriptorInputAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerStageResources" VkPhysicalDeviceLimits where
-        type FieldType "maxPerStageResources" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxPerStageResources" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerStageResources" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxPerStageResources}
-        type FieldIsArray "maxPerStageResources" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxPerStageResources}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerStageResources" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxPerStageResources})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageResources}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerStageResources" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxPerStageResources}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetSamplers" VkPhysicalDeviceLimits where
-        type FieldType "maxDescriptorSetSamplers" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxDescriptorSetSamplers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetSamplers" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers}
-        type FieldIsArray "maxDescriptorSetSamplers" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetSamplers" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetSamplers" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUniformBuffers" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxDescriptorSetUniformBuffers"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxDescriptorSetUniformBuffers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetUniformBuffers"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers}
-        type FieldIsArray "maxDescriptorSetUniformBuffers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUniformBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetUniformBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetUniformBuffersDynamic"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxDescriptorSetUniformBuffersDynamic"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxDescriptorSetUniformBuffersDynamic"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetUniformBuffersDynamic"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic}
-        type FieldIsArray "maxDescriptorSetUniformBuffersDynamic"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetUniformBuffersDynamic"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetUniformBuffersDynamic"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetStorageBuffers" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxDescriptorSetStorageBuffers"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxDescriptorSetStorageBuffers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetStorageBuffers"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers}
-        type FieldIsArray "maxDescriptorSetStorageBuffers"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetStorageBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetStorageBuffers"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetStorageBuffersDynamic"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxDescriptorSetStorageBuffersDynamic"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxDescriptorSetStorageBuffersDynamic"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetStorageBuffersDynamic"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic}
-        type FieldIsArray "maxDescriptorSetStorageBuffersDynamic"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetStorageBuffersDynamic"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetStorageBuffersDynamic"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetSampledImages" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxDescriptorSetSampledImages"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxDescriptorSetSampledImages"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetSampledImages"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages}
-        type FieldIsArray "maxDescriptorSetSampledImages"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetSampledImages" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetSampledImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetStorageImages" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxDescriptorSetStorageImages"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxDescriptorSetStorageImages"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetStorageImages"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages}
-        type FieldIsArray "maxDescriptorSetStorageImages"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetStorageImages" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetStorageImages"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDescriptorSetInputAttachments" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxDescriptorSetInputAttachments"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxDescriptorSetInputAttachments"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDescriptorSetInputAttachments"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments}
-        type FieldIsArray "maxDescriptorSetInputAttachments"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDescriptorSetInputAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDescriptorSetInputAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxVertexInputAttributes" VkPhysicalDeviceLimits where
-        type FieldType "maxVertexInputAttributes" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxVertexInputAttributes"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxVertexInputAttributes" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes}
-        type FieldIsArray "maxVertexInputAttributes" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxVertexInputAttributes" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxVertexInputAttributes" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxVertexInputBindings" VkPhysicalDeviceLimits where
-        type FieldType "maxVertexInputBindings" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxVertexInputBindings" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxVertexInputBindings" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxVertexInputBindings}
-        type FieldIsArray "maxVertexInputBindings" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxVertexInputBindings}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxVertexInputBindings" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexInputBindings})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputBindings}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxVertexInputBindings" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputBindings}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxVertexInputAttributeOffset" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxVertexInputAttributeOffset"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxVertexInputAttributeOffset"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxVertexInputAttributeOffset"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset}
-        type FieldIsArray "maxVertexInputAttributeOffset"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxVertexInputAttributeOffset" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxVertexInputAttributeOffset"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxVertexInputBindingStride" VkPhysicalDeviceLimits where
-        type FieldType "maxVertexInputBindingStride" VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxVertexInputBindingStride"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxVertexInputBindingStride"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride}
-        type FieldIsArray "maxVertexInputBindingStride"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxVertexInputBindingStride" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxVertexInputBindingStride" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxVertexOutputComponents" VkPhysicalDeviceLimits where
-        type FieldType "maxVertexOutputComponents" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxVertexOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxVertexOutputComponents" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents}
-        type FieldIsArray "maxVertexOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxVertexOutputComponents" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxVertexOutputComponents" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTessellationGenerationLevel" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxTessellationGenerationLevel"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxTessellationGenerationLevel"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTessellationGenerationLevel"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel}
-        type FieldIsArray "maxTessellationGenerationLevel"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTessellationGenerationLevel"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTessellationGenerationLevel"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTessellationPatchSize" VkPhysicalDeviceLimits where
-        type FieldType "maxTessellationPatchSize" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxTessellationPatchSize"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTessellationPatchSize" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize}
-        type FieldIsArray "maxTessellationPatchSize" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTessellationPatchSize" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTessellationPatchSize" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTessellationControlPerVertexInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxTessellationControlPerVertexInputComponents"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxTessellationControlPerVertexInputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTessellationControlPerVertexInputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents}
-        type FieldIsArray "maxTessellationControlPerVertexInputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTessellationControlPerVertexInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTessellationControlPerVertexInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTessellationControlPerVertexOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxTessellationControlPerVertexOutputComponents"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional
-               "maxTessellationControlPerVertexOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTessellationControlPerVertexOutputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents}
-        type FieldIsArray "maxTessellationControlPerVertexOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTessellationControlPerVertexOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTessellationControlPerVertexOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTessellationControlPerPatchOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxTessellationControlPerPatchOutputComponents"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxTessellationControlPerPatchOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTessellationControlPerPatchOutputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents}
-        type FieldIsArray "maxTessellationControlPerPatchOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTessellationControlPerPatchOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTessellationControlPerPatchOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTessellationControlTotalOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxTessellationControlTotalOutputComponents"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxTessellationControlTotalOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTessellationControlTotalOutputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents}
-        type FieldIsArray "maxTessellationControlTotalOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTessellationControlTotalOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTessellationControlTotalOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTessellationEvaluationInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxTessellationEvaluationInputComponents"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxTessellationEvaluationInputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTessellationEvaluationInputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents}
-        type FieldIsArray "maxTessellationEvaluationInputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTessellationEvaluationInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTessellationEvaluationInputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTessellationEvaluationOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxTessellationEvaluationOutputComponents"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxTessellationEvaluationOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTessellationEvaluationOutputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents}
-        type FieldIsArray "maxTessellationEvaluationOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTessellationEvaluationOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTessellationEvaluationOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxGeometryShaderInvocations" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxGeometryShaderInvocations"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxGeometryShaderInvocations"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxGeometryShaderInvocations"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations}
-        type FieldIsArray "maxGeometryShaderInvocations"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxGeometryShaderInvocations" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxGeometryShaderInvocations" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxGeometryInputComponents" VkPhysicalDeviceLimits where
-        type FieldType "maxGeometryInputComponents" VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxGeometryInputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxGeometryInputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents}
-        type FieldIsArray "maxGeometryInputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxGeometryInputComponents" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxGeometryInputComponents" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxGeometryOutputComponents" VkPhysicalDeviceLimits where
-        type FieldType "maxGeometryOutputComponents" VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxGeometryOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxGeometryOutputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents}
-        type FieldIsArray "maxGeometryOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxGeometryOutputComponents" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxGeometryOutputComponents" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxGeometryOutputVertices" VkPhysicalDeviceLimits where
-        type FieldType "maxGeometryOutputVertices" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxGeometryOutputVertices"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxGeometryOutputVertices" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices}
-        type FieldIsArray "maxGeometryOutputVertices"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxGeometryOutputVertices" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxGeometryOutputVertices" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxGeometryTotalOutputComponents" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxGeometryTotalOutputComponents"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxGeometryTotalOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxGeometryTotalOutputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents}
-        type FieldIsArray "maxGeometryTotalOutputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxGeometryTotalOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxGeometryTotalOutputComponents"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxFragmentInputComponents" VkPhysicalDeviceLimits where
-        type FieldType "maxFragmentInputComponents" VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxFragmentInputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxFragmentInputComponents"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents}
-        type FieldIsArray "maxFragmentInputComponents"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxFragmentInputComponents" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxFragmentInputComponents" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxFragmentOutputAttachments" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxFragmentOutputAttachments"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxFragmentOutputAttachments"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxFragmentOutputAttachments"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments}
-        type FieldIsArray "maxFragmentOutputAttachments"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxFragmentOutputAttachments" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxFragmentOutputAttachments" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxFragmentDualSrcAttachments" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxFragmentDualSrcAttachments"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxFragmentDualSrcAttachments"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxFragmentDualSrcAttachments"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments}
-        type FieldIsArray "maxFragmentDualSrcAttachments"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxFragmentDualSrcAttachments" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxFragmentDualSrcAttachments"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxFragmentCombinedOutputResources"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "maxFragmentCombinedOutputResources"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxFragmentCombinedOutputResources"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxFragmentCombinedOutputResources"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources}
-        type FieldIsArray "maxFragmentCombinedOutputResources"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxFragmentCombinedOutputResources"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxFragmentCombinedOutputResources"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxComputeSharedMemorySize" VkPhysicalDeviceLimits where
-        type FieldType "maxComputeSharedMemorySize" VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxComputeSharedMemorySize"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxComputeSharedMemorySize"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize}
-        type FieldIsArray "maxComputeSharedMemorySize"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxComputeSharedMemorySize" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxComputeSharedMemorySize" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxComputeWorkGroupCount" VkPhysicalDeviceLimits where
-        type FieldType "maxComputeWorkGroupCount" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxComputeWorkGroupCount"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxComputeWorkGroupCount" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
-        type FieldIsArray "maxComputeWorkGroupCount" VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "maxComputeWorkGroupCount" VkPhysicalDeviceLimits
-         where
-        type FieldArrayLength "maxComputeWorkGroupCount"
-               VkPhysicalDeviceLimits
-             = 3
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 3
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
-                      + sizeOf (undefined :: Word32) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "maxComputeWorkGroupCount"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "maxComputeWorkGroupInvocations" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxComputeWorkGroupInvocations"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxComputeWorkGroupInvocations"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxComputeWorkGroupInvocations"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations}
-        type FieldIsArray "maxComputeWorkGroupInvocations"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxComputeWorkGroupInvocations"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxComputeWorkGroupInvocations"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxComputeWorkGroupSize" VkPhysicalDeviceLimits where
-        type FieldType "maxComputeWorkGroupSize" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxComputeWorkGroupSize" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxComputeWorkGroupSize" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
-        type FieldIsArray "maxComputeWorkGroupSize" VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "maxComputeWorkGroupSize" VkPhysicalDeviceLimits
-         where
-        type FieldArrayLength "maxComputeWorkGroupSize"
-               VkPhysicalDeviceLimits
-             = 3
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 3
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
-                      + sizeOf (undefined :: Word32) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "maxComputeWorkGroupSize" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "subPixelPrecisionBits" VkPhysicalDeviceLimits where
-        type FieldType "subPixelPrecisionBits" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "subPixelPrecisionBits" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "subPixelPrecisionBits" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits}
-        type FieldIsArray "subPixelPrecisionBits" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subPixelPrecisionBits" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subPixelPrecisionBits" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         HasField "subTexelPrecisionBits" VkPhysicalDeviceLimits where
-        type FieldType "subTexelPrecisionBits" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "subTexelPrecisionBits" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "subTexelPrecisionBits" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits}
-        type FieldIsArray "subTexelPrecisionBits" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subTexelPrecisionBits" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subTexelPrecisionBits" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         HasField "mipmapPrecisionBits" VkPhysicalDeviceLimits where
-        type FieldType "mipmapPrecisionBits" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "mipmapPrecisionBits" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "mipmapPrecisionBits" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits}
-        type FieldIsArray "mipmapPrecisionBits" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mipmapPrecisionBits" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mipmapPrecisionBits" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDrawIndexedIndexValue" VkPhysicalDeviceLimits where
-        type FieldType "maxDrawIndexedIndexValue" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxDrawIndexedIndexValue"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDrawIndexedIndexValue" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue}
-        type FieldIsArray "maxDrawIndexedIndexValue" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDrawIndexedIndexValue" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDrawIndexedIndexValue" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDrawIndirectCount" VkPhysicalDeviceLimits where
-        type FieldType "maxDrawIndirectCount" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxDrawIndirectCount" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDrawIndirectCount" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount}
-        type FieldIsArray "maxDrawIndirectCount" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDrawIndirectCount" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDrawIndirectCount" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSamplerLodBias" VkPhysicalDeviceLimits where
-        type FieldType "maxSamplerLodBias" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "maxSamplerLodBias" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSamplerLodBias" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxSamplerLodBias}
-        type FieldIsArray "maxSamplerLodBias" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxSamplerLodBias}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSamplerLodBias" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxSamplerLodBias})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerLodBias}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSamplerLodBias" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerLodBias}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSamplerAnisotropy" VkPhysicalDeviceLimits where
-        type FieldType "maxSamplerAnisotropy" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "maxSamplerAnisotropy" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSamplerAnisotropy" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy}
-        type FieldIsArray "maxSamplerAnisotropy" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSamplerAnisotropy" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSamplerAnisotropy" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxViewports" VkPhysicalDeviceLimits where
-        type FieldType "maxViewports" VkPhysicalDeviceLimits = Word32
-        type FieldOptional "maxViewports" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxViewports" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxViewports}
-        type FieldIsArray "maxViewports" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxViewports}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxViewports" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxViewports})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxViewports}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxViewports" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxViewports}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxViewportDimensions" VkPhysicalDeviceLimits where
-        type FieldType "maxViewportDimensions" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxViewportDimensions" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxViewportDimensions" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxViewportDimensions}
-        type FieldIsArray "maxViewportDimensions" VkPhysicalDeviceLimits =
-             'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxViewportDimensions}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "maxViewportDimensions" VkPhysicalDeviceLimits
-         where
-        type FieldArrayLength "maxViewportDimensions"
-               VkPhysicalDeviceLimits
-             = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceLimits, maxViewportDimensions}
-                      + sizeOf (undefined :: Word32) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceLimits, maxViewportDimensions}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "maxViewportDimensions" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceLimits, maxViewportDimensions}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "viewportBoundsRange" VkPhysicalDeviceLimits where
-        type FieldType "viewportBoundsRange" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "viewportBoundsRange" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "viewportBoundsRange" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, viewportBoundsRange}
-        type FieldIsArray "viewportBoundsRange" VkPhysicalDeviceLimits =
-             'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, viewportBoundsRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "viewportBoundsRange" VkPhysicalDeviceLimits
-         where
-        type FieldArrayLength "viewportBoundsRange" VkPhysicalDeviceLimits
-             = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceLimits, viewportBoundsRange}
-                      + sizeOf (undefined :: #{type float}) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceLimits, viewportBoundsRange}
-                 + sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "viewportBoundsRange" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceLimits, viewportBoundsRange}
-                 + sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "viewportSubPixelBits" VkPhysicalDeviceLimits where
-        type FieldType "viewportSubPixelBits" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "viewportSubPixelBits" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "viewportSubPixelBits" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, viewportSubPixelBits}
-        type FieldIsArray "viewportSubPixelBits" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, viewportSubPixelBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "viewportSubPixelBits" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, viewportSubPixelBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, viewportSubPixelBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "viewportSubPixelBits" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, viewportSubPixelBits}
-
-instance {-# OVERLAPPING #-}
-         HasField "minMemoryMapAlignment" VkPhysicalDeviceLimits where
-        type FieldType "minMemoryMapAlignment" VkPhysicalDeviceLimits =
-             CSize
-        type FieldOptional "minMemoryMapAlignment" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minMemoryMapAlignment" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment}
-        type FieldIsArray "minMemoryMapAlignment" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minMemoryMapAlignment" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minMemoryMapAlignment" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "minTexelBufferOffsetAlignment" VkPhysicalDeviceLimits
-         where
-        type FieldType "minTexelBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = VkDeviceSize
-        type FieldOptional "minTexelBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minTexelBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment}
-        type FieldIsArray "minTexelBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minTexelBufferOffsetAlignment" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minTexelBufferOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "minUniformBufferOffsetAlignment" VkPhysicalDeviceLimits
-         where
-        type FieldType "minUniformBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = VkDeviceSize
-        type FieldOptional "minUniformBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minUniformBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment}
-        type FieldIsArray "minUniformBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minUniformBufferOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minUniformBufferOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "minStorageBufferOffsetAlignment" VkPhysicalDeviceLimits
-         where
-        type FieldType "minStorageBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = VkDeviceSize
-        type FieldOptional "minStorageBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minStorageBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment}
-        type FieldIsArray "minStorageBufferOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minStorageBufferOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minStorageBufferOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "minTexelOffset" VkPhysicalDeviceLimits where
-        type FieldType "minTexelOffset" VkPhysicalDeviceLimits = Int32
-        type FieldOptional "minTexelOffset" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minTexelOffset" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, minTexelOffset}
-        type FieldIsArray "minTexelOffset" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, minTexelOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minTexelOffset" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minTexelOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minTexelOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minTexelOffset" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minTexelOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTexelOffset" VkPhysicalDeviceLimits where
-        type FieldType "maxTexelOffset" VkPhysicalDeviceLimits = Word32
-        type FieldOptional "maxTexelOffset" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTexelOffset" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxTexelOffset}
-        type FieldIsArray "maxTexelOffset" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTexelOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTexelOffset" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTexelOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTexelOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTexelOffset" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTexelOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "minTexelGatherOffset" VkPhysicalDeviceLimits where
-        type FieldType "minTexelGatherOffset" VkPhysicalDeviceLimits =
-             Int32
-        type FieldOptional "minTexelGatherOffset" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minTexelGatherOffset" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, minTexelGatherOffset}
-        type FieldIsArray "minTexelGatherOffset" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, minTexelGatherOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minTexelGatherOffset" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minTexelGatherOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minTexelGatherOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minTexelGatherOffset" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minTexelGatherOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxTexelGatherOffset" VkPhysicalDeviceLimits where
-        type FieldType "maxTexelGatherOffset" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxTexelGatherOffset" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxTexelGatherOffset" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset}
-        type FieldIsArray "maxTexelGatherOffset" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxTexelGatherOffset" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxTexelGatherOffset" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "minInterpolationOffset" VkPhysicalDeviceLimits where
-        type FieldType "minInterpolationOffset" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "minInterpolationOffset" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minInterpolationOffset" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, minInterpolationOffset}
-        type FieldIsArray "minInterpolationOffset" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, minInterpolationOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minInterpolationOffset" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, minInterpolationOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, minInterpolationOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minInterpolationOffset" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, minInterpolationOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxInterpolationOffset" VkPhysicalDeviceLimits where
-        type FieldType "maxInterpolationOffset" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "maxInterpolationOffset" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxInterpolationOffset" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxInterpolationOffset}
-        type FieldIsArray "maxInterpolationOffset" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxInterpolationOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxInterpolationOffset" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxInterpolationOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxInterpolationOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxInterpolationOffset" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxInterpolationOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "subPixelInterpolationOffsetBits" VkPhysicalDeviceLimits
-         where
-        type FieldType "subPixelInterpolationOffsetBits"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "subPixelInterpolationOffsetBits"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "subPixelInterpolationOffsetBits"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits}
-        type FieldIsArray "subPixelInterpolationOffsetBits"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subPixelInterpolationOffsetBits"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subPixelInterpolationOffsetBits"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxFramebufferWidth" VkPhysicalDeviceLimits where
-        type FieldType "maxFramebufferWidth" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxFramebufferWidth" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxFramebufferWidth" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxFramebufferWidth}
-        type FieldIsArray "maxFramebufferWidth" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxFramebufferWidth}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxFramebufferWidth" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFramebufferWidth})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferWidth}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxFramebufferWidth" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferWidth}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxFramebufferHeight" VkPhysicalDeviceLimits where
-        type FieldType "maxFramebufferHeight" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxFramebufferHeight" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxFramebufferHeight" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxFramebufferHeight}
-        type FieldIsArray "maxFramebufferHeight" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxFramebufferHeight}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxFramebufferHeight" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFramebufferHeight})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferHeight}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxFramebufferHeight" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferHeight}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxFramebufferLayers" VkPhysicalDeviceLimits where
-        type FieldType "maxFramebufferLayers" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxFramebufferLayers" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxFramebufferLayers" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxFramebufferLayers}
-        type FieldIsArray "maxFramebufferLayers" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxFramebufferLayers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxFramebufferLayers" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxFramebufferLayers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferLayers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxFramebufferLayers" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxFramebufferLayers}
-
-instance {-# OVERLAPPING #-}
-         HasField "framebufferColorSampleCounts" VkPhysicalDeviceLimits
-         where
-        type FieldType "framebufferColorSampleCounts"
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-        type FieldOptional "framebufferColorSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "framebufferColorSampleCounts"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts}
-        type FieldIsArray "framebufferColorSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "framebufferColorSampleCounts" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "framebufferColorSampleCounts" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "framebufferDepthSampleCounts" VkPhysicalDeviceLimits
-         where
-        type FieldType "framebufferDepthSampleCounts"
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-        type FieldOptional "framebufferDepthSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "framebufferDepthSampleCounts"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts}
-        type FieldIsArray "framebufferDepthSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "framebufferDepthSampleCounts" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "framebufferDepthSampleCounts" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "framebufferStencilSampleCounts" VkPhysicalDeviceLimits
-         where
-        type FieldType "framebufferStencilSampleCounts"
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-        type FieldOptional "framebufferStencilSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "framebufferStencilSampleCounts"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts}
-        type FieldIsArray "framebufferStencilSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "framebufferStencilSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "framebufferStencilSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "framebufferNoAttachmentsSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "framebufferNoAttachmentsSampleCounts"
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-        type FieldOptional "framebufferNoAttachmentsSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "framebufferNoAttachmentsSampleCounts"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts}
-        type FieldIsArray "framebufferNoAttachmentsSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "framebufferNoAttachmentsSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "framebufferNoAttachmentsSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxColorAttachments" VkPhysicalDeviceLimits where
-        type FieldType "maxColorAttachments" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "maxColorAttachments" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxColorAttachments" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxColorAttachments}
-        type FieldIsArray "maxColorAttachments" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxColorAttachments" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxColorAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxColorAttachments" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampledImageColorSampleCounts" VkPhysicalDeviceLimits
-         where
-        type FieldType "sampledImageColorSampleCounts"
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-        type FieldOptional "sampledImageColorSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sampledImageColorSampleCounts"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts}
-        type FieldIsArray "sampledImageColorSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampledImageColorSampleCounts" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampledImageColorSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampledImageIntegerSampleCounts" VkPhysicalDeviceLimits
-         where
-        type FieldType "sampledImageIntegerSampleCounts"
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-        type FieldOptional "sampledImageIntegerSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sampledImageIntegerSampleCounts"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts}
-        type FieldIsArray "sampledImageIntegerSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampledImageIntegerSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampledImageIntegerSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampledImageDepthSampleCounts" VkPhysicalDeviceLimits
-         where
-        type FieldType "sampledImageDepthSampleCounts"
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-        type FieldOptional "sampledImageDepthSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sampledImageDepthSampleCounts"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts}
-        type FieldIsArray "sampledImageDepthSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampledImageDepthSampleCounts" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampledImageDepthSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampledImageStencilSampleCounts" VkPhysicalDeviceLimits
-         where
-        type FieldType "sampledImageStencilSampleCounts"
-               VkPhysicalDeviceLimits
-             = VkSampleCountFlags
-        type FieldOptional "sampledImageStencilSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sampledImageStencilSampleCounts"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts}
-        type FieldIsArray "sampledImageStencilSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampledImageStencilSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampledImageStencilSampleCounts"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "storageImageSampleCounts" VkPhysicalDeviceLimits where
-        type FieldType "storageImageSampleCounts" VkPhysicalDeviceLimits =
-             VkSampleCountFlags
-        type FieldOptional "storageImageSampleCounts"
-               VkPhysicalDeviceLimits
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "storageImageSampleCounts" VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, storageImageSampleCounts}
-        type FieldIsArray "storageImageSampleCounts" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, storageImageSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "storageImageSampleCounts" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, storageImageSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, storageImageSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "storageImageSampleCounts" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, storageImageSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSampleMaskWords" VkPhysicalDeviceLimits where
-        type FieldType "maxSampleMaskWords" VkPhysicalDeviceLimits = Word32
-        type FieldOptional "maxSampleMaskWords" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSampleMaskWords" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxSampleMaskWords}
-        type FieldIsArray "maxSampleMaskWords" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxSampleMaskWords}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSampleMaskWords" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxSampleMaskWords})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxSampleMaskWords}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSampleMaskWords" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxSampleMaskWords}
-
-instance {-# OVERLAPPING #-}
-         HasField "timestampComputeAndGraphics" VkPhysicalDeviceLimits where
-        type FieldType "timestampComputeAndGraphics" VkPhysicalDeviceLimits
-             = VkBool32
-        type FieldOptional "timestampComputeAndGraphics"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "timestampComputeAndGraphics"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics}
-        type FieldIsArray "timestampComputeAndGraphics"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "timestampComputeAndGraphics" VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "timestampComputeAndGraphics" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics}
-
-instance {-# OVERLAPPING #-}
-         HasField "timestampPeriod" VkPhysicalDeviceLimits where
-        type FieldType "timestampPeriod" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "timestampPeriod" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "timestampPeriod" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, timestampPeriod}
-        type FieldIsArray "timestampPeriod" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, timestampPeriod}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "timestampPeriod" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, timestampPeriod})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, timestampPeriod}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "timestampPeriod" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, timestampPeriod}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxClipDistances" VkPhysicalDeviceLimits where
-        type FieldType "maxClipDistances" VkPhysicalDeviceLimits = Word32
-        type FieldOptional "maxClipDistances" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxClipDistances" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxClipDistances}
-        type FieldIsArray "maxClipDistances" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxClipDistances}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxClipDistances" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxClipDistances})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxClipDistances}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxClipDistances" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxClipDistances}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxCullDistances" VkPhysicalDeviceLimits where
-        type FieldType "maxCullDistances" VkPhysicalDeviceLimits = Word32
-        type FieldOptional "maxCullDistances" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxCullDistances" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, maxCullDistances}
-        type FieldIsArray "maxCullDistances" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxCullDistances}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxCullDistances" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxCullDistances})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxCullDistances}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxCullDistances" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxCullDistances}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxCombinedClipAndCullDistances" VkPhysicalDeviceLimits
-         where
-        type FieldType "maxCombinedClipAndCullDistances"
-               VkPhysicalDeviceLimits
-             = Word32
-        type FieldOptional "maxCombinedClipAndCullDistances"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxCombinedClipAndCullDistances"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances}
-        type FieldIsArray "maxCombinedClipAndCullDistances"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxCombinedClipAndCullDistances"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxCombinedClipAndCullDistances"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances}
-
-instance {-# OVERLAPPING #-}
-         HasField "discreteQueuePriorities" VkPhysicalDeviceLimits where
-        type FieldType "discreteQueuePriorities" VkPhysicalDeviceLimits =
-             Word32
-        type FieldOptional "discreteQueuePriorities" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "discreteQueuePriorities" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, discreteQueuePriorities}
-        type FieldIsArray "discreteQueuePriorities" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, discreteQueuePriorities}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "discreteQueuePriorities" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, discreteQueuePriorities})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, discreteQueuePriorities}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "discreteQueuePriorities" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, discreteQueuePriorities}
-
-instance {-# OVERLAPPING #-}
-         HasField "pointSizeRange" VkPhysicalDeviceLimits where
-        type FieldType "pointSizeRange" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "pointSizeRange" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pointSizeRange" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, pointSizeRange}
-        type FieldIsArray "pointSizeRange" VkPhysicalDeviceLimits = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, pointSizeRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "pointSizeRange" VkPhysicalDeviceLimits where
-        type FieldArrayLength "pointSizeRange" VkPhysicalDeviceLimits = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceLimits, pointSizeRange} +
-                      sizeOf (undefined :: #{type float}) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceLimits, pointSizeRange} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "pointSizeRange" VkPhysicalDeviceLimits where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceLimits, pointSizeRange} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "lineWidthRange" VkPhysicalDeviceLimits where
-        type FieldType "lineWidthRange" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "lineWidthRange" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "lineWidthRange" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, lineWidthRange}
-        type FieldIsArray "lineWidthRange" VkPhysicalDeviceLimits = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, lineWidthRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "lineWidthRange" VkPhysicalDeviceLimits where
-        type FieldArrayLength "lineWidthRange" VkPhysicalDeviceLimits = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceLimits, lineWidthRange} +
-                      sizeOf (undefined :: #{type float}) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceLimits, lineWidthRange} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "lineWidthRange" VkPhysicalDeviceLimits where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceLimits, lineWidthRange} +
-                 sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "pointSizeGranularity" VkPhysicalDeviceLimits where
-        type FieldType "pointSizeGranularity" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "pointSizeGranularity" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pointSizeGranularity" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, pointSizeGranularity}
-        type FieldIsArray "pointSizeGranularity" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, pointSizeGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pointSizeGranularity" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, pointSizeGranularity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, pointSizeGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pointSizeGranularity" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, pointSizeGranularity}
-
-instance {-# OVERLAPPING #-}
-         HasField "lineWidthGranularity" VkPhysicalDeviceLimits where
-        type FieldType "lineWidthGranularity" VkPhysicalDeviceLimits =
-             #{type float}
-        type FieldOptional "lineWidthGranularity" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "lineWidthGranularity" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, lineWidthGranularity}
-        type FieldIsArray "lineWidthGranularity" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, lineWidthGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "lineWidthGranularity" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, lineWidthGranularity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, lineWidthGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "lineWidthGranularity" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, lineWidthGranularity}
-
-instance {-# OVERLAPPING #-}
-         HasField "strictLines" VkPhysicalDeviceLimits where
-        type FieldType "strictLines" VkPhysicalDeviceLimits = VkBool32
-        type FieldOptional "strictLines" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "strictLines" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, strictLines}
-        type FieldIsArray "strictLines" VkPhysicalDeviceLimits = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, strictLines}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "strictLines" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, strictLines})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, strictLines}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "strictLines" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, strictLines}
-
-instance {-# OVERLAPPING #-}
-         HasField "standardSampleLocations" VkPhysicalDeviceLimits where
-        type FieldType "standardSampleLocations" VkPhysicalDeviceLimits =
-             VkBool32
-        type FieldOptional "standardSampleLocations" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "standardSampleLocations" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, standardSampleLocations}
-        type FieldIsArray "standardSampleLocations" VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, standardSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "standardSampleLocations" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, standardSampleLocations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, standardSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "standardSampleLocations" VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, standardSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         HasField "optimalBufferCopyOffsetAlignment" VkPhysicalDeviceLimits
-         where
-        type FieldType "optimalBufferCopyOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = VkDeviceSize
-        type FieldOptional "optimalBufferCopyOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "optimalBufferCopyOffsetAlignment"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment}
-        type FieldIsArray "optimalBufferCopyOffsetAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "optimalBufferCopyOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "optimalBufferCopyOffsetAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "optimalBufferCopyRowPitchAlignment"
-           VkPhysicalDeviceLimits
-         where
-        type FieldType "optimalBufferCopyRowPitchAlignment"
-               VkPhysicalDeviceLimits
-             = VkDeviceSize
-        type FieldOptional "optimalBufferCopyRowPitchAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "optimalBufferCopyRowPitchAlignment"
-               VkPhysicalDeviceLimits
-             =
-             #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment}
-        type FieldIsArray "optimalBufferCopyRowPitchAlignment"
-               VkPhysicalDeviceLimits
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "optimalBufferCopyRowPitchAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "optimalBufferCopyRowPitchAlignment"
-           VkPhysicalDeviceLimits
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment}
-
-instance {-# OVERLAPPING #-}
-         HasField "nonCoherentAtomSize" VkPhysicalDeviceLimits where
-        type FieldType "nonCoherentAtomSize" VkPhysicalDeviceLimits =
-             VkDeviceSize
-        type FieldOptional "nonCoherentAtomSize" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "nonCoherentAtomSize" VkPhysicalDeviceLimits =
-             #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize}
-        type FieldIsArray "nonCoherentAtomSize" VkPhysicalDeviceLimits =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "nonCoherentAtomSize" VkPhysicalDeviceLimits where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "nonCoherentAtomSize" VkPhysicalDeviceLimits where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize}
-
-instance Show VkPhysicalDeviceLimits where
-        showsPrec d x
-          = showString "VkPhysicalDeviceLimits {" .
-              showString "maxImageDimension1D = " .
-                showsPrec d (getField @"maxImageDimension1D" x) .
-                  showString ", " .
-                    showString "maxImageDimension2D = " .
-                      showsPrec d (getField @"maxImageDimension2D" x) .
-                        showString ", " .
-                          showString "maxImageDimension3D = " .
-                            showsPrec d (getField @"maxImageDimension3D" x) .
-                              showString ", " .
-                                showString "maxImageDimensionCube = " .
-                                  showsPrec d (getField @"maxImageDimensionCube" x) .
-                                    showString ", " .
-                                      showString "maxImageArrayLayers = " .
-                                        showsPrec d (getField @"maxImageArrayLayers" x) .
-                                          showString ", " .
-                                            showString "maxTexelBufferElements = " .
-                                              showsPrec d (getField @"maxTexelBufferElements" x) .
-                                                showString ", " .
-                                                  showString "maxUniformBufferRange = " .
-                                                    showsPrec d
-                                                      (getField @"maxUniformBufferRange" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "maxStorageBufferRange = " .
-                                                          showsPrec d
-                                                            (getField @"maxStorageBufferRange" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "maxPushConstantsSize = " .
-                                                                showsPrec d
-                                                                  (getField @"maxPushConstantsSize"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "maxMemoryAllocationCount = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"maxMemoryAllocationCount"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "maxSamplerAllocationCount = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"maxSamplerAllocationCount"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "bufferImageGranularity = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"bufferImageGranularity"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "sparseAddressSpaceSize = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"sparseAddressSpaceSize"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "maxBoundDescriptorSets = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"maxBoundDescriptorSets"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "maxPerStageDescriptorSamplers = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"maxPerStageDescriptorSamplers"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "maxPerStageDescriptorUniformBuffers = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (getField
-                                                                                                               @"maxPerStageDescriptorUniformBuffers"
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "maxPerStageDescriptorStorageBuffers = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (getField
-                                                                                                                     @"maxPerStageDescriptorStorageBuffers"
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "maxPerStageDescriptorSampledImages = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (getField
-                                                                                                                           @"maxPerStageDescriptorSampledImages"
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showString
-                                                                                                                          ", "
-                                                                                                                          .
-                                                                                                                          showString
-                                                                                                                            "maxPerStageDescriptorStorageImages = "
-                                                                                                                            .
-                                                                                                                            showsPrec
-                                                                                                                              d
-                                                                                                                              (getField
-                                                                                                                                 @"maxPerStageDescriptorStorageImages"
-                                                                                                                                 x)
-                                                                                                                              .
-                                                                                                                              showString
-                                                                                                                                ", "
-                                                                                                                                .
-                                                                                                                                showString
-                                                                                                                                  "maxPerStageDescriptorInputAttachments = "
-                                                                                                                                  .
-                                                                                                                                  showsPrec
-                                                                                                                                    d
-                                                                                                                                    (getField
-                                                                                                                                       @"maxPerStageDescriptorInputAttachments"
-                                                                                                                                       x)
-                                                                                                                                    .
-                                                                                                                                    showString
-                                                                                                                                      ", "
-                                                                                                                                      .
-                                                                                                                                      showString
-                                                                                                                                        "maxPerStageResources = "
-                                                                                                                                        .
-                                                                                                                                        showsPrec
-                                                                                                                                          d
-                                                                                                                                          (getField
-                                                                                                                                             @"maxPerStageResources"
-                                                                                                                                             x)
-                                                                                                                                          .
-                                                                                                                                          showString
-                                                                                                                                            ", "
-                                                                                                                                            .
-                                                                                                                                            showString
-                                                                                                                                              "maxDescriptorSetSamplers = "
-                                                                                                                                              .
-                                                                                                                                              showsPrec
-                                                                                                                                                d
-                                                                                                                                                (getField
-                                                                                                                                                   @"maxDescriptorSetSamplers"
-                                                                                                                                                   x)
-                                                                                                                                                .
-                                                                                                                                                showString
-                                                                                                                                                  ", "
-                                                                                                                                                  .
-                                                                                                                                                  showString
-                                                                                                                                                    "maxDescriptorSetUniformBuffers = "
-                                                                                                                                                    .
-                                                                                                                                                    showsPrec
-                                                                                                                                                      d
-                                                                                                                                                      (getField
-                                                                                                                                                         @"maxDescriptorSetUniformBuffers"
-                                                                                                                                                         x)
-                                                                                                                                                      .
-                                                                                                                                                      showString
-                                                                                                                                                        ", "
-                                                                                                                                                        .
-                                                                                                                                                        showString
-                                                                                                                                                          "maxDescriptorSetUniformBuffersDynamic = "
-                                                                                                                                                          .
-                                                                                                                                                          showsPrec
-                                                                                                                                                            d
-                                                                                                                                                            (getField
-                                                                                                                                                               @"maxDescriptorSetUniformBuffersDynamic"
-                                                                                                                                                               x)
-                                                                                                                                                            .
-                                                                                                                                                            showString
-                                                                                                                                                              ", "
-                                                                                                                                                              .
-                                                                                                                                                              showString
-                                                                                                                                                                "maxDescriptorSetStorageBuffers = "
-                                                                                                                                                                .
-                                                                                                                                                                showsPrec
-                                                                                                                                                                  d
-                                                                                                                                                                  (getField
-                                                                                                                                                                     @"maxDescriptorSetStorageBuffers"
-                                                                                                                                                                     x)
-                                                                                                                                                                  .
-                                                                                                                                                                  showString
-                                                                                                                                                                    ", "
-                                                                                                                                                                    .
-                                                                                                                                                                    showString
-                                                                                                                                                                      "maxDescriptorSetStorageBuffersDynamic = "
-                                                                                                                                                                      .
-                                                                                                                                                                      showsPrec
-                                                                                                                                                                        d
-                                                                                                                                                                        (getField
-                                                                                                                                                                           @"maxDescriptorSetStorageBuffersDynamic"
-                                                                                                                                                                           x)
-                                                                                                                                                                        .
-                                                                                                                                                                        showString
-                                                                                                                                                                          ", "
-                                                                                                                                                                          .
-                                                                                                                                                                          showString
-                                                                                                                                                                            "maxDescriptorSetSampledImages = "
-                                                                                                                                                                            .
-                                                                                                                                                                            showsPrec
-                                                                                                                                                                              d
-                                                                                                                                                                              (getField
-                                                                                                                                                                                 @"maxDescriptorSetSampledImages"
-                                                                                                                                                                                 x)
-                                                                                                                                                                              .
-                                                                                                                                                                              showString
-                                                                                                                                                                                ", "
-                                                                                                                                                                                .
-                                                                                                                                                                                showString
-                                                                                                                                                                                  "maxDescriptorSetStorageImages = "
-                                                                                                                                                                                  .
-                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                    d
-                                                                                                                                                                                    (getField
-                                                                                                                                                                                       @"maxDescriptorSetStorageImages"
-                                                                                                                                                                                       x)
-                                                                                                                                                                                    .
-                                                                                                                                                                                    showString
-                                                                                                                                                                                      ", "
-                                                                                                                                                                                      .
-                                                                                                                                                                                      showString
-                                                                                                                                                                                        "maxDescriptorSetInputAttachments = "
-                                                                                                                                                                                        .
-                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                          d
-                                                                                                                                                                                          (getField
-                                                                                                                                                                                             @"maxDescriptorSetInputAttachments"
-                                                                                                                                                                                             x)
-                                                                                                                                                                                          .
-                                                                                                                                                                                          showString
-                                                                                                                                                                                            ", "
-                                                                                                                                                                                            .
-                                                                                                                                                                                            showString
-                                                                                                                                                                                              "maxVertexInputAttributes = "
-                                                                                                                                                                                              .
-                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                d
-                                                                                                                                                                                                (getField
-                                                                                                                                                                                                   @"maxVertexInputAttributes"
-                                                                                                                                                                                                   x)
-                                                                                                                                                                                                .
-                                                                                                                                                                                                showString
-                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                  .
-                                                                                                                                                                                                  showString
-                                                                                                                                                                                                    "maxVertexInputBindings = "
-                                                                                                                                                                                                    .
-                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                      d
-                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                         @"maxVertexInputBindings"
-                                                                                                                                                                                                         x)
-                                                                                                                                                                                                      .
-                                                                                                                                                                                                      showString
-                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                        .
-                                                                                                                                                                                                        showString
-                                                                                                                                                                                                          "maxVertexInputAttributeOffset = "
-                                                                                                                                                                                                          .
-                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                            d
-                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                               @"maxVertexInputAttributeOffset"
-                                                                                                                                                                                                               x)
-                                                                                                                                                                                                            .
-                                                                                                                                                                                                            showString
-                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                              .
-                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                "maxVertexInputBindingStride = "
-                                                                                                                                                                                                                .
-                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                     @"maxVertexInputBindingStride"
-                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                      "maxVertexOutputComponents = "
-                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                           @"maxVertexOutputComponents"
-                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                            "maxTessellationGenerationLevel = "
-                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                 @"maxTessellationGenerationLevel"
-                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                  "maxTessellationPatchSize = "
-                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                       @"maxTessellationPatchSize"
-                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                        "maxTessellationControlPerVertexInputComponents = "
-                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                             @"maxTessellationControlPerVertexInputComponents"
-                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                              "maxTessellationControlPerVertexOutputComponents = "
-                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                   @"maxTessellationControlPerVertexOutputComponents"
-                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                    "maxTessellationControlPerPatchOutputComponents = "
-                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                         @"maxTessellationControlPerPatchOutputComponents"
-                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                          "maxTessellationControlTotalOutputComponents = "
-                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                               @"maxTessellationControlTotalOutputComponents"
-                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                "maxTessellationEvaluationInputComponents = "
-                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                     @"maxTessellationEvaluationInputComponents"
-                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                      "maxTessellationEvaluationOutputComponents = "
-                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                           @"maxTessellationEvaluationOutputComponents"
-                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                            "maxGeometryShaderInvocations = "
-                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                 @"maxGeometryShaderInvocations"
-                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                  "maxGeometryInputComponents = "
-                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                       @"maxGeometryInputComponents"
-                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                        "maxGeometryOutputComponents = "
-                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                             @"maxGeometryOutputComponents"
-                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                              "maxGeometryOutputVertices = "
-                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                   @"maxGeometryOutputVertices"
-                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                    "maxGeometryTotalOutputComponents = "
-                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                         @"maxGeometryTotalOutputComponents"
-                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                          "maxFragmentInputComponents = "
-                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                                                                               @"maxFragmentInputComponents"
-                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                "maxFragmentOutputAttachments = "
-                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                                                                     @"maxFragmentOutputAttachments"
-                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                      "maxFragmentDualSrcAttachments = "
-                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                                                                           @"maxFragmentDualSrcAttachments"
-                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                            "maxFragmentCombinedOutputResources = "
-                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                 @"maxFragmentCombinedOutputResources"
-                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                  "maxComputeSharedMemorySize = "
-                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                                                                       @"maxComputeSharedMemorySize"
-                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                      (showString
-                                                                                                                                                                                                                                                                                                                                         "maxComputeWorkGroupCount = ["
-                                                                                                                                                                                                                                                                                                                                         .
-                                                                                                                                                                                                                                                                                                                                         showsPrec
-                                                                                                                                                                                                                                                                                                                                           d
-                                                                                                                                                                                                                                                                                                                                           (let s = sizeOf
-                                                                                                                                                                                                                                                                                                                                                      (undefined
-                                                                                                                                                                                                                                                                                                                                                         ::
-                                                                                                                                                                                                                                                                                                                                                         FieldType
-                                                                                                                                                                                                                                                                                                                                                           "maxComputeWorkGroupCount"
-                                                                                                                                                                                                                                                                                                                                                           VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                o = fieldOffset
-                                                                                                                                                                                                                                                                                                                                                      @"maxComputeWorkGroupCount"
-                                                                                                                                                                                                                                                                                                                                                      @VkPhysicalDeviceLimits
-                                                                                                                                                                                                                                                                                                                                                f i
-                                                                                                                                                                                                                                                                                                                                                  = peekByteOff
-                                                                                                                                                                                                                                                                                                                                                      (unsafePtr
-                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                      i
-                                                                                                                                                                                                                                                                                                                                                      ::
-                                                                                                                                                                                                                                                                                                                                                      IO
-                                                                                                                                                                                                                                                                                                                                                        (FieldType
-                                                                                                                                                                                                                                                                                                                                                           "maxComputeWorkGroupCount"
-                                                                                                                                                                                                                                                                                                                                                           VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                              in
-                                                                                                                                                                                                                                                                                                                                              unsafeDupablePerformIO
-                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                mapM
-                                                                                                                                                                                                                                                                                                                                                  f
-                                                                                                                                                                                                                                                                                                                                                $
-                                                                                                                                                                                                                                                                                                                                                map
-                                                                                                                                                                                                                                                                                                                                                  (\ i
-                                                                                                                                                                                                                                                                                                                                                     ->
-                                                                                                                                                                                                                                                                                                                                                     o +
-                                                                                                                                                                                                                                                                                                                                                       i *
-                                                                                                                                                                                                                                                                                                                                                         s)
-                                                                                                                                                                                                                                                                                                                                                  [0
-                                                                                                                                                                                                                                                                                                                                                   ..
-                                                                                                                                                                                                                                                                                                                                                   3 -
-                                                                                                                                                                                                                                                                                                                                                     1])
-                                                                                                                                                                                                                                                                                                                                           .
-                                                                                                                                                                                                                                                                                                                                           showChar
-                                                                                                                                                                                                                                                                                                                                             ']')
-                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                            "maxComputeWorkGroupInvocations = "
-                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                                 @"maxComputeWorkGroupInvocations"
-                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                (showString
-                                                                                                                                                                                                                                                                                                                                                   "maxComputeWorkGroupSize = ["
-                                                                                                                                                                                                                                                                                                                                                   .
-                                                                                                                                                                                                                                                                                                                                                   showsPrec
-                                                                                                                                                                                                                                                                                                                                                     d
-                                                                                                                                                                                                                                                                                                                                                     (let s = sizeOf
-                                                                                                                                                                                                                                                                                                                                                                (undefined
-                                                                                                                                                                                                                                                                                                                                                                   ::
-                                                                                                                                                                                                                                                                                                                                                                   FieldType
-                                                                                                                                                                                                                                                                                                                                                                     "maxComputeWorkGroupSize"
-                                                                                                                                                                                                                                                                                                                                                                     VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                          o = fieldOffset
-                                                                                                                                                                                                                                                                                                                                                                @"maxComputeWorkGroupSize"
-                                                                                                                                                                                                                                                                                                                                                                @VkPhysicalDeviceLimits
-                                                                                                                                                                                                                                                                                                                                                          f i
-                                                                                                                                                                                                                                                                                                                                                            = peekByteOff
-                                                                                                                                                                                                                                                                                                                                                                (unsafePtr
-                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                i
-                                                                                                                                                                                                                                                                                                                                                                ::
-                                                                                                                                                                                                                                                                                                                                                                IO
-                                                                                                                                                                                                                                                                                                                                                                  (FieldType
-                                                                                                                                                                                                                                                                                                                                                                     "maxComputeWorkGroupSize"
-                                                                                                                                                                                                                                                                                                                                                                     VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                        in
-                                                                                                                                                                                                                                                                                                                                                        unsafeDupablePerformIO
-                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                          mapM
-                                                                                                                                                                                                                                                                                                                                                            f
-                                                                                                                                                                                                                                                                                                                                                          $
-                                                                                                                                                                                                                                                                                                                                                          map
-                                                                                                                                                                                                                                                                                                                                                            (\ i
-                                                                                                                                                                                                                                                                                                                                                               ->
-                                                                                                                                                                                                                                                                                                                                                               o +
-                                                                                                                                                                                                                                                                                                                                                                 i *
-                                                                                                                                                                                                                                                                                                                                                                   s)
-                                                                                                                                                                                                                                                                                                                                                            [0
-                                                                                                                                                                                                                                                                                                                                                             ..
-                                                                                                                                                                                                                                                                                                                                                             3 -
-                                                                                                                                                                                                                                                                                                                                                               1])
-                                                                                                                                                                                                                                                                                                                                                     .
-                                                                                                                                                                                                                                                                                                                                                     showChar
-                                                                                                                                                                                                                                                                                                                                                       ']')
-                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                      "subPixelPrecisionBits = "
-                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                                                                                                           @"subPixelPrecisionBits"
-                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                            "subTexelPrecisionBits = "
-                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                                                 @"subTexelPrecisionBits"
-                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                  "mipmapPrecisionBits = "
-                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                                                                                                       @"mipmapPrecisionBits"
-                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                        "maxDrawIndexedIndexValue = "
-                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                                                                                                             @"maxDrawIndexedIndexValue"
-                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                              "maxDrawIndirectCount = "
-                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                                                                                                   @"maxDrawIndirectCount"
-                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                    "maxSamplerLodBias = "
-                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                                                                                                         @"maxSamplerLodBias"
-                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                          "maxSamplerAnisotropy = "
-                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                                                                                                                                                               @"maxSamplerAnisotropy"
-                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                "maxViewports = "
-                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                                                                                                                                                     @"maxViewports"
-                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                    (showString
-                                                                                                                                                                                                                                                                                                                                                                                                       "maxViewportDimensions = ["
-                                                                                                                                                                                                                                                                                                                                                                                                       .
-                                                                                                                                                                                                                                                                                                                                                                                                       showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                         d
-                                                                                                                                                                                                                                                                                                                                                                                                         (let s = sizeOf
-                                                                                                                                                                                                                                                                                                                                                                                                                    (undefined
-                                                                                                                                                                                                                                                                                                                                                                                                                       ::
-                                                                                                                                                                                                                                                                                                                                                                                                                       FieldType
-                                                                                                                                                                                                                                                                                                                                                                                                                         "maxViewportDimensions"
-                                                                                                                                                                                                                                                                                                                                                                                                                         VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                                                                              o = fieldOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                    @"maxViewportDimensions"
-                                                                                                                                                                                                                                                                                                                                                                                                                    @VkPhysicalDeviceLimits
-                                                                                                                                                                                                                                                                                                                                                                                                              f i
-                                                                                                                                                                                                                                                                                                                                                                                                                = peekByteOff
-                                                                                                                                                                                                                                                                                                                                                                                                                    (unsafePtr
-                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                    i
-                                                                                                                                                                                                                                                                                                                                                                                                                    ::
-                                                                                                                                                                                                                                                                                                                                                                                                                    IO
-                                                                                                                                                                                                                                                                                                                                                                                                                      (FieldType
-                                                                                                                                                                                                                                                                                                                                                                                                                         "maxViewportDimensions"
-                                                                                                                                                                                                                                                                                                                                                                                                                         VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                                                                            in
-                                                                                                                                                                                                                                                                                                                                                                                                            unsafeDupablePerformIO
-                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                              mapM
-                                                                                                                                                                                                                                                                                                                                                                                                                f
-                                                                                                                                                                                                                                                                                                                                                                                                              $
-                                                                                                                                                                                                                                                                                                                                                                                                              map
-                                                                                                                                                                                                                                                                                                                                                                                                                (\ i
-                                                                                                                                                                                                                                                                                                                                                                                                                   ->
-                                                                                                                                                                                                                                                                                                                                                                                                                   o +
-                                                                                                                                                                                                                                                                                                                                                                                                                     i *
-                                                                                                                                                                                                                                                                                                                                                                                                                       s)
-                                                                                                                                                                                                                                                                                                                                                                                                                [0
-                                                                                                                                                                                                                                                                                                                                                                                                                 ..
-                                                                                                                                                                                                                                                                                                                                                                                                                 2 -
-                                                                                                                                                                                                                                                                                                                                                                                                                   1])
-                                                                                                                                                                                                                                                                                                                                                                                                         .
-                                                                                                                                                                                                                                                                                                                                                                                                         showChar
-                                                                                                                                                                                                                                                                                                                                                                                                           ']')
-                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                        (showString
-                                                                                                                                                                                                                                                                                                                                                                                                           "viewportBoundsRange = ["
-                                                                                                                                                                                                                                                                                                                                                                                                           .
-                                                                                                                                                                                                                                                                                                                                                                                                           showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                             d
-                                                                                                                                                                                                                                                                                                                                                                                                             (let s = sizeOf
-                                                                                                                                                                                                                                                                                                                                                                                                                        (undefined
-                                                                                                                                                                                                                                                                                                                                                                                                                           ::
-                                                                                                                                                                                                                                                                                                                                                                                                                           FieldType
-                                                                                                                                                                                                                                                                                                                                                                                                                             "viewportBoundsRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                             VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                                                                                  o = fieldOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                        @"viewportBoundsRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                        @VkPhysicalDeviceLimits
-                                                                                                                                                                                                                                                                                                                                                                                                                  f i
-                                                                                                                                                                                                                                                                                                                                                                                                                    = peekByteOff
-                                                                                                                                                                                                                                                                                                                                                                                                                        (unsafePtr
-                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                        i
-                                                                                                                                                                                                                                                                                                                                                                                                                        ::
-                                                                                                                                                                                                                                                                                                                                                                                                                        IO
-                                                                                                                                                                                                                                                                                                                                                                                                                          (FieldType
-                                                                                                                                                                                                                                                                                                                                                                                                                             "viewportBoundsRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                             VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                                                                                in
-                                                                                                                                                                                                                                                                                                                                                                                                                unsafeDupablePerformIO
-                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                  mapM
-                                                                                                                                                                                                                                                                                                                                                                                                                    f
-                                                                                                                                                                                                                                                                                                                                                                                                                  $
-                                                                                                                                                                                                                                                                                                                                                                                                                  map
-                                                                                                                                                                                                                                                                                                                                                                                                                    (\ i
-                                                                                                                                                                                                                                                                                                                                                                                                                       ->
-                                                                                                                                                                                                                                                                                                                                                                                                                       o +
-                                                                                                                                                                                                                                                                                                                                                                                                                         i *
-                                                                                                                                                                                                                                                                                                                                                                                                                           s)
-                                                                                                                                                                                                                                                                                                                                                                                                                    [0
-                                                                                                                                                                                                                                                                                                                                                                                                                     ..
-                                                                                                                                                                                                                                                                                                                                                                                                                     2 -
-                                                                                                                                                                                                                                                                                                                                                                                                                       1])
-                                                                                                                                                                                                                                                                                                                                                                                                             .
-                                                                                                                                                                                                                                                                                                                                                                                                             showChar
-                                                                                                                                                                                                                                                                                                                                                                                                               ']')
-                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                              "viewportSubPixelBits = "
-                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                   @"viewportSubPixelBits"
-                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                    "minMemoryMapAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                         @"minMemoryMapAlignment"
-                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                          "minTexelBufferOffsetAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                               @"minTexelBufferOffsetAlignment"
-                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                "minUniformBufferOffsetAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                     @"minUniformBufferOffsetAlignment"
-                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                      "minStorageBufferOffsetAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                           @"minStorageBufferOffsetAlignment"
-                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                            "minTexelOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                 @"minTexelOffset"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  "maxTexelOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                       @"maxTexelOffset"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        "minTexelGatherOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                             @"minTexelGatherOffset"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              "maxTexelGatherOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                   @"maxTexelGatherOffset"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "minInterpolationOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                         @"minInterpolationOffset"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "maxInterpolationOffset = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                               @"maxInterpolationOffset"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "subPixelInterpolationOffsetBits = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     @"subPixelInterpolationOffsetBits"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "maxFramebufferWidth = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           @"maxFramebufferWidth"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "maxFramebufferHeight = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 @"maxFramebufferHeight"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "maxFramebufferLayers = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       @"maxFramebufferLayers"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "framebufferColorSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             @"framebufferColorSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              "framebufferDepthSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   @"framebufferDepthSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "framebufferStencilSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         @"framebufferStencilSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "framebufferNoAttachmentsSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               @"framebufferNoAttachmentsSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "maxColorAttachments = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     @"maxColorAttachments"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "sampledImageColorSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           @"sampledImageColorSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "sampledImageIntegerSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 @"sampledImageIntegerSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "sampledImageDepthSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       @"sampledImageDepthSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "sampledImageStencilSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             @"sampledImageStencilSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              "storageImageSampleCounts = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   @"storageImageSampleCounts"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "maxSampleMaskWords = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         @"maxSampleMaskWords"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "timestampComputeAndGraphics = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               @"timestampComputeAndGraphics"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "timestampPeriod = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     @"timestampPeriod"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "maxClipDistances = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           @"maxClipDistances"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "maxCullDistances = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 @"maxCullDistances"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "maxCombinedClipAndCullDistances = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       @"maxCombinedClipAndCullDistances"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "discreteQueuePriorities = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             @"discreteQueuePriorities"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               "pointSizeRange = ["
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (let s = sizeOf
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (undefined
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ::
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               FieldType
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "pointSizeRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      o = fieldOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            @"pointSizeRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            @VkPhysicalDeviceLimits
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      f i
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        = peekByteOff
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (unsafePtr
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            i
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ::
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            IO
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (FieldType
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "pointSizeRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    in
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    unsafeDupablePerformIO
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      mapM
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        f
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      $
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (\ i
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           o +
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             i *
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               s)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [0
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ..
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         2 -
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           1])
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 showChar
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ']')
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   "lineWidthRange = ["
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (let s = sizeOf
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (undefined
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ::
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   FieldType
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "lineWidthRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          o = fieldOffset
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                @"lineWidthRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                @VkPhysicalDeviceLimits
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          f i
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            = peekByteOff
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (unsafePtr
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                i
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ::
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                IO
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (FieldType
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     "lineWidthRange"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     VkPhysicalDeviceLimits)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        in
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        unsafeDupablePerformIO
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          mapM
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            f
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          $
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          map
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (\ i
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ->
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               o +
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 i *
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   s)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [0
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ..
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             2 -
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               1])
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     showChar
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ']')
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "pointSizeGranularity = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           @"pointSizeGranularity"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            "lineWidthGranularity = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 @"lineWidthGranularity"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "strictLines = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       @"strictLines"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "standardSampleLocations = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             @"standardSampleLocations"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              "optimalBufferCopyOffsetAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   @"optimalBufferCopyOffsetAlignment"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "optimalBufferCopyRowPitchAlignment = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         @"optimalBufferCopyRowPitchAlignment"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "nonCoherentAtomSize = "
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               @"nonCoherentAtomSize"
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            showChar
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              '}'
-
--- | > typedef struct VkPhysicalDeviceMaintenance3Properties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         maxPerSetDescriptors;
---   >     VkDeviceSize                     maxMemoryAllocationSize;
---   > } VkPhysicalDeviceMaintenance3Properties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3Properties registry at www.khronos.org>
-type VkPhysicalDeviceMaintenance3Properties =
-     VulkanStruct VkPhysicalDeviceMaintenance3Properties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceMaintenance3Properties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceMaintenance3Properties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceMaintenance3Properties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceMaintenance3Properties where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceMaintenance3Properties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMaintenance3Properties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceMaintenance3Properties where
-        type StructFields VkPhysicalDeviceMaintenance3Properties =
-             '["sType", "pNext", "maxPerSetDescriptors", -- ' closing tick for hsc2hs
-               "maxMemoryAllocationSize"]
-        type CUnionType VkPhysicalDeviceMaintenance3Properties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceMaintenance3Properties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceMaintenance3Properties =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceMaintenance3Properties where
-        type FieldType "sType" VkPhysicalDeviceMaintenance3Properties =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceMaintenance3Properties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceMaintenance3Properties =
-             #{offset VkPhysicalDeviceMaintenance3Properties, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceMaintenance3Properties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMaintenance3Properties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceMaintenance3Properties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMaintenance3Properties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMaintenance3Properties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceMaintenance3Properties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMaintenance3Properties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceMaintenance3Properties where
-        type FieldType "pNext" VkPhysicalDeviceMaintenance3Properties =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceMaintenance3Properties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceMaintenance3Properties =
-             #{offset VkPhysicalDeviceMaintenance3Properties, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceMaintenance3Properties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMaintenance3Properties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceMaintenance3Properties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMaintenance3Properties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMaintenance3Properties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceMaintenance3Properties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMaintenance3Properties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPerSetDescriptors"
-           VkPhysicalDeviceMaintenance3Properties
-         where
-        type FieldType "maxPerSetDescriptors"
-               VkPhysicalDeviceMaintenance3Properties
-             = Word32
-        type FieldOptional "maxPerSetDescriptors"
-               VkPhysicalDeviceMaintenance3Properties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPerSetDescriptors"
-               VkPhysicalDeviceMaintenance3Properties
-             =
-             #{offset VkPhysicalDeviceMaintenance3Properties, maxPerSetDescriptors}
-        type FieldIsArray "maxPerSetDescriptors"
-               VkPhysicalDeviceMaintenance3Properties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMaintenance3Properties, maxPerSetDescriptors}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPerSetDescriptors"
-           VkPhysicalDeviceMaintenance3Properties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMaintenance3Properties, maxPerSetDescriptors})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMaintenance3Properties, maxPerSetDescriptors}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPerSetDescriptors"
-           VkPhysicalDeviceMaintenance3Properties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMaintenance3Properties, maxPerSetDescriptors}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxMemoryAllocationSize"
-           VkPhysicalDeviceMaintenance3Properties
-         where
-        type FieldType "maxMemoryAllocationSize"
-               VkPhysicalDeviceMaintenance3Properties
-             = VkDeviceSize
-        type FieldOptional "maxMemoryAllocationSize"
-               VkPhysicalDeviceMaintenance3Properties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxMemoryAllocationSize"
-               VkPhysicalDeviceMaintenance3Properties
-             =
-             #{offset VkPhysicalDeviceMaintenance3Properties, maxMemoryAllocationSize}
-        type FieldIsArray "maxMemoryAllocationSize"
-               VkPhysicalDeviceMaintenance3Properties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMaintenance3Properties, maxMemoryAllocationSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxMemoryAllocationSize"
-           VkPhysicalDeviceMaintenance3Properties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMaintenance3Properties, maxMemoryAllocationSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMaintenance3Properties, maxMemoryAllocationSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxMemoryAllocationSize"
-           VkPhysicalDeviceMaintenance3Properties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMaintenance3Properties, maxMemoryAllocationSize}
-
-instance Show VkPhysicalDeviceMaintenance3Properties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceMaintenance3Properties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxPerSetDescriptors = " .
-                            showsPrec d (getField @"maxPerSetDescriptors" x) .
-                              showString ", " .
-                                showString "maxMemoryAllocationSize = " .
-                                  showsPrec d (getField @"maxMemoryAllocationSize" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceMaintenance3Properties`
-type VkPhysicalDeviceMaintenance3PropertiesKHR =
-     VkPhysicalDeviceMaintenance3Properties
-
--- | > typedef struct VkPhysicalDeviceMemoryProperties {
---   >     uint32_t               memoryTypeCount;
---   >     VkMemoryType           memoryTypes[VK_MAX_MEMORY_TYPES];
---   >     uint32_t               memoryHeapCount;
---   >     VkMemoryHeap           memoryHeaps[VK_MAX_MEMORY_HEAPS];
---   > } VkPhysicalDeviceMemoryProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMemoryProperties VkPhysicalDeviceMemoryProperties registry at www.khronos.org>
-type VkPhysicalDeviceMemoryProperties =
-     VulkanStruct VkPhysicalDeviceMemoryProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceMemoryProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceMemoryProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceMemoryProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceMemoryProperties where
-        sizeOf ~_ = #{size VkPhysicalDeviceMemoryProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMemoryProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceMemoryProperties where
-        type StructFields VkPhysicalDeviceMemoryProperties =
-             '["memoryTypeCount", "memoryTypes", "memoryHeapCount", -- ' closing tick for hsc2hs
-               "memoryHeaps"]
-        type CUnionType VkPhysicalDeviceMemoryProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceMemoryProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceMemoryProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryTypeCount" VkPhysicalDeviceMemoryProperties where
-        type FieldType "memoryTypeCount" VkPhysicalDeviceMemoryProperties =
-             Word32
-        type FieldOptional "memoryTypeCount"
-               VkPhysicalDeviceMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryTypeCount" VkPhysicalDeviceMemoryProperties
-             =
-             #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
-        type FieldIsArray "memoryTypeCount"
-               VkPhysicalDeviceMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryTypeCount" VkPhysicalDeviceMemoryProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryTypeCount" VkPhysicalDeviceMemoryProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryTypes" VkPhysicalDeviceMemoryProperties where
-        type FieldType "memoryTypes" VkPhysicalDeviceMemoryProperties =
-             VkMemoryType
-        type FieldOptional "memoryTypes" VkPhysicalDeviceMemoryProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryTypes" VkPhysicalDeviceMemoryProperties =
-             #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
-        type FieldIsArray "memoryTypes" VkPhysicalDeviceMemoryProperties =
-             'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "memoryTypes" VkPhysicalDeviceMemoryProperties
-         where
-        type FieldArrayLength "memoryTypes"
-               VkPhysicalDeviceMemoryProperties
-             = VK_MAX_MEMORY_TYPES
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_MEMORY_TYPES
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
-                      + sizeOf (undefined :: VkMemoryType) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
-                 + sizeOf (undefined :: VkMemoryType) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "memoryTypes" VkPhysicalDeviceMemoryProperties
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
-                 + sizeOf (undefined :: VkMemoryType) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryHeapCount" VkPhysicalDeviceMemoryProperties where
-        type FieldType "memoryHeapCount" VkPhysicalDeviceMemoryProperties =
-             Word32
-        type FieldOptional "memoryHeapCount"
-               VkPhysicalDeviceMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryHeapCount" VkPhysicalDeviceMemoryProperties
-             =
-             #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
-        type FieldIsArray "memoryHeapCount"
-               VkPhysicalDeviceMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryHeapCount" VkPhysicalDeviceMemoryProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryHeapCount" VkPhysicalDeviceMemoryProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryHeaps" VkPhysicalDeviceMemoryProperties where
-        type FieldType "memoryHeaps" VkPhysicalDeviceMemoryProperties =
-             VkMemoryHeap
-        type FieldOptional "memoryHeaps" VkPhysicalDeviceMemoryProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryHeaps" VkPhysicalDeviceMemoryProperties =
-             #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
-        type FieldIsArray "memoryHeaps" VkPhysicalDeviceMemoryProperties =
-             'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "memoryHeaps" VkPhysicalDeviceMemoryProperties
-         where
-        type FieldArrayLength "memoryHeaps"
-               VkPhysicalDeviceMemoryProperties
-             = VK_MAX_MEMORY_HEAPS
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_MEMORY_HEAPS
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
-                      + sizeOf (undefined :: VkMemoryHeap) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
-                 + sizeOf (undefined :: VkMemoryHeap) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "memoryHeaps" VkPhysicalDeviceMemoryProperties
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
-                 + sizeOf (undefined :: VkMemoryHeap) * i)
-
-instance Show VkPhysicalDeviceMemoryProperties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceMemoryProperties {" .
-              showString "memoryTypeCount = " .
-                showsPrec d (getField @"memoryTypeCount" x) .
-                  showString ", " .
-                    (showString "memoryTypes = [" .
-                       showsPrec d
-                         (let s = sizeOf
-                                    (undefined ::
-                                       FieldType "memoryTypes" VkPhysicalDeviceMemoryProperties)
-                              o = fieldOffset @"memoryTypes" @VkPhysicalDeviceMemoryProperties
-                              f i
-                                = peekByteOff (unsafePtr x) i ::
-                                    IO (FieldType "memoryTypes" VkPhysicalDeviceMemoryProperties)
-                            in
-                            unsafeDupablePerformIO . mapM f $
-                              map (\ i -> o + i * s) [0 .. VK_MAX_MEMORY_TYPES - 1])
-                         . showChar ']')
-                      .
-                      showString ", " .
-                        showString "memoryHeapCount = " .
-                          showsPrec d (getField @"memoryHeapCount" x) .
-                            showString ", " .
-                              (showString "memoryHeaps = [" .
-                                 showsPrec d
-                                   (let s = sizeOf
-                                              (undefined ::
-                                                 FieldType "memoryHeaps"
-                                                   VkPhysicalDeviceMemoryProperties)
-                                        o = fieldOffset @"memoryHeaps"
-                                              @VkPhysicalDeviceMemoryProperties
-                                        f i
-                                          = peekByteOff (unsafePtr x) i ::
-                                              IO
-                                                (FieldType "memoryHeaps"
-                                                   VkPhysicalDeviceMemoryProperties)
-                                      in
-                                      unsafeDupablePerformIO . mapM f $
-                                        map (\ i -> o + i * s) [0 .. VK_MAX_MEMORY_HEAPS - 1])
-                                   . showChar ']')
-                                . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceMemoryProperties2 {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkPhysicalDeviceMemoryProperties memoryProperties;
---   > } VkPhysicalDeviceMemoryProperties2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
-type VkPhysicalDeviceMemoryProperties2 =
-     VulkanStruct VkPhysicalDeviceMemoryProperties2' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceMemoryProperties2' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceMemoryProperties2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceMemoryProperties2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceMemoryProperties2 where
-        sizeOf ~_ = #{size VkPhysicalDeviceMemoryProperties2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMemoryProperties2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceMemoryProperties2 where
-        type StructFields VkPhysicalDeviceMemoryProperties2 =
-             '["sType", "pNext", "memoryProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceMemoryProperties2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceMemoryProperties2 = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceMemoryProperties2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceMemoryProperties2 where
-        type FieldType "sType" VkPhysicalDeviceMemoryProperties2 =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceMemoryProperties2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceMemoryProperties2 =
-             #{offset VkPhysicalDeviceMemoryProperties2, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceMemoryProperties2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceMemoryProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceMemoryProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceMemoryProperties2 where
-        type FieldType "pNext" VkPhysicalDeviceMemoryProperties2 = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceMemoryProperties2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceMemoryProperties2 =
-             #{offset VkPhysicalDeviceMemoryProperties2, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceMemoryProperties2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceMemoryProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceMemoryProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryProperties" VkPhysicalDeviceMemoryProperties2 where
-        type FieldType "memoryProperties" VkPhysicalDeviceMemoryProperties2
-             = VkPhysicalDeviceMemoryProperties
-        type FieldOptional "memoryProperties"
-               VkPhysicalDeviceMemoryProperties2
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryProperties"
-               VkPhysicalDeviceMemoryProperties2
-             =
-             #{offset VkPhysicalDeviceMemoryProperties2, memoryProperties}
-        type FieldIsArray "memoryProperties"
-               VkPhysicalDeviceMemoryProperties2
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMemoryProperties2, memoryProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryProperties" VkPhysicalDeviceMemoryProperties2
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMemoryProperties2, memoryProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMemoryProperties2, memoryProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryProperties" VkPhysicalDeviceMemoryProperties2
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMemoryProperties2, memoryProperties}
-
-instance Show VkPhysicalDeviceMemoryProperties2 where
-        showsPrec d x
-          = showString "VkPhysicalDeviceMemoryProperties2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memoryProperties = " .
-                            showsPrec d (getField @"memoryProperties" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceMemoryProperties2`
-type VkPhysicalDeviceMemoryProperties2KHR =
-     VkPhysicalDeviceMemoryProperties2
-
--- | > typedef struct VkPhysicalDeviceMultiviewFeatures {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         multiview;
---   >     VkBool32                         multiviewGeometryShader;
---   >     VkBool32                         multiviewTessellationShader;
---   > } VkPhysicalDeviceMultiviewFeatures;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeatures registry at www.khronos.org>
-type VkPhysicalDeviceMultiviewFeatures =
-     VulkanStruct VkPhysicalDeviceMultiviewFeatures' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceMultiviewFeatures' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceMultiviewFeatures where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceMultiviewFeatures where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceMultiviewFeatures where
-        sizeOf ~_ = #{size VkPhysicalDeviceMultiviewFeatures}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMultiviewFeatures}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceMultiviewFeatures where
-        type StructFields VkPhysicalDeviceMultiviewFeatures =
-             '["sType", "pNext", "multiview", "multiviewGeometryShader", -- ' closing tick for hsc2hs
-               "multiviewTessellationShader"]
-        type CUnionType VkPhysicalDeviceMultiviewFeatures = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceMultiviewFeatures = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceMultiviewFeatures =
-             '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceMultiviewFeatures where
-        type FieldType "sType" VkPhysicalDeviceMultiviewFeatures =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceMultiviewFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceMultiviewFeatures =
-             #{offset VkPhysicalDeviceMultiviewFeatures, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceMultiviewFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceMultiviewFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeatures, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceMultiviewFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceMultiviewFeatures where
-        type FieldType "pNext" VkPhysicalDeviceMultiviewFeatures = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceMultiviewFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceMultiviewFeatures =
-             #{offset VkPhysicalDeviceMultiviewFeatures, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceMultiviewFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceMultiviewFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeatures, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceMultiviewFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "multiview" VkPhysicalDeviceMultiviewFeatures where
-        type FieldType "multiview" VkPhysicalDeviceMultiviewFeatures =
-             VkBool32
-        type FieldOptional "multiview" VkPhysicalDeviceMultiviewFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "multiview" VkPhysicalDeviceMultiviewFeatures =
-             #{offset VkPhysicalDeviceMultiviewFeatures, multiview}
-        type FieldIsArray "multiview" VkPhysicalDeviceMultiviewFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeatures, multiview}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "multiview" VkPhysicalDeviceMultiviewFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeatures, multiview})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, multiview}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "multiview" VkPhysicalDeviceMultiviewFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, multiview}
-
-instance {-# OVERLAPPING #-}
-         HasField "multiviewGeometryShader"
-           VkPhysicalDeviceMultiviewFeatures
-         where
-        type FieldType "multiviewGeometryShader"
-               VkPhysicalDeviceMultiviewFeatures
-             = VkBool32
-        type FieldOptional "multiviewGeometryShader"
-               VkPhysicalDeviceMultiviewFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "multiviewGeometryShader"
-               VkPhysicalDeviceMultiviewFeatures
-             =
-             #{offset VkPhysicalDeviceMultiviewFeatures, multiviewGeometryShader}
-        type FieldIsArray "multiviewGeometryShader"
-               VkPhysicalDeviceMultiviewFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeatures, multiviewGeometryShader}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "multiviewGeometryShader"
-           VkPhysicalDeviceMultiviewFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeatures, multiviewGeometryShader})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, multiviewGeometryShader}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "multiviewGeometryShader"
-           VkPhysicalDeviceMultiviewFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, multiviewGeometryShader}
-
-instance {-# OVERLAPPING #-}
-         HasField "multiviewTessellationShader"
-           VkPhysicalDeviceMultiviewFeatures
-         where
-        type FieldType "multiviewTessellationShader"
-               VkPhysicalDeviceMultiviewFeatures
-             = VkBool32
-        type FieldOptional "multiviewTessellationShader"
-               VkPhysicalDeviceMultiviewFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "multiviewTessellationShader"
-               VkPhysicalDeviceMultiviewFeatures
-             =
-             #{offset VkPhysicalDeviceMultiviewFeatures, multiviewTessellationShader}
-        type FieldIsArray "multiviewTessellationShader"
-               VkPhysicalDeviceMultiviewFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewFeatures, multiviewTessellationShader}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "multiviewTessellationShader"
-           VkPhysicalDeviceMultiviewFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewFeatures, multiviewTessellationShader})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, multiviewTessellationShader}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "multiviewTessellationShader"
-           VkPhysicalDeviceMultiviewFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewFeatures, multiviewTessellationShader}
-
-instance Show VkPhysicalDeviceMultiviewFeatures where
-        showsPrec d x
-          = showString "VkPhysicalDeviceMultiviewFeatures {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "multiview = " .
-                            showsPrec d (getField @"multiview" x) .
-                              showString ", " .
-                                showString "multiviewGeometryShader = " .
-                                  showsPrec d (getField @"multiviewGeometryShader" x) .
-                                    showString ", " .
-                                      showString "multiviewTessellationShader = " .
-                                        showsPrec d (getField @"multiviewTessellationShader" x) .
-                                          showChar '}'
-
--- | Alias for `VkPhysicalDeviceMultiviewFeatures`
-type VkPhysicalDeviceMultiviewFeaturesKHR =
-     VkPhysicalDeviceMultiviewFeatures
-
--- | > typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         perViewPositionAllComponents;
---   > } VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX registry at www.khronos.org>
-type VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX =
-     VulkanStruct
-       VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        type StructFields
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = '["sType", "pNext", "perViewPositionAllComponents"] -- ' closing tick for hsc2hs
-        type CUnionType
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = 'True -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             =
-             #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             =
-             #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "perViewPositionAllComponents"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        type FieldType "perViewPositionAllComponents"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = VkBool32
-        type FieldOptional "perViewPositionAllComponents"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "perViewPositionAllComponents"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             =
-             #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
-        type FieldIsArray "perViewPositionAllComponents"
-               VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "perViewPositionAllComponents"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "perViewPositionAllComponents"
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
-
-instance Show
-           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
-         where
-        showsPrec d x
-          = showString
-              "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "perViewPositionAllComponents = " .
-                            showsPrec d (getField @"perViewPositionAllComponents" x) .
-                              showChar '}'
-
--- | > typedef struct VkPhysicalDeviceMultiviewProperties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         maxMultiviewViewCount;
---   >     uint32_t                         maxMultiviewInstanceIndex;
---   > } VkPhysicalDeviceMultiviewProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewProperties registry at www.khronos.org>
-type VkPhysicalDeviceMultiviewProperties =
-     VulkanStruct VkPhysicalDeviceMultiviewProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceMultiviewProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceMultiviewProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceMultiviewProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceMultiviewProperties where
-        sizeOf ~_ = #{size VkPhysicalDeviceMultiviewProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceMultiviewProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceMultiviewProperties where
-        type StructFields VkPhysicalDeviceMultiviewProperties =
-             '["sType", "pNext", "maxMultiviewViewCount", -- ' closing tick for hsc2hs
-               "maxMultiviewInstanceIndex"]
-        type CUnionType VkPhysicalDeviceMultiviewProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceMultiviewProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceMultiviewProperties =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceMultiviewProperties where
-        type FieldType "sType" VkPhysicalDeviceMultiviewProperties =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceMultiviewProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceMultiviewProperties =
-             #{offset VkPhysicalDeviceMultiviewProperties, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceMultiviewProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceMultiviewProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceMultiviewProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceMultiviewProperties where
-        type FieldType "pNext" VkPhysicalDeviceMultiviewProperties =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceMultiviewProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceMultiviewProperties =
-             #{offset VkPhysicalDeviceMultiviewProperties, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceMultiviewProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceMultiviewProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceMultiviewProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxMultiviewViewCount"
-           VkPhysicalDeviceMultiviewProperties
-         where
-        type FieldType "maxMultiviewViewCount"
-               VkPhysicalDeviceMultiviewProperties
-             = Word32
-        type FieldOptional "maxMultiviewViewCount"
-               VkPhysicalDeviceMultiviewProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxMultiviewViewCount"
-               VkPhysicalDeviceMultiviewProperties
-             =
-             #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewViewCount}
-        type FieldIsArray "maxMultiviewViewCount"
-               VkPhysicalDeviceMultiviewProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewViewCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxMultiviewViewCount"
-           VkPhysicalDeviceMultiviewProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewViewCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewViewCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxMultiviewViewCount"
-           VkPhysicalDeviceMultiviewProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewViewCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxMultiviewInstanceIndex"
-           VkPhysicalDeviceMultiviewProperties
-         where
-        type FieldType "maxMultiviewInstanceIndex"
-               VkPhysicalDeviceMultiviewProperties
-             = Word32
-        type FieldOptional "maxMultiviewInstanceIndex"
-               VkPhysicalDeviceMultiviewProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxMultiviewInstanceIndex"
-               VkPhysicalDeviceMultiviewProperties
-             =
-             #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewInstanceIndex}
-        type FieldIsArray "maxMultiviewInstanceIndex"
-               VkPhysicalDeviceMultiviewProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewInstanceIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxMultiviewInstanceIndex"
-           VkPhysicalDeviceMultiviewProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewInstanceIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewInstanceIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxMultiviewInstanceIndex"
-           VkPhysicalDeviceMultiviewProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewInstanceIndex}
-
-instance Show VkPhysicalDeviceMultiviewProperties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceMultiviewProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxMultiviewViewCount = " .
-                            showsPrec d (getField @"maxMultiviewViewCount" x) .
-                              showString ", " .
-                                showString "maxMultiviewInstanceIndex = " .
-                                  showsPrec d (getField @"maxMultiviewInstanceIndex" x) .
-                                    showChar '}'
-
--- | Alias for `VkPhysicalDeviceMultiviewProperties`
-type VkPhysicalDeviceMultiviewPropertiesKHR =
-     VkPhysicalDeviceMultiviewProperties
-
--- | > typedef struct VkPhysicalDevicePointClippingProperties {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkPointClippingBehavior      pointClippingBehavior;
---   > } VkPhysicalDevicePointClippingProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingProperties registry at www.khronos.org>
-type VkPhysicalDevicePointClippingProperties =
-     VulkanStruct VkPhysicalDevicePointClippingProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDevicePointClippingProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDevicePointClippingProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDevicePointClippingProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDevicePointClippingProperties where
-        sizeOf ~_
-          = #{size VkPhysicalDevicePointClippingProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDevicePointClippingProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDevicePointClippingProperties
-         where
-        type StructFields VkPhysicalDevicePointClippingProperties =
-             '["sType", "pNext", "pointClippingBehavior"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDevicePointClippingProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDevicePointClippingProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDevicePointClippingProperties =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDevicePointClippingProperties where
-        type FieldType "sType" VkPhysicalDevicePointClippingProperties =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDevicePointClippingProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDevicePointClippingProperties =
-             #{offset VkPhysicalDevicePointClippingProperties, sType}
-        type FieldIsArray "sType" VkPhysicalDevicePointClippingProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePointClippingProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDevicePointClippingProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePointClippingProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevicePointClippingProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDevicePointClippingProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevicePointClippingProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDevicePointClippingProperties where
-        type FieldType "pNext" VkPhysicalDevicePointClippingProperties =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDevicePointClippingProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDevicePointClippingProperties =
-             #{offset VkPhysicalDevicePointClippingProperties, pNext}
-        type FieldIsArray "pNext" VkPhysicalDevicePointClippingProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePointClippingProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDevicePointClippingProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePointClippingProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevicePointClippingProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDevicePointClippingProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevicePointClippingProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pointClippingBehavior"
-           VkPhysicalDevicePointClippingProperties
-         where
-        type FieldType "pointClippingBehavior"
-               VkPhysicalDevicePointClippingProperties
-             = VkPointClippingBehavior
-        type FieldOptional "pointClippingBehavior"
-               VkPhysicalDevicePointClippingProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pointClippingBehavior"
-               VkPhysicalDevicePointClippingProperties
-             =
-             #{offset VkPhysicalDevicePointClippingProperties, pointClippingBehavior}
-        type FieldIsArray "pointClippingBehavior"
-               VkPhysicalDevicePointClippingProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePointClippingProperties, pointClippingBehavior}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pointClippingBehavior"
-           VkPhysicalDevicePointClippingProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePointClippingProperties, pointClippingBehavior})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevicePointClippingProperties, pointClippingBehavior}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pointClippingBehavior"
-           VkPhysicalDevicePointClippingProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevicePointClippingProperties, pointClippingBehavior}
-
-instance Show VkPhysicalDevicePointClippingProperties where
-        showsPrec d x
-          = showString "VkPhysicalDevicePointClippingProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pointClippingBehavior = " .
-                            showsPrec d (getField @"pointClippingBehavior" x) . showChar '}'
-
--- | Alias for `VkPhysicalDevicePointClippingProperties`
-type VkPhysicalDevicePointClippingPropertiesKHR =
-     VkPhysicalDevicePointClippingProperties
-
--- | > typedef struct VkPhysicalDeviceProperties {
---   >     uint32_t       apiVersion;
---   >     uint32_t       driverVersion;
---   >     uint32_t       vendorID;
---   >     uint32_t       deviceID;
---   >     VkPhysicalDeviceType deviceType;
---   >     char           deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
---   >     uint8_t        pipelineCacheUUID[VK_UUID_SIZE];
---   >     VkPhysicalDeviceLimits limits;
---   >     VkPhysicalDeviceSparseProperties sparseProperties;
---   > } VkPhysicalDeviceProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceProperties VkPhysicalDeviceProperties registry at www.khronos.org>
-type VkPhysicalDeviceProperties =
-     VulkanStruct VkPhysicalDeviceProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceProperties where
-        sizeOf ~_ = #{size VkPhysicalDeviceProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPhysicalDeviceProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceProperties where
-        type StructFields VkPhysicalDeviceProperties =
-             '["apiVersion", "driverVersion", "vendorID", "deviceID", -- ' closing tick for hsc2hs
-               "deviceType", "deviceName", "pipelineCacheUUID", "limits",
-               "sparseProperties"]
-        type CUnionType VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "apiVersion" VkPhysicalDeviceProperties where
-        type FieldType "apiVersion" VkPhysicalDeviceProperties = Word32
-        type FieldOptional "apiVersion" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "apiVersion" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, apiVersion}
-        type FieldIsArray "apiVersion" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, apiVersion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "apiVersion" VkPhysicalDeviceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, apiVersion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, apiVersion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "apiVersion" VkPhysicalDeviceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, apiVersion}
-
-instance {-# OVERLAPPING #-}
-         HasField "driverVersion" VkPhysicalDeviceProperties where
-        type FieldType "driverVersion" VkPhysicalDeviceProperties = Word32
-        type FieldOptional "driverVersion" VkPhysicalDeviceProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "driverVersion" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, driverVersion}
-        type FieldIsArray "driverVersion" VkPhysicalDeviceProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, driverVersion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "driverVersion" VkPhysicalDeviceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, driverVersion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, driverVersion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "driverVersion" VkPhysicalDeviceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, driverVersion}
-
-instance {-# OVERLAPPING #-}
-         HasField "vendorID" VkPhysicalDeviceProperties where
-        type FieldType "vendorID" VkPhysicalDeviceProperties = Word32
-        type FieldOptional "vendorID" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "vendorID" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, vendorID}
-        type FieldIsArray "vendorID" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, vendorID}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vendorID" VkPhysicalDeviceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, vendorID})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, vendorID}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vendorID" VkPhysicalDeviceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, vendorID}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceID" VkPhysicalDeviceProperties where
-        type FieldType "deviceID" VkPhysicalDeviceProperties = Word32
-        type FieldOptional "deviceID" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceID" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, deviceID}
-        type FieldIsArray "deviceID" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, deviceID}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceID" VkPhysicalDeviceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, deviceID})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, deviceID}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceID" VkPhysicalDeviceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, deviceID}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceType" VkPhysicalDeviceProperties where
-        type FieldType "deviceType" VkPhysicalDeviceProperties =
-             VkPhysicalDeviceType
-        type FieldOptional "deviceType" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceType" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, deviceType}
-        type FieldIsArray "deviceType" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, deviceType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "deviceType" VkPhysicalDeviceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, deviceType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, deviceType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "deviceType" VkPhysicalDeviceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, deviceType}
-
-instance {-# OVERLAPPING #-}
-         HasField "deviceName" VkPhysicalDeviceProperties where
-        type FieldType "deviceName" VkPhysicalDeviceProperties = CChar
-        type FieldOptional "deviceName" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "deviceName" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, deviceName}
-        type FieldIsArray "deviceName" VkPhysicalDeviceProperties = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, deviceName}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "deviceName" VkPhysicalDeviceProperties where
-        type FieldArrayLength "deviceName" VkPhysicalDeviceProperties =
-             VK_MAX_PHYSICAL_DEVICE_NAME_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_MAX_PHYSICAL_DEVICE_NAME_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceProperties, deviceName} +
-                      sizeOf (undefined :: CChar) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceProperties, deviceName} +
-                 sizeOf (undefined :: CChar) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "deviceName" VkPhysicalDeviceProperties where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceProperties, deviceName} +
-                 sizeOf (undefined :: CChar) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineCacheUUID" VkPhysicalDeviceProperties where
-        type FieldType "pipelineCacheUUID" VkPhysicalDeviceProperties =
-             Word8
-        type FieldOptional "pipelineCacheUUID" VkPhysicalDeviceProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineCacheUUID" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
-        type FieldIsArray "pipelineCacheUUID" VkPhysicalDeviceProperties =
-             'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "pipelineCacheUUID" VkPhysicalDeviceProperties
-         where
-        type FieldArrayLength "pipelineCacheUUID"
-               VkPhysicalDeviceProperties
-             = VK_UUID_SIZE
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = VK_UUID_SIZE
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
-                      + sizeOf (undefined :: Word8) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
-                 + sizeOf (undefined :: Word8) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "pipelineCacheUUID" VkPhysicalDeviceProperties
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
-                 + sizeOf (undefined :: Word8) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "limits" VkPhysicalDeviceProperties where
-        type FieldType "limits" VkPhysicalDeviceProperties =
-             VkPhysicalDeviceLimits
-        type FieldOptional "limits" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "limits" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, limits}
-        type FieldIsArray "limits" VkPhysicalDeviceProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, limits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "limits" VkPhysicalDeviceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, limits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, limits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "limits" VkPhysicalDeviceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, limits}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseProperties" VkPhysicalDeviceProperties where
-        type FieldType "sparseProperties" VkPhysicalDeviceProperties =
-             VkPhysicalDeviceSparseProperties
-        type FieldOptional "sparseProperties" VkPhysicalDeviceProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseProperties" VkPhysicalDeviceProperties =
-             #{offset VkPhysicalDeviceProperties, sparseProperties}
-        type FieldIsArray "sparseProperties" VkPhysicalDeviceProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties, sparseProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseProperties" VkPhysicalDeviceProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties, sparseProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties, sparseProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseProperties" VkPhysicalDeviceProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties, sparseProperties}
-
-instance Show VkPhysicalDeviceProperties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceProperties {" .
-              showString "apiVersion = " .
-                showsPrec d (getField @"apiVersion" x) .
-                  showString ", " .
-                    showString "driverVersion = " .
-                      showsPrec d (getField @"driverVersion" x) .
-                        showString ", " .
-                          showString "vendorID = " .
-                            showsPrec d (getField @"vendorID" x) .
-                              showString ", " .
-                                showString "deviceID = " .
-                                  showsPrec d (getField @"deviceID" x) .
-                                    showString ", " .
-                                      showString "deviceType = " .
-                                        showsPrec d (getField @"deviceType" x) .
-                                          showString ", " .
-                                            (showString "deviceName = [" .
-                                               showsPrec d
-                                                 (let s = sizeOf
-                                                            (undefined ::
-                                                               FieldType "deviceName"
-                                                                 VkPhysicalDeviceProperties)
-                                                      o = fieldOffset @"deviceName"
-                                                            @VkPhysicalDeviceProperties
-                                                      f i
-                                                        = peekByteOff (unsafePtr x) i ::
-                                                            IO
-                                                              (FieldType "deviceName"
-                                                                 VkPhysicalDeviceProperties)
-                                                    in
-                                                    unsafeDupablePerformIO . mapM f $
-                                                      map (\ i -> o + i * s)
-                                                        [0 .. VK_MAX_PHYSICAL_DEVICE_NAME_SIZE - 1])
-                                                 . showChar ']')
-                                              .
-                                              showString ", " .
-                                                (showString "pipelineCacheUUID = [" .
-                                                   showsPrec d
-                                                     (let s = sizeOf
-                                                                (undefined ::
-                                                                   FieldType "pipelineCacheUUID"
-                                                                     VkPhysicalDeviceProperties)
-                                                          o = fieldOffset @"pipelineCacheUUID"
-                                                                @VkPhysicalDeviceProperties
-                                                          f i
-                                                            = peekByteOff (unsafePtr x) i ::
-                                                                IO
-                                                                  (FieldType "pipelineCacheUUID"
-                                                                     VkPhysicalDeviceProperties)
-                                                        in
-                                                        unsafeDupablePerformIO . mapM f $
-                                                          map (\ i -> o + i * s)
-                                                            [0 .. VK_UUID_SIZE - 1])
-                                                     . showChar ']')
-                                                  .
-                                                  showString ", " .
-                                                    showString "limits = " .
-                                                      showsPrec d (getField @"limits" x) .
-                                                        showString ", " .
-                                                          showString "sparseProperties = " .
-                                                            showsPrec d
-                                                              (getField @"sparseProperties" x)
-                                                              . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceProperties2 {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkPhysicalDeviceProperties       properties;
---   > } VkPhysicalDeviceProperties2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2 registry at www.khronos.org>
-type VkPhysicalDeviceProperties2 =
-     VulkanStruct VkPhysicalDeviceProperties2' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceProperties2' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceProperties2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceProperties2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceProperties2 where
-        sizeOf ~_ = #{size VkPhysicalDeviceProperties2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPhysicalDeviceProperties2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceProperties2 where
-        type StructFields VkPhysicalDeviceProperties2 =
-             '["sType", "pNext", "properties"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceProperties2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceProperties2 = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceProperties2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceProperties2 where
-        type FieldType "sType" VkPhysicalDeviceProperties2 =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceProperties2 =
-             #{offset VkPhysicalDeviceProperties2, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceProperties2 where
-        type FieldType "pNext" VkPhysicalDeviceProperties2 = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceProperties2 =
-             #{offset VkPhysicalDeviceProperties2, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "properties" VkPhysicalDeviceProperties2 where
-        type FieldType "properties" VkPhysicalDeviceProperties2 =
-             VkPhysicalDeviceProperties
-        type FieldOptional "properties" VkPhysicalDeviceProperties2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "properties" VkPhysicalDeviceProperties2 =
-             #{offset VkPhysicalDeviceProperties2, properties}
-        type FieldIsArray "properties" VkPhysicalDeviceProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProperties2, properties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "properties" VkPhysicalDeviceProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProperties2, properties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProperties2, properties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "properties" VkPhysicalDeviceProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProperties2, properties}
-
-instance Show VkPhysicalDeviceProperties2 where
-        showsPrec d x
-          = showString "VkPhysicalDeviceProperties2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "properties = " .
-                            showsPrec d (getField @"properties" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceProperties2`
-type VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2
-
--- | > typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
---   >     VkStructureType sType;
---   >     void*                               pNext;
---   >     VkBool32                            protectedMemory;
---   > } VkPhysicalDeviceProtectedMemoryFeatures;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceProtectedMemoryFeatures VkPhysicalDeviceProtectedMemoryFeatures registry at www.khronos.org>
-type VkPhysicalDeviceProtectedMemoryFeatures =
-     VulkanStruct VkPhysicalDeviceProtectedMemoryFeatures' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceProtectedMemoryFeatures' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceProtectedMemoryFeatures where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceProtectedMemoryFeatures where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceProtectedMemoryFeatures where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceProtectedMemoryFeatures}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceProtectedMemoryFeatures}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceProtectedMemoryFeatures
-         where
-        type StructFields VkPhysicalDeviceProtectedMemoryFeatures =
-             '["sType", "pNext", "protectedMemory"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceProtectedMemoryFeatures = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceProtectedMemoryFeatures = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceProtectedMemoryFeatures =
-             '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceProtectedMemoryFeatures where
-        type FieldType "sType" VkPhysicalDeviceProtectedMemoryFeatures =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceProtectedMemoryFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceProtectedMemoryFeatures =
-             #{offset VkPhysicalDeviceProtectedMemoryFeatures, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceProtectedMemoryFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProtectedMemoryFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceProtectedMemoryFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProtectedMemoryFeatures, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProtectedMemoryFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceProtectedMemoryFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProtectedMemoryFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceProtectedMemoryFeatures where
-        type FieldType "pNext" VkPhysicalDeviceProtectedMemoryFeatures =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceProtectedMemoryFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceProtectedMemoryFeatures =
-             #{offset VkPhysicalDeviceProtectedMemoryFeatures, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceProtectedMemoryFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProtectedMemoryFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceProtectedMemoryFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProtectedMemoryFeatures, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProtectedMemoryFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceProtectedMemoryFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProtectedMemoryFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "protectedMemory" VkPhysicalDeviceProtectedMemoryFeatures
-         where
-        type FieldType "protectedMemory"
-               VkPhysicalDeviceProtectedMemoryFeatures
-             = VkBool32
-        type FieldOptional "protectedMemory"
-               VkPhysicalDeviceProtectedMemoryFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "protectedMemory"
-               VkPhysicalDeviceProtectedMemoryFeatures
-             =
-             #{offset VkPhysicalDeviceProtectedMemoryFeatures, protectedMemory}
-        type FieldIsArray "protectedMemory"
-               VkPhysicalDeviceProtectedMemoryFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProtectedMemoryFeatures, protectedMemory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "protectedMemory"
-           VkPhysicalDeviceProtectedMemoryFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProtectedMemoryFeatures, protectedMemory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProtectedMemoryFeatures, protectedMemory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "protectedMemory"
-           VkPhysicalDeviceProtectedMemoryFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProtectedMemoryFeatures, protectedMemory}
-
-instance Show VkPhysicalDeviceProtectedMemoryFeatures where
-        showsPrec d x
-          = showString "VkPhysicalDeviceProtectedMemoryFeatures {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "protectedMemory = " .
-                            showsPrec d (getField @"protectedMemory" x) . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceProtectedMemoryProperties {
---   >     VkStructureType sType;
---   >     void*                               pNext;
---   >     VkBool32                            protectedNoFault;
---   > } VkPhysicalDeviceProtectedMemoryProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceProtectedMemoryProperties VkPhysicalDeviceProtectedMemoryProperties registry at www.khronos.org>
-type VkPhysicalDeviceProtectedMemoryProperties =
-     VulkanStruct VkPhysicalDeviceProtectedMemoryProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceProtectedMemoryProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceProtectedMemoryProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceProtectedMemoryProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceProtectedMemoryProperties where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceProtectedMemoryProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceProtectedMemoryProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceProtectedMemoryProperties
-         where
-        type StructFields VkPhysicalDeviceProtectedMemoryProperties =
-             '["sType", "pNext", "protectedNoFault"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceProtectedMemoryProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceProtectedMemoryProperties =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceProtectedMemoryProperties =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceProtectedMemoryProperties where
-        type FieldType "sType" VkPhysicalDeviceProtectedMemoryProperties =
-             VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceProtectedMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceProtectedMemoryProperties
-             =
-             #{offset VkPhysicalDeviceProtectedMemoryProperties, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceProtectedMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProtectedMemoryProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceProtectedMemoryProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProtectedMemoryProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProtectedMemoryProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceProtectedMemoryProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProtectedMemoryProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceProtectedMemoryProperties where
-        type FieldType "pNext" VkPhysicalDeviceProtectedMemoryProperties =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceProtectedMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceProtectedMemoryProperties
-             =
-             #{offset VkPhysicalDeviceProtectedMemoryProperties, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceProtectedMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProtectedMemoryProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceProtectedMemoryProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProtectedMemoryProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProtectedMemoryProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceProtectedMemoryProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProtectedMemoryProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "protectedNoFault"
-           VkPhysicalDeviceProtectedMemoryProperties
-         where
-        type FieldType "protectedNoFault"
-               VkPhysicalDeviceProtectedMemoryProperties
-             = VkBool32
-        type FieldOptional "protectedNoFault"
-               VkPhysicalDeviceProtectedMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "protectedNoFault"
-               VkPhysicalDeviceProtectedMemoryProperties
-             =
-             #{offset VkPhysicalDeviceProtectedMemoryProperties, protectedNoFault}
-        type FieldIsArray "protectedNoFault"
-               VkPhysicalDeviceProtectedMemoryProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceProtectedMemoryProperties, protectedNoFault}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "protectedNoFault"
-           VkPhysicalDeviceProtectedMemoryProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceProtectedMemoryProperties, protectedNoFault})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceProtectedMemoryProperties, protectedNoFault}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "protectedNoFault"
-           VkPhysicalDeviceProtectedMemoryProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceProtectedMemoryProperties, protectedNoFault}
-
-instance Show VkPhysicalDeviceProtectedMemoryProperties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceProtectedMemoryProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "protectedNoFault = " .
-                            showsPrec d (getField @"protectedNoFault" x) . showChar '}'
-
--- | > typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         maxPushDescriptors;
---   > } VkPhysicalDevicePushDescriptorPropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDevicePushDescriptorPropertiesKHR VkPhysicalDevicePushDescriptorPropertiesKHR registry at www.khronos.org>
-type VkPhysicalDevicePushDescriptorPropertiesKHR =
-     VulkanStruct VkPhysicalDevicePushDescriptorPropertiesKHR' -- ' closing tick for hsc2hs
-
-data VkPhysicalDevicePushDescriptorPropertiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDevicePushDescriptorPropertiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDevicePushDescriptorPropertiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDevicePushDescriptorPropertiesKHR where
-        sizeOf ~_
-          = #{size VkPhysicalDevicePushDescriptorPropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDevicePushDescriptorPropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        type StructFields VkPhysicalDevicePushDescriptorPropertiesKHR =
-             '["sType", "pNext", "maxPushDescriptors"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDevicePushDescriptorPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDevicePushDescriptorPropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDevicePushDescriptorPropertiesKHR =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDevicePushDescriptorPropertiesKHR where
-        type FieldType "sType" VkPhysicalDevicePushDescriptorPropertiesKHR
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             =
-             #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDevicePushDescriptorPropertiesKHR where
-        type FieldType "pNext" VkPhysicalDevicePushDescriptorPropertiesKHR
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             =
-             #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxPushDescriptors"
-           VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        type FieldType "maxPushDescriptors"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             = Word32
-        type FieldOptional "maxPushDescriptors"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxPushDescriptors"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             =
-             #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
-        type FieldIsArray "maxPushDescriptors"
-               VkPhysicalDevicePushDescriptorPropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxPushDescriptors"
-           VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxPushDescriptors"
-           VkPhysicalDevicePushDescriptorPropertiesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
-
-instance Show VkPhysicalDevicePushDescriptorPropertiesKHR where
-        showsPrec d x
-          = showString "VkPhysicalDevicePushDescriptorPropertiesKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxPushDescriptors = " .
-                            showsPrec d (getField @"maxPushDescriptors" x) . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkSampleCountFlags               sampleLocationSampleCounts;
---   >     VkExtent2D                       maxSampleLocationGridSize;
---   >     float                            sampleLocationCoordinateRange[2];
---   >     uint32_t                         sampleLocationSubPixelBits;
---   >     VkBool32                         variableSampleLocations;
---   > } VkPhysicalDeviceSampleLocationsPropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSampleLocationsPropertiesEXT VkPhysicalDeviceSampleLocationsPropertiesEXT registry at www.khronos.org>
-type VkPhysicalDeviceSampleLocationsPropertiesEXT =
-     VulkanStruct VkPhysicalDeviceSampleLocationsPropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceSampleLocationsPropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceSampleLocationsPropertiesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSampleLocationsPropertiesEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceSampleLocationsPropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSampleLocationsPropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        type StructFields VkPhysicalDeviceSampleLocationsPropertiesEXT =
-             '["sType", "pNext", "sampleLocationSampleCounts", -- ' closing tick for hsc2hs
-               "maxSampleLocationGridSize", "sampleLocationCoordinateRange",
-               "sampleLocationSubPixelBits", "variableSampleLocations"]
-        type CUnionType VkPhysicalDeviceSampleLocationsPropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSampleLocationsPropertiesEXT =
-             'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceSampleLocationsPropertiesEXT =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceSampleLocationsPropertiesEXT where
-        type FieldType "sType" VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceSampleLocationsPropertiesEXT where
-        type FieldType "pNext" VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationSampleCounts"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        type FieldType "sampleLocationSampleCounts"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = VkSampleCountFlags
-        type FieldOptional "sampleLocationSampleCounts"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationSampleCounts"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
-        type FieldIsArray "sampleLocationSampleCounts"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationSampleCounts"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationSampleCounts"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSampleLocationGridSize"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        type FieldType "maxSampleLocationGridSize"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = VkExtent2D
-        type FieldOptional "maxSampleLocationGridSize"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSampleLocationGridSize"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
-        type FieldIsArray "maxSampleLocationGridSize"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSampleLocationGridSize"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSampleLocationGridSize"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationCoordinateRange"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        type FieldType "sampleLocationCoordinateRange"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = #{type float}
-        type FieldOptional "sampleLocationCoordinateRange"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationCoordinateRange"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
-        type FieldIsArray "sampleLocationCoordinateRange"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "sampleLocationCoordinateRange"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        type FieldArrayLength "sampleLocationCoordinateRange"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 2
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 2
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
-                      + sizeOf (undefined :: #{type float}) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
-                 + sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "sampleLocationCoordinateRange"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
-                 + sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationSubPixelBits"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        type FieldType "sampleLocationSubPixelBits"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = Word32
-        type FieldOptional "sampleLocationSubPixelBits"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationSubPixelBits"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
-        type FieldIsArray "sampleLocationSubPixelBits"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationSubPixelBits"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationSubPixelBits"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
-
-instance {-# OVERLAPPING #-}
-         HasField "variableSampleLocations"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        type FieldType "variableSampleLocations"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = VkBool32
-        type FieldOptional "variableSampleLocations"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "variableSampleLocations"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
-        type FieldIsArray "variableSampleLocations"
-               VkPhysicalDeviceSampleLocationsPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "variableSampleLocations"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "variableSampleLocations"
-           VkPhysicalDeviceSampleLocationsPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
-
-instance Show VkPhysicalDeviceSampleLocationsPropertiesEXT where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSampleLocationsPropertiesEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "sampleLocationSampleCounts = " .
-                            showsPrec d (getField @"sampleLocationSampleCounts" x) .
-                              showString ", " .
-                                showString "maxSampleLocationGridSize = " .
-                                  showsPrec d (getField @"maxSampleLocationGridSize" x) .
-                                    showString ", " .
-                                      (showString "sampleLocationCoordinateRange = [" .
-                                         showsPrec d
-                                           (let s = sizeOf
-                                                      (undefined ::
-                                                         FieldType "sampleLocationCoordinateRange"
-                                                           VkPhysicalDeviceSampleLocationsPropertiesEXT)
-                                                o = fieldOffset @"sampleLocationCoordinateRange"
-                                                      @VkPhysicalDeviceSampleLocationsPropertiesEXT
-                                                f i
-                                                  = peekByteOff (unsafePtr x) i ::
-                                                      IO
-                                                        (FieldType "sampleLocationCoordinateRange"
-                                                           VkPhysicalDeviceSampleLocationsPropertiesEXT)
-                                              in
-                                              unsafeDupablePerformIO . mapM f $
-                                                map (\ i -> o + i * s) [0 .. 2 - 1])
-                                           . showChar ']')
-                                        .
-                                        showString ", " .
-                                          showString "sampleLocationSubPixelBits = " .
-                                            showsPrec d (getField @"sampleLocationSubPixelBits" x) .
-                                              showString ", " .
-                                                showString "variableSampleLocations = " .
-                                                  showsPrec d
-                                                    (getField @"variableSampleLocations" x)
-                                                    . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
---   >     VkStructureType sType;
---   >     void*                  pNext;
---   >     VkBool32               filterMinmaxSingleComponentFormats;
---   >     VkBool32               filterMinmaxImageComponentMapping;
---   > } VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT registry at www.khronos.org>
-type VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
-     VulkanStruct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        type StructFields VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             =
-             '["sType", "pNext", "filterMinmaxSingleComponentFormats", -- ' closing tick for hsc2hs
-               "filterMinmaxImageComponentMapping"]
-        type CUnionType VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "filterMinmaxSingleComponentFormats"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        type FieldType "filterMinmaxSingleComponentFormats"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = VkBool32
-        type FieldOptional "filterMinmaxSingleComponentFormats"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "filterMinmaxSingleComponentFormats"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
-        type FieldIsArray "filterMinmaxSingleComponentFormats"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "filterMinmaxSingleComponentFormats"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "filterMinmaxSingleComponentFormats"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
-
-instance {-# OVERLAPPING #-}
-         HasField "filterMinmaxImageComponentMapping"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        type FieldType "filterMinmaxImageComponentMapping"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = VkBool32
-        type FieldOptional "filterMinmaxImageComponentMapping"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "filterMinmaxImageComponentMapping"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
-        type FieldIsArray "filterMinmaxImageComponentMapping"
-               VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "filterMinmaxImageComponentMapping"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "filterMinmaxImageComponentMapping"
-           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
-
-instance Show VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
-         where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "filterMinmaxSingleComponentFormats = " .
-                            showsPrec d (getField @"filterMinmaxSingleComponentFormats" x) .
-                              showString ", " .
-                                showString "filterMinmaxImageComponentMapping = " .
-                                  showsPrec d (getField @"filterMinmaxImageComponentMapping" x) .
-                                    showChar '}'
-
--- | > typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
---   >     VkStructureType sType;
---   >     void*      pNext;
---   >     VkBool32                         samplerYcbcrConversion;
---   > } VkPhysicalDeviceSamplerYcbcrConversionFeatures;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeatures registry at www.khronos.org>
-type VkPhysicalDeviceSamplerYcbcrConversionFeatures =
-     VulkanStruct VkPhysicalDeviceSamplerYcbcrConversionFeatures' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceSamplerYcbcrConversionFeatures' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceSamplerYcbcrConversionFeatures where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSamplerYcbcrConversionFeatures where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceSamplerYcbcrConversionFeatures}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSamplerYcbcrConversionFeatures}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        type StructFields VkPhysicalDeviceSamplerYcbcrConversionFeatures =
-             '["sType", "pNext", "samplerYcbcrConversion"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceSamplerYcbcrConversionFeatures =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSamplerYcbcrConversionFeatures =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceSamplerYcbcrConversionFeatures =
-             '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             =
-             #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             =
-             #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "samplerYcbcrConversion"
-           VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        type FieldType "samplerYcbcrConversion"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = VkBool32
-        type FieldOptional "samplerYcbcrConversion"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "samplerYcbcrConversion"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             =
-             #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, samplerYcbcrConversion}
-        type FieldIsArray "samplerYcbcrConversion"
-               VkPhysicalDeviceSamplerYcbcrConversionFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, samplerYcbcrConversion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "samplerYcbcrConversion"
-           VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, samplerYcbcrConversion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, samplerYcbcrConversion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "samplerYcbcrConversion"
-           VkPhysicalDeviceSamplerYcbcrConversionFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, samplerYcbcrConversion}
-
-instance Show VkPhysicalDeviceSamplerYcbcrConversionFeatures where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSamplerYcbcrConversionFeatures {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "samplerYcbcrConversion = " .
-                            showsPrec d (getField @"samplerYcbcrConversion" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceSamplerYcbcrConversionFeatures`
-type VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
-     VkPhysicalDeviceSamplerYcbcrConversionFeatures
-
--- | > typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
---   >     VkStructureType sType;
---   >     void*    pNext;
---   >     uint32_t shaderEngineCount;
---   >     uint32_t shaderArraysPerEngineCount;
---   >     uint32_t computeUnitsPerShaderArray;
---   >     uint32_t simdPerComputeUnit;
---   >     uint32_t wavefrontsPerSimd;
---   >     uint32_t wavefrontSize;
---   >     uint32_t sgprsPerSimd;
---   >     uint32_t minSgprAllocation;
---   >     uint32_t maxSgprAllocation;
---   >     uint32_t sgprAllocationGranularity;
---   >     uint32_t vgprsPerSimd;
---   >     uint32_t minVgprAllocation;
---   >     uint32_t maxVgprAllocation;
---   >     uint32_t vgprAllocationGranularity;
---   > } VkPhysicalDeviceShaderCorePropertiesAMD;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceShaderCorePropertiesAMD VkPhysicalDeviceShaderCorePropertiesAMD registry at www.khronos.org>
-type VkPhysicalDeviceShaderCorePropertiesAMD =
-     VulkanStruct VkPhysicalDeviceShaderCorePropertiesAMD' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceShaderCorePropertiesAMD' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceShaderCorePropertiesAMD where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceShaderCorePropertiesAMD where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceShaderCorePropertiesAMD where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceShaderCorePropertiesAMD}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceShaderCorePropertiesAMD}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type StructFields VkPhysicalDeviceShaderCorePropertiesAMD =
-             '["sType", "pNext", "shaderEngineCount", -- ' closing tick for hsc2hs
-               "shaderArraysPerEngineCount", "computeUnitsPerShaderArray",
-               "simdPerComputeUnit", "wavefrontsPerSimd", "wavefrontSize",
-               "sgprsPerSimd", "minSgprAllocation", "maxSgprAllocation",
-               "sgprAllocationGranularity", "vgprsPerSimd", "minVgprAllocation",
-               "maxVgprAllocation", "vgprAllocationGranularity"]
-        type CUnionType VkPhysicalDeviceShaderCorePropertiesAMD = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceShaderCorePropertiesAMD = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceShaderCorePropertiesAMD =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceShaderCorePropertiesAMD where
-        type FieldType "sType" VkPhysicalDeviceShaderCorePropertiesAMD =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceShaderCorePropertiesAMD =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceShaderCorePropertiesAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceShaderCorePropertiesAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceShaderCorePropertiesAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceShaderCorePropertiesAMD where
-        type FieldType "pNext" VkPhysicalDeviceShaderCorePropertiesAMD =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceShaderCorePropertiesAMD =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceShaderCorePropertiesAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceShaderCorePropertiesAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceShaderCorePropertiesAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderEngineCount"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "shaderEngineCount"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "shaderEngineCount"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderEngineCount"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderEngineCount}
-        type FieldIsArray "shaderEngineCount"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderEngineCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderEngineCount"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderEngineCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderEngineCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderEngineCount"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderEngineCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderArraysPerEngineCount"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "shaderArraysPerEngineCount"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "shaderArraysPerEngineCount"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderArraysPerEngineCount"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderArraysPerEngineCount}
-        type FieldIsArray "shaderArraysPerEngineCount"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderArraysPerEngineCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderArraysPerEngineCount"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderArraysPerEngineCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderArraysPerEngineCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderArraysPerEngineCount"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderArraysPerEngineCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "computeUnitsPerShaderArray"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "computeUnitsPerShaderArray"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "computeUnitsPerShaderArray"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "computeUnitsPerShaderArray"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, computeUnitsPerShaderArray}
-        type FieldIsArray "computeUnitsPerShaderArray"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, computeUnitsPerShaderArray}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "computeUnitsPerShaderArray"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, computeUnitsPerShaderArray})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, computeUnitsPerShaderArray}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "computeUnitsPerShaderArray"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, computeUnitsPerShaderArray}
-
-instance {-# OVERLAPPING #-}
-         HasField "simdPerComputeUnit"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "simdPerComputeUnit"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "simdPerComputeUnit"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "simdPerComputeUnit"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, simdPerComputeUnit}
-        type FieldIsArray "simdPerComputeUnit"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, simdPerComputeUnit}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "simdPerComputeUnit"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, simdPerComputeUnit})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, simdPerComputeUnit}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "simdPerComputeUnit"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, simdPerComputeUnit}
-
-instance {-# OVERLAPPING #-}
-         HasField "wavefrontsPerSimd"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "wavefrontsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "wavefrontsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "wavefrontsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontsPerSimd}
-        type FieldIsArray "wavefrontsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "wavefrontsPerSimd"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontsPerSimd})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "wavefrontsPerSimd"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         HasField "wavefrontSize" VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "wavefrontSize"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "wavefrontSize"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "wavefrontSize"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontSize}
-        type FieldIsArray "wavefrontSize"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "wavefrontSize"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "wavefrontSize"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "sgprsPerSimd" VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "sgprsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "sgprsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sgprsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprsPerSimd}
-        type FieldIsArray "sgprsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sgprsPerSimd" VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprsPerSimd})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sgprsPerSimd"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         HasField "minSgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "minSgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "minSgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minSgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minSgprAllocation}
-        type FieldIsArray "minSgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minSgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minSgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minSgprAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minSgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minSgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minSgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxSgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "maxSgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "maxSgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxSgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxSgprAllocation}
-        type FieldIsArray "maxSgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxSgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxSgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxSgprAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxSgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxSgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxSgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "sgprAllocationGranularity"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "sgprAllocationGranularity"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "sgprAllocationGranularity"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sgprAllocationGranularity"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprAllocationGranularity}
-        type FieldIsArray "sgprAllocationGranularity"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprAllocationGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sgprAllocationGranularity"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprAllocationGranularity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprAllocationGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sgprAllocationGranularity"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprAllocationGranularity}
-
-instance {-# OVERLAPPING #-}
-         HasField "vgprsPerSimd" VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "vgprsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "vgprsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "vgprsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprsPerSimd}
-        type FieldIsArray "vgprsPerSimd"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vgprsPerSimd" VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprsPerSimd})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vgprsPerSimd"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprsPerSimd}
-
-instance {-# OVERLAPPING #-}
-         HasField "minVgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "minVgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "minVgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minVgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minVgprAllocation}
-        type FieldIsArray "minVgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minVgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minVgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minVgprAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minVgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minVgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minVgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxVgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "maxVgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "maxVgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxVgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxVgprAllocation}
-        type FieldIsArray "maxVgprAllocation"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxVgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxVgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxVgprAllocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxVgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxVgprAllocation"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxVgprAllocation}
-
-instance {-# OVERLAPPING #-}
-         HasField "vgprAllocationGranularity"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        type FieldType "vgprAllocationGranularity"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = Word32
-        type FieldOptional "vgprAllocationGranularity"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "vgprAllocationGranularity"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             =
-             #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprAllocationGranularity}
-        type FieldIsArray "vgprAllocationGranularity"
-               VkPhysicalDeviceShaderCorePropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprAllocationGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vgprAllocationGranularity"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprAllocationGranularity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprAllocationGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vgprAllocationGranularity"
-           VkPhysicalDeviceShaderCorePropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprAllocationGranularity}
-
-instance Show VkPhysicalDeviceShaderCorePropertiesAMD where
-        showsPrec d x
-          = showString "VkPhysicalDeviceShaderCorePropertiesAMD {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "shaderEngineCount = " .
-                            showsPrec d (getField @"shaderEngineCount" x) .
-                              showString ", " .
-                                showString "shaderArraysPerEngineCount = " .
-                                  showsPrec d (getField @"shaderArraysPerEngineCount" x) .
-                                    showString ", " .
-                                      showString "computeUnitsPerShaderArray = " .
-                                        showsPrec d (getField @"computeUnitsPerShaderArray" x) .
-                                          showString ", " .
-                                            showString "simdPerComputeUnit = " .
-                                              showsPrec d (getField @"simdPerComputeUnit" x) .
-                                                showString ", " .
-                                                  showString "wavefrontsPerSimd = " .
-                                                    showsPrec d (getField @"wavefrontsPerSimd" x) .
-                                                      showString ", " .
-                                                        showString "wavefrontSize = " .
-                                                          showsPrec d (getField @"wavefrontSize" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "sgprsPerSimd = " .
-                                                                showsPrec d
-                                                                  (getField @"sgprsPerSimd" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "minSgprAllocation = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"minSgprAllocation"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "maxSgprAllocation = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"maxSgprAllocation"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "sgprAllocationGranularity = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"sgprAllocationGranularity"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "vgprsPerSimd = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"vgprsPerSimd"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "minVgprAllocation = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"minVgprAllocation"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "maxVgprAllocation = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"maxVgprAllocation"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "vgprAllocationGranularity = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (getField
-                                                                                                               @"vgprAllocationGranularity"
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showChar
-                                                                                                              '}'
-
--- | > typedef struct VkPhysicalDeviceShaderDrawParameterFeatures {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         shaderDrawParameters;
---   > } VkPhysicalDeviceShaderDrawParameterFeatures;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceShaderDrawParameterFeatures VkPhysicalDeviceShaderDrawParameterFeatures registry at www.khronos.org>
-type VkPhysicalDeviceShaderDrawParameterFeatures =
-     VulkanStruct VkPhysicalDeviceShaderDrawParameterFeatures' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceShaderDrawParameterFeatures' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceShaderDrawParameterFeatures where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceShaderDrawParameterFeatures where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceShaderDrawParameterFeatures where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceShaderDrawParameterFeatures}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceShaderDrawParameterFeatures}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceShaderDrawParameterFeatures
-         where
-        type StructFields VkPhysicalDeviceShaderDrawParameterFeatures =
-             '["sType", "pNext", "shaderDrawParameters"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceShaderDrawParameterFeatures =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceShaderDrawParameterFeatures =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceShaderDrawParameterFeatures =
-             '[VkPhysicalDeviceFeatures2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceShaderDrawParameterFeatures where
-        type FieldType "sType" VkPhysicalDeviceShaderDrawParameterFeatures
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             =
-             #{offset VkPhysicalDeviceShaderDrawParameterFeatures, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderDrawParameterFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceShaderDrawParameterFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderDrawParameterFeatures, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderDrawParameterFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceShaderDrawParameterFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderDrawParameterFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceShaderDrawParameterFeatures where
-        type FieldType "pNext" VkPhysicalDeviceShaderDrawParameterFeatures
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             =
-             #{offset VkPhysicalDeviceShaderDrawParameterFeatures, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderDrawParameterFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceShaderDrawParameterFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderDrawParameterFeatures, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderDrawParameterFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceShaderDrawParameterFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderDrawParameterFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderDrawParameters"
-           VkPhysicalDeviceShaderDrawParameterFeatures
-         where
-        type FieldType "shaderDrawParameters"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             = VkBool32
-        type FieldOptional "shaderDrawParameters"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderDrawParameters"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             =
-             #{offset VkPhysicalDeviceShaderDrawParameterFeatures, shaderDrawParameters}
-        type FieldIsArray "shaderDrawParameters"
-               VkPhysicalDeviceShaderDrawParameterFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceShaderDrawParameterFeatures, shaderDrawParameters}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderDrawParameters"
-           VkPhysicalDeviceShaderDrawParameterFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceShaderDrawParameterFeatures, shaderDrawParameters})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceShaderDrawParameterFeatures, shaderDrawParameters}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderDrawParameters"
-           VkPhysicalDeviceShaderDrawParameterFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceShaderDrawParameterFeatures, shaderDrawParameters}
-
-instance Show VkPhysicalDeviceShaderDrawParameterFeatures where
-        showsPrec d x
-          = showString "VkPhysicalDeviceShaderDrawParameterFeatures {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "shaderDrawParameters = " .
-                            showsPrec d (getField @"shaderDrawParameters" x) . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkFormat                         format;
---   >     VkImageType                      type;
---   >     VkSampleCountFlagBits            samples;
---   >     VkImageUsageFlags                usage;
---   >     VkImageTiling                    tiling;
---   > } VkPhysicalDeviceSparseImageFormatInfo2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2 registry at www.khronos.org>
-type VkPhysicalDeviceSparseImageFormatInfo2 =
-     VulkanStruct VkPhysicalDeviceSparseImageFormatInfo2' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceSparseImageFormatInfo2' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceSparseImageFormatInfo2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSparseImageFormatInfo2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSparseImageFormatInfo2 where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceSparseImageFormatInfo2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSparseImageFormatInfo2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceSparseImageFormatInfo2 where
-        type StructFields VkPhysicalDeviceSparseImageFormatInfo2 =
-             '["sType", "pNext", "format", "type", "samples", "usage", "tiling"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceSparseImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSparseImageFormatInfo2 = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceSparseImageFormatInfo2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceSparseImageFormatInfo2 where
-        type FieldType "sType" VkPhysicalDeviceSparseImageFormatInfo2 =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceSparseImageFormatInfo2 =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceSparseImageFormatInfo2 where
-        type FieldType "pNext" VkPhysicalDeviceSparseImageFormatInfo2 =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceSparseImageFormatInfo2 =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkPhysicalDeviceSparseImageFormatInfo2 where
-        type FieldType "format" VkPhysicalDeviceSparseImageFormatInfo2 =
-             VkFormat
-        type FieldOptional "format" VkPhysicalDeviceSparseImageFormatInfo2
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkPhysicalDeviceSparseImageFormatInfo2 =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2, format}
-        type FieldIsArray "format" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "type" VkPhysicalDeviceSparseImageFormatInfo2 where
-        type FieldType "type" VkPhysicalDeviceSparseImageFormatInfo2 =
-             VkImageType
-        type FieldOptional "type" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "type" VkPhysicalDeviceSparseImageFormatInfo2 =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2, type}
-        type FieldIsArray "type" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2, type}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "type" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2, type})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, type}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "type" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, type}
-
-instance {-# OVERLAPPING #-}
-         HasField "samples" VkPhysicalDeviceSparseImageFormatInfo2 where
-        type FieldType "samples" VkPhysicalDeviceSparseImageFormatInfo2 =
-             VkSampleCountFlagBits
-        type FieldOptional "samples" VkPhysicalDeviceSparseImageFormatInfo2
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "samples" VkPhysicalDeviceSparseImageFormatInfo2 =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2, samples}
-        type FieldIsArray "samples" VkPhysicalDeviceSparseImageFormatInfo2
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2, samples}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "samples" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2, samples})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, samples}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "samples" VkPhysicalDeviceSparseImageFormatInfo2
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, samples}
-
-instance {-# OVERLAPPING #-}
-         HasField "usage" VkPhysicalDeviceSparseImageFormatInfo2 where
-        type FieldType "usage" VkPhysicalDeviceSparseImageFormatInfo2 =
-             VkImageUsageFlags
-        type FieldOptional "usage" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "usage" VkPhysicalDeviceSparseImageFormatInfo2 =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2, usage}
-        type FieldIsArray "usage" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2, usage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "usage" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2, usage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, usage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "usage" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, usage}
-
-instance {-# OVERLAPPING #-}
-         HasField "tiling" VkPhysicalDeviceSparseImageFormatInfo2 where
-        type FieldType "tiling" VkPhysicalDeviceSparseImageFormatInfo2 =
-             VkImageTiling
-        type FieldOptional "tiling" VkPhysicalDeviceSparseImageFormatInfo2
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "tiling" VkPhysicalDeviceSparseImageFormatInfo2 =
-             #{offset VkPhysicalDeviceSparseImageFormatInfo2, tiling}
-        type FieldIsArray "tiling" VkPhysicalDeviceSparseImageFormatInfo2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseImageFormatInfo2, tiling}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tiling" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseImageFormatInfo2, tiling})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, tiling}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tiling" VkPhysicalDeviceSparseImageFormatInfo2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseImageFormatInfo2, tiling}
-
-instance Show VkPhysicalDeviceSparseImageFormatInfo2 where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSparseImageFormatInfo2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "format = " .
-                            showsPrec d (getField @"format" x) .
-                              showString ", " .
-                                showString "type = " .
-                                  showsPrec d (getField @"type" x) .
-                                    showString ", " .
-                                      showString "samples = " .
-                                        showsPrec d (getField @"samples" x) .
-                                          showString ", " .
-                                            showString "usage = " .
-                                              showsPrec d (getField @"usage" x) .
-                                                showString ", " .
-                                                  showString "tiling = " .
-                                                    showsPrec d (getField @"tiling" x) .
-                                                      showChar '}'
-
--- | Alias for `VkPhysicalDeviceSparseImageFormatInfo2`
-type VkPhysicalDeviceSparseImageFormatInfo2KHR =
-     VkPhysicalDeviceSparseImageFormatInfo2
-
--- | > typedef struct VkPhysicalDeviceSparseProperties {
---   >     VkBool32               residencyStandard2DBlockShape;
---   >     VkBool32               residencyStandard2DMultisampleBlockShape;
---   >     VkBool32               residencyStandard3DBlockShape;
---   >     VkBool32               residencyAlignedMipSize;
---   >     VkBool32               residencyNonResidentStrict;
---   > } VkPhysicalDeviceSparseProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSparseProperties VkPhysicalDeviceSparseProperties registry at www.khronos.org>
-type VkPhysicalDeviceSparseProperties =
-     VulkanStruct VkPhysicalDeviceSparseProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceSparseProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceSparseProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSparseProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSparseProperties where
-        sizeOf ~_ = #{size VkPhysicalDeviceSparseProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSparseProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceSparseProperties where
-        type StructFields VkPhysicalDeviceSparseProperties =
-             '["residencyStandard2DBlockShape", -- ' closing tick for hsc2hs
-               "residencyStandard2DMultisampleBlockShape",
-               "residencyStandard3DBlockShape", "residencyAlignedMipSize",
-               "residencyNonResidentStrict"]
-        type CUnionType VkPhysicalDeviceSparseProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSparseProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceSparseProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "residencyStandard2DBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        type FieldType "residencyStandard2DBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-        type FieldOptional "residencyStandard2DBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "residencyStandard2DBlockShape"
-               VkPhysicalDeviceSparseProperties
-             =
-             #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
-        type FieldIsArray "residencyStandard2DBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "residencyStandard2DBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "residencyStandard2DBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
-
-instance {-# OVERLAPPING #-}
-         HasField "residencyStandard2DMultisampleBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        type FieldType "residencyStandard2DMultisampleBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-        type FieldOptional "residencyStandard2DMultisampleBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "residencyStandard2DMultisampleBlockShape"
-               VkPhysicalDeviceSparseProperties
-             =
-             #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
-        type FieldIsArray "residencyStandard2DMultisampleBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "residencyStandard2DMultisampleBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "residencyStandard2DMultisampleBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
-
-instance {-# OVERLAPPING #-}
-         HasField "residencyStandard3DBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        type FieldType "residencyStandard3DBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-        type FieldOptional "residencyStandard3DBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "residencyStandard3DBlockShape"
-               VkPhysicalDeviceSparseProperties
-             =
-             #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
-        type FieldIsArray "residencyStandard3DBlockShape"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "residencyStandard3DBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "residencyStandard3DBlockShape"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
-
-instance {-# OVERLAPPING #-}
-         HasField "residencyAlignedMipSize" VkPhysicalDeviceSparseProperties
-         where
-        type FieldType "residencyAlignedMipSize"
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-        type FieldOptional "residencyAlignedMipSize"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "residencyAlignedMipSize"
-               VkPhysicalDeviceSparseProperties
-             =
-             #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
-        type FieldIsArray "residencyAlignedMipSize"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "residencyAlignedMipSize"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "residencyAlignedMipSize"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "residencyNonResidentStrict"
-           VkPhysicalDeviceSparseProperties
-         where
-        type FieldType "residencyNonResidentStrict"
-               VkPhysicalDeviceSparseProperties
-             = VkBool32
-        type FieldOptional "residencyNonResidentStrict"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "residencyNonResidentStrict"
-               VkPhysicalDeviceSparseProperties
-             =
-             #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
-        type FieldIsArray "residencyNonResidentStrict"
-               VkPhysicalDeviceSparseProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "residencyNonResidentStrict"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "residencyNonResidentStrict"
-           VkPhysicalDeviceSparseProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
-
-instance Show VkPhysicalDeviceSparseProperties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSparseProperties {" .
-              showString "residencyStandard2DBlockShape = " .
-                showsPrec d (getField @"residencyStandard2DBlockShape" x) .
-                  showString ", " .
-                    showString "residencyStandard2DMultisampleBlockShape = " .
-                      showsPrec d
-                        (getField @"residencyStandard2DMultisampleBlockShape" x)
-                        .
-                        showString ", " .
-                          showString "residencyStandard3DBlockShape = " .
-                            showsPrec d (getField @"residencyStandard3DBlockShape" x) .
-                              showString ", " .
-                                showString "residencyAlignedMipSize = " .
-                                  showsPrec d (getField @"residencyAlignedMipSize" x) .
-                                    showString ", " .
-                                      showString "residencyNonResidentStrict = " .
-                                        showsPrec d (getField @"residencyNonResidentStrict" x) .
-                                          showChar '}'
-
--- | > typedef struct VkPhysicalDeviceSubgroupProperties {
---   >     VkStructureType sType;
---   >     void*                   pNext;
---   >     uint32_t                      subgroupSize;
---   >     VkShaderStageFlags            supportedStages;
---   >     VkSubgroupFeatureFlags        supportedOperations;
---   >     VkBool32 quadOperationsInAllStages;
---   > } VkPhysicalDeviceSubgroupProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSubgroupProperties VkPhysicalDeviceSubgroupProperties registry at www.khronos.org>
-type VkPhysicalDeviceSubgroupProperties =
-     VulkanStruct VkPhysicalDeviceSubgroupProperties' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceSubgroupProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceSubgroupProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSubgroupProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSubgroupProperties where
-        sizeOf ~_ = #{size VkPhysicalDeviceSubgroupProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSubgroupProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceSubgroupProperties where
-        type StructFields VkPhysicalDeviceSubgroupProperties =
-             '["sType", "pNext", "subgroupSize", "supportedStages", -- ' closing tick for hsc2hs
-               "supportedOperations", "quadOperationsInAllStages"]
-        type CUnionType VkPhysicalDeviceSubgroupProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSubgroupProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceSubgroupProperties =
-             '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceSubgroupProperties where
-        type FieldType "sType" VkPhysicalDeviceSubgroupProperties =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceSubgroupProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceSubgroupProperties =
-             #{offset VkPhysicalDeviceSubgroupProperties, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceSubgroupProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSubgroupProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceSubgroupProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSubgroupProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSubgroupProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceSubgroupProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSubgroupProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceSubgroupProperties where
-        type FieldType "pNext" VkPhysicalDeviceSubgroupProperties =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceSubgroupProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceSubgroupProperties =
-             #{offset VkPhysicalDeviceSubgroupProperties, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceSubgroupProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSubgroupProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceSubgroupProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSubgroupProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSubgroupProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceSubgroupProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSubgroupProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "subgroupSize" VkPhysicalDeviceSubgroupProperties where
-        type FieldType "subgroupSize" VkPhysicalDeviceSubgroupProperties =
-             Word32
-        type FieldOptional "subgroupSize"
-               VkPhysicalDeviceSubgroupProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "subgroupSize" VkPhysicalDeviceSubgroupProperties
-             =
-             #{offset VkPhysicalDeviceSubgroupProperties, subgroupSize}
-        type FieldIsArray "subgroupSize" VkPhysicalDeviceSubgroupProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSubgroupProperties, subgroupSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subgroupSize" VkPhysicalDeviceSubgroupProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSubgroupProperties, subgroupSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSubgroupProperties, subgroupSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subgroupSize" VkPhysicalDeviceSubgroupProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSubgroupProperties, subgroupSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedStages" VkPhysicalDeviceSubgroupProperties where
-        type FieldType "supportedStages" VkPhysicalDeviceSubgroupProperties
-             = VkShaderStageFlags
-        type FieldOptional "supportedStages"
-               VkPhysicalDeviceSubgroupProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "supportedStages"
-               VkPhysicalDeviceSubgroupProperties
-             =
-             #{offset VkPhysicalDeviceSubgroupProperties, supportedStages}
-        type FieldIsArray "supportedStages"
-               VkPhysicalDeviceSubgroupProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSubgroupProperties, supportedStages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedStages" VkPhysicalDeviceSubgroupProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSubgroupProperties, supportedStages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSubgroupProperties, supportedStages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedStages" VkPhysicalDeviceSubgroupProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSubgroupProperties, supportedStages}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedOperations" VkPhysicalDeviceSubgroupProperties
-         where
-        type FieldType "supportedOperations"
-               VkPhysicalDeviceSubgroupProperties
-             = VkSubgroupFeatureFlags
-        type FieldOptional "supportedOperations"
-               VkPhysicalDeviceSubgroupProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "supportedOperations"
-               VkPhysicalDeviceSubgroupProperties
-             =
-             #{offset VkPhysicalDeviceSubgroupProperties, supportedOperations}
-        type FieldIsArray "supportedOperations"
-               VkPhysicalDeviceSubgroupProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSubgroupProperties, supportedOperations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedOperations"
-           VkPhysicalDeviceSubgroupProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSubgroupProperties, supportedOperations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSubgroupProperties, supportedOperations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedOperations"
-           VkPhysicalDeviceSubgroupProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSubgroupProperties, supportedOperations}
-
-instance {-# OVERLAPPING #-}
-         HasField "quadOperationsInAllStages"
-           VkPhysicalDeviceSubgroupProperties
-         where
-        type FieldType "quadOperationsInAllStages"
-               VkPhysicalDeviceSubgroupProperties
-             = VkBool32
-        type FieldOptional "quadOperationsInAllStages"
-               VkPhysicalDeviceSubgroupProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "quadOperationsInAllStages"
-               VkPhysicalDeviceSubgroupProperties
-             =
-             #{offset VkPhysicalDeviceSubgroupProperties, quadOperationsInAllStages}
-        type FieldIsArray "quadOperationsInAllStages"
-               VkPhysicalDeviceSubgroupProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSubgroupProperties, quadOperationsInAllStages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "quadOperationsInAllStages"
-           VkPhysicalDeviceSubgroupProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSubgroupProperties, quadOperationsInAllStages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSubgroupProperties, quadOperationsInAllStages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "quadOperationsInAllStages"
-           VkPhysicalDeviceSubgroupProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSubgroupProperties, quadOperationsInAllStages}
-
-instance Show VkPhysicalDeviceSubgroupProperties where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSubgroupProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "subgroupSize = " .
-                            showsPrec d (getField @"subgroupSize" x) .
-                              showString ", " .
-                                showString "supportedStages = " .
-                                  showsPrec d (getField @"supportedStages" x) .
-                                    showString ", " .
-                                      showString "supportedOperations = " .
-                                        showsPrec d (getField @"supportedOperations" x) .
-                                          showString ", " .
-                                            showString "quadOperationsInAllStages = " .
-                                              showsPrec d (getField @"quadOperationsInAllStages" x)
-                                                . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
---   >     VkStructureType sType;
---   >     const void* pNext;
---   >     VkSurfaceKHR surface;
---   > } VkPhysicalDeviceSurfaceInfo2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSurfaceInfo2KHR VkPhysicalDeviceSurfaceInfo2KHR registry at www.khronos.org>
-type VkPhysicalDeviceSurfaceInfo2KHR =
-     VulkanStruct VkPhysicalDeviceSurfaceInfo2KHR' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceSurfaceInfo2KHR' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceSurfaceInfo2KHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceSurfaceInfo2KHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceSurfaceInfo2KHR where
-        sizeOf ~_ = #{size VkPhysicalDeviceSurfaceInfo2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceSurfaceInfo2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceSurfaceInfo2KHR where
-        type StructFields VkPhysicalDeviceSurfaceInfo2KHR =
-             '["sType", "pNext", "surface"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceSurfaceInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceSurfaceInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceSurfaceInfo2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceSurfaceInfo2KHR where
-        type FieldType "sType" VkPhysicalDeviceSurfaceInfo2KHR =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceSurfaceInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceSurfaceInfo2KHR =
-             #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceSurfaceInfo2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceSurfaceInfo2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceSurfaceInfo2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceSurfaceInfo2KHR where
-        type FieldType "pNext" VkPhysicalDeviceSurfaceInfo2KHR = Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceSurfaceInfo2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceSurfaceInfo2KHR =
-             #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceSurfaceInfo2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceSurfaceInfo2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceSurfaceInfo2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "surface" VkPhysicalDeviceSurfaceInfo2KHR where
-        type FieldType "surface" VkPhysicalDeviceSurfaceInfo2KHR =
-             VkSurfaceKHR
-        type FieldOptional "surface" VkPhysicalDeviceSurfaceInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "surface" VkPhysicalDeviceSurfaceInfo2KHR =
-             #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
-        type FieldIsArray "surface" VkPhysicalDeviceSurfaceInfo2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "surface" VkPhysicalDeviceSurfaceInfo2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "surface" VkPhysicalDeviceSurfaceInfo2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
-
-instance Show VkPhysicalDeviceSurfaceInfo2KHR where
-        showsPrec d x
-          = showString "VkPhysicalDeviceSurfaceInfo2KHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "surface = " .
-                            showsPrec d (getField @"surface" x) . showChar '}'
-
--- | > typedef struct VkPhysicalDeviceVariablePointerFeatures {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkBool32                         variablePointersStorageBuffer;
---   >     VkBool32                         variablePointers;
---   > } VkPhysicalDeviceVariablePointerFeatures;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointerFeatures registry at www.khronos.org>
-type VkPhysicalDeviceVariablePointerFeatures =
-     VulkanStruct VkPhysicalDeviceVariablePointerFeatures' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceVariablePointerFeatures' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceVariablePointerFeatures where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceVariablePointerFeatures where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceVariablePointerFeatures where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceVariablePointerFeatures}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceVariablePointerFeatures}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceVariablePointerFeatures
-         where
-        type StructFields VkPhysicalDeviceVariablePointerFeatures =
-             '["sType", "pNext", "variablePointersStorageBuffer", -- ' closing tick for hsc2hs
-               "variablePointers"]
-        type CUnionType VkPhysicalDeviceVariablePointerFeatures = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceVariablePointerFeatures = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceVariablePointerFeatures =
-             '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPhysicalDeviceVariablePointerFeatures where
-        type FieldType "sType" VkPhysicalDeviceVariablePointerFeatures =
-             VkStructureType
-        type FieldOptional "sType" VkPhysicalDeviceVariablePointerFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPhysicalDeviceVariablePointerFeatures =
-             #{offset VkPhysicalDeviceVariablePointerFeatures, sType}
-        type FieldIsArray "sType" VkPhysicalDeviceVariablePointerFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVariablePointerFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPhysicalDeviceVariablePointerFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVariablePointerFeatures, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceVariablePointerFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPhysicalDeviceVariablePointerFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceVariablePointerFeatures, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPhysicalDeviceVariablePointerFeatures where
-        type FieldType "pNext" VkPhysicalDeviceVariablePointerFeatures =
-             Ptr Void
-        type FieldOptional "pNext" VkPhysicalDeviceVariablePointerFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPhysicalDeviceVariablePointerFeatures =
-             #{offset VkPhysicalDeviceVariablePointerFeatures, pNext}
-        type FieldIsArray "pNext" VkPhysicalDeviceVariablePointerFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVariablePointerFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPhysicalDeviceVariablePointerFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVariablePointerFeatures, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceVariablePointerFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPhysicalDeviceVariablePointerFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceVariablePointerFeatures, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "variablePointersStorageBuffer"
-           VkPhysicalDeviceVariablePointerFeatures
-         where
-        type FieldType "variablePointersStorageBuffer"
-               VkPhysicalDeviceVariablePointerFeatures
-             = VkBool32
-        type FieldOptional "variablePointersStorageBuffer"
-               VkPhysicalDeviceVariablePointerFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "variablePointersStorageBuffer"
-               VkPhysicalDeviceVariablePointerFeatures
-             =
-             #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointersStorageBuffer}
-        type FieldIsArray "variablePointersStorageBuffer"
-               VkPhysicalDeviceVariablePointerFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointersStorageBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "variablePointersStorageBuffer"
-           VkPhysicalDeviceVariablePointerFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointersStorageBuffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointersStorageBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "variablePointersStorageBuffer"
-           VkPhysicalDeviceVariablePointerFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointersStorageBuffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "variablePointers" VkPhysicalDeviceVariablePointerFeatures
-         where
-        type FieldType "variablePointers"
-               VkPhysicalDeviceVariablePointerFeatures
-             = VkBool32
-        type FieldOptional "variablePointers"
-               VkPhysicalDeviceVariablePointerFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "variablePointers"
-               VkPhysicalDeviceVariablePointerFeatures
-             =
-             #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointers}
-        type FieldIsArray "variablePointers"
-               VkPhysicalDeviceVariablePointerFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "variablePointers"
-           VkPhysicalDeviceVariablePointerFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "variablePointers"
-           VkPhysicalDeviceVariablePointerFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointers}
-
-instance Show VkPhysicalDeviceVariablePointerFeatures where
-        showsPrec d x
-          = showString "VkPhysicalDeviceVariablePointerFeatures {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "variablePointersStorageBuffer = " .
-                            showsPrec d (getField @"variablePointersStorageBuffer" x) .
-                              showString ", " .
-                                showString "variablePointers = " .
-                                  showsPrec d (getField @"variablePointers" x) . showChar '}'
-
--- | Alias for `VkPhysicalDeviceVariablePointerFeatures`
-type VkPhysicalDeviceVariablePointerFeaturesKHR =
-     VkPhysicalDeviceVariablePointerFeatures
-
--- | > typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
---   >     VkStructureType sType;
---   >     void*                  pNext;
---   >     uint32_t               maxVertexAttribDivisor;
---   > } VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT registry at www.khronos.org>
-type VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT =
-     VulkanStruct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        sizeOf ~_
-          = #{size VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        type StructFields
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = '["sType", "pNext", "maxVertexAttribDivisor"] -- ' closing tick for hsc2hs
-        type CUnionType VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        type FieldType "sType"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, sType}
-        type FieldIsArray "sType"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        type FieldType "pNext"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxVertexAttribDivisor"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        type FieldType "maxVertexAttribDivisor"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = Word32
-        type FieldOptional "maxVertexAttribDivisor"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxVertexAttribDivisor"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             =
-             #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, maxVertexAttribDivisor}
-        type FieldIsArray "maxVertexAttribDivisor"
-               VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, maxVertexAttribDivisor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxVertexAttribDivisor"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, maxVertexAttribDivisor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, maxVertexAttribDivisor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxVertexAttribDivisor"
-           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, maxVertexAttribDivisor}
-
-instance Show VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
-         where
-        showsPrec d x
-          = showString
-              "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "maxVertexAttribDivisor = " .
-                            showsPrec d (getField @"maxVertexAttribDivisor" x) . showChar '}'
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.PhysicalDevice
+       (VkPhysicalDevice16BitStorageFeatures,
+        VkPhysicalDevice16BitStorageFeaturesKHR,
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT,
+        VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT,
+        VkPhysicalDeviceConservativeRasterizationPropertiesEXT,
+        VkPhysicalDeviceDescriptorIndexingFeaturesEXT,
+        VkPhysicalDeviceDescriptorIndexingPropertiesEXT,
+        VkPhysicalDeviceDiscardRectanglePropertiesEXT,
+        VkPhysicalDeviceExternalBufferInfo,
+        VkPhysicalDeviceExternalBufferInfoKHR,
+        VkPhysicalDeviceExternalFenceInfo,
+        VkPhysicalDeviceExternalFenceInfoKHR,
+        VkPhysicalDeviceExternalImageFormatInfo,
+        VkPhysicalDeviceExternalImageFormatInfoKHR,
+        VkPhysicalDeviceExternalMemoryHostPropertiesEXT,
+        VkPhysicalDeviceExternalSemaphoreInfo,
+        VkPhysicalDeviceExternalSemaphoreInfoKHR,
+        VkPhysicalDeviceFeatures2, VkPhysicalDeviceFeatures2KHR,
+        VkPhysicalDeviceGroupProperties,
+        VkPhysicalDeviceGroupPropertiesKHR, VkPhysicalDeviceIDProperties,
+        VkPhysicalDeviceIDPropertiesKHR, VkPhysicalDeviceImageFormatInfo2,
+        VkPhysicalDeviceImageFormatInfo2KHR, VkPhysicalDeviceLimits,
+        VkPhysicalDeviceMaintenance3Properties,
+        VkPhysicalDeviceMaintenance3PropertiesKHR,
+        VkPhysicalDeviceMemoryProperties,
+        VkPhysicalDeviceMemoryProperties2,
+        VkPhysicalDeviceMemoryProperties2KHR,
+        VkPhysicalDeviceMultiviewFeatures,
+        VkPhysicalDeviceMultiviewFeaturesKHR,
+        VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX,
+        VkPhysicalDeviceMultiviewProperties,
+        VkPhysicalDeviceMultiviewPropertiesKHR,
+        VkPhysicalDevicePointClippingProperties,
+        VkPhysicalDevicePointClippingPropertiesKHR,
+        VkPhysicalDeviceProperties, VkPhysicalDeviceProperties2,
+        VkPhysicalDeviceProperties2KHR,
+        VkPhysicalDeviceProtectedMemoryFeatures,
+        VkPhysicalDeviceProtectedMemoryProperties,
+        VkPhysicalDevicePushDescriptorPropertiesKHR,
+        VkPhysicalDeviceSampleLocationsPropertiesEXT,
+        VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT,
+        VkPhysicalDeviceSamplerYcbcrConversionFeatures,
+        VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
+        VkPhysicalDeviceShaderCorePropertiesAMD,
+        VkPhysicalDeviceShaderDrawParameterFeatures,
+        VkPhysicalDeviceSparseImageFormatInfo2,
+        VkPhysicalDeviceSparseImageFormatInfo2KHR,
+        VkPhysicalDeviceSparseProperties,
+        VkPhysicalDeviceSubgroupProperties,
+        VkPhysicalDeviceSurfaceInfo2KHR,
+        VkPhysicalDeviceVariablePointerFeatures,
+        VkPhysicalDeviceVariablePointerFeaturesKHR,
+        VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT)
+       where
+import Graphics.Vulkan.Constants                           (VK_LUID_SIZE, VK_MAX_DEVICE_GROUP_SIZE,
+                                                            VK_MAX_MEMORY_HEAPS,
+                                                            VK_MAX_MEMORY_TYPES,
+                                                            VK_MAX_PHYSICAL_DEVICE_NAME_SIZE,
+                                                            VK_UUID_SIZE)
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes                     (VkBool32,
+                                                            VkDeviceSize)
+import Graphics.Vulkan.Types.Enum.Buffer                   (VkBufferCreateFlags,
+                                                            VkBufferUsageFlags)
+import Graphics.Vulkan.Types.Enum.External                 (VkExternalFenceHandleTypeFlagBits,
+                                                            VkExternalMemoryHandleTypeFlagBits,
+                                                            VkExternalSemaphoreHandleTypeFlagBits)
+import Graphics.Vulkan.Types.Enum.Format                   (VkFormat)
+import Graphics.Vulkan.Types.Enum.Image                    (VkImageCreateFlags,
+                                                            VkImageTiling,
+                                                            VkImageType,
+                                                            VkImageUsageFlags)
+import Graphics.Vulkan.Types.Enum.PhysicalDeviceType       (VkPhysicalDeviceType)
+import Graphics.Vulkan.Types.Enum.PointClippingBehavior    (VkPointClippingBehavior)
+import Graphics.Vulkan.Types.Enum.SampleCountFlags         (VkSampleCountFlagBits,
+                                                            VkSampleCountFlags)
+import Graphics.Vulkan.Types.Enum.Shader                   (VkShaderStageFlags)
+import Graphics.Vulkan.Types.Enum.StructureType            (VkStructureType)
+import Graphics.Vulkan.Types.Enum.SubgroupFeatureFlags     (VkSubgroupFeatureFlags)
+import Graphics.Vulkan.Types.Handles                       (VkPhysicalDevice,
+                                                            VkSurfaceKHR)
+import Graphics.Vulkan.Types.Struct.Device                 (VkDeviceCreateInfo)
+import Graphics.Vulkan.Types.Struct.Extent                 (VkExtent2D)
+import Graphics.Vulkan.Types.Struct.Memory                 (VkMemoryHeap,
+                                                            VkMemoryType)
+import Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures (VkPhysicalDeviceFeatures)
+
+-- | > typedef struct VkPhysicalDevice16BitStorageFeatures {
+--   >     VkStructureType sType;
+--   >     void*      pNext;
+--   >     VkBool32                         storageBuffer16BitAccess;
+--   >     VkBool32                         uniformAndStorageBuffer16BitAccess;
+--   >     VkBool32                         storagePushConstant16;
+--   >     VkBool32                         storageInputOutput16;
+--   > } VkPhysicalDevice16BitStorageFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeatures registry at www.khronos.org>
+type VkPhysicalDevice16BitStorageFeatures =
+     VkStruct VkPhysicalDevice16BitStorageFeatures' -- ' closing tick for hsc2hs
+
+data VkPhysicalDevice16BitStorageFeatures' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDevice16BitStorageFeatures where
+    type StructRep VkPhysicalDevice16BitStorageFeatures =
+         'StructMeta "VkPhysicalDevice16BitStorageFeatures" -- ' closing tick for hsc2hs
+           VkPhysicalDevice16BitStorageFeatures
+           #{size VkPhysicalDevice16BitStorageFeatures}
+           #{alignment VkPhysicalDevice16BitStorageFeatures}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDevice16BitStorageFeatures, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDevice16BitStorageFeatures, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "storageBuffer16BitAccess" VkBool32 'False 
+                                                                    #{offset VkPhysicalDevice16BitStorageFeatures, storageBuffer16BitAccess}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "uniformAndStorageBuffer16BitAccess" VkBool32 'False
+                #{offset VkPhysicalDevice16BitStorageFeatures, uniformAndStorageBuffer16BitAccess}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "storagePushConstant16" VkBool32 'False 
+                                                                 #{offset VkPhysicalDevice16BitStorageFeatures, storagePushConstant16}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "storageInputOutput16" VkBool32 'False 
+                                                                #{offset VkPhysicalDevice16BitStorageFeatures, storageInputOutput16}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDevice16BitStorageFeatures`
+type VkPhysicalDevice16BitStorageFeaturesKHR =
+     VkPhysicalDevice16BitStorageFeatures
+
+-- | > typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         advancedBlendCoherentOperations;
+--   > } VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT registry at www.khronos.org>
+type VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT =
+     VkStruct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
+         where
+    type StructRep VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT =
+         'StructMeta "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
+           #{size VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT}
+           #{alignment VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "advancedBlendCoherentOperations" VkBool32 'False
+                #{offset VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, advancedBlendCoherentOperations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceFeatures2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         advancedBlendMaxColorAttachments;
+--   >     VkBool32                         advancedBlendIndependentBlend;
+--   >     VkBool32                         advancedBlendNonPremultipliedSrcColor;
+--   >     VkBool32                         advancedBlendNonPremultipliedDstColor;
+--   >     VkBool32                         advancedBlendCorrelatedOverlap;
+--   >     VkBool32                         advancedBlendAllOperations;
+--   > } VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT registry at www.khronos.org>
+type VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT =
+     VkStruct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
+         where
+    type StructRep VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
+         =
+         'StructMeta "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
+           #{size VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT}
+           #{alignment VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "advancedBlendMaxColorAttachments" Word32 'False
+                #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendMaxColorAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "advancedBlendIndependentBlend" VkBool32 'False
+                #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendIndependentBlend}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "advancedBlendNonPremultipliedSrcColor" VkBool32 'False
+                #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedSrcColor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "advancedBlendNonPremultipliedDstColor" VkBool32 'False
+                #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendNonPremultipliedDstColor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "advancedBlendCorrelatedOverlap" VkBool32 'False
+                #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendCorrelatedOverlap}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "advancedBlendAllOperations" VkBool32 'False 
+                                                                      #{offset VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, advancedBlendAllOperations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void*                  pNext;
+--   >     float                  primitiveOverestimationSize;
+--   >     float                  maxExtraPrimitiveOverestimationSize;
+--   >     float                  extraPrimitiveOverestimationSizeGranularity;
+--   >     VkBool32               primitiveUnderestimation;
+--   >     VkBool32               conservativePointAndLineRasterization;
+--   >     VkBool32               degenerateTrianglesRasterized;
+--   >     VkBool32               degenerateLinesRasterized;
+--   >     VkBool32               fullyCoveredFragmentShaderInputVariable;
+--   >     VkBool32               conservativeRasterizationPostDepthCoverage;
+--   > } VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceConservativeRasterizationPropertiesEXT VkPhysicalDeviceConservativeRasterizationPropertiesEXT registry at www.khronos.org>
+type VkPhysicalDeviceConservativeRasterizationPropertiesEXT =
+     VkStruct VkPhysicalDeviceConservativeRasterizationPropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceConservativeRasterizationPropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
+         where
+    type StructRep
+           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
+         =
+         'StructMeta -- ' closing tick for hsc2hs
+           "VkPhysicalDeviceConservativeRasterizationPropertiesEXT"
+           VkPhysicalDeviceConservativeRasterizationPropertiesEXT
+           #{size VkPhysicalDeviceConservativeRasterizationPropertiesEXT}
+           #{alignment VkPhysicalDeviceConservativeRasterizationPropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "primitiveOverestimationSize" -- ' closing tick for hsc2hs
+                (#{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveOverestimationSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxExtraPrimitiveOverestimationSize" -- ' closing tick for hsc2hs
+                (#{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, maxExtraPrimitiveOverestimationSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "extraPrimitiveOverestimationSizeGranularity" -- ' closing tick for hsc2hs
+                (#{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, extraPrimitiveOverestimationSizeGranularity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "primitiveUnderestimation" VkBool32 'False 
+                                                                    #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, primitiveUnderestimation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "conservativePointAndLineRasterization" VkBool32 'False
+                #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativePointAndLineRasterization}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "degenerateTrianglesRasterized" VkBool32 'False
+                #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateTrianglesRasterized}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "degenerateLinesRasterized" VkBool32 'False 
+                                                                     #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, degenerateLinesRasterized}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fullyCoveredFragmentShaderInputVariable" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, fullyCoveredFragmentShaderInputVariable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "conservativeRasterizationPostDepthCoverage" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceConservativeRasterizationPropertiesEXT, conservativeRasterizationPostDepthCoverage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32               shaderInputAttachmentArrayDynamicIndexing;
+--   >     VkBool32               shaderUniformTexelBufferArrayDynamicIndexing;
+--   >     VkBool32               shaderStorageTexelBufferArrayDynamicIndexing;
+--   >     VkBool32               shaderUniformBufferArrayNonUniformIndexing;
+--   >     VkBool32               shaderSampledImageArrayNonUniformIndexing;
+--   >     VkBool32               shaderStorageBufferArrayNonUniformIndexing;
+--   >     VkBool32               shaderStorageImageArrayNonUniformIndexing;
+--   >     VkBool32               shaderInputAttachmentArrayNonUniformIndexing;
+--   >     VkBool32               shaderUniformTexelBufferArrayNonUniformIndexing;
+--   >     VkBool32               shaderStorageTexelBufferArrayNonUniformIndexing;
+--   >     VkBool32               descriptorBindingUniformBufferUpdateAfterBind;
+--   >     VkBool32               descriptorBindingSampledImageUpdateAfterBind;
+--   >     VkBool32               descriptorBindingStorageImageUpdateAfterBind;
+--   >     VkBool32               descriptorBindingStorageBufferUpdateAfterBind;
+--   >     VkBool32               descriptorBindingUniformTexelBufferUpdateAfterBind;
+--   >     VkBool32               descriptorBindingStorageTexelBufferUpdateAfterBind;
+--   >     VkBool32               descriptorBindingUpdateUnusedWhilePending;
+--   >     VkBool32               descriptorBindingPartiallyBound;
+--   >     VkBool32               descriptorBindingVariableDescriptorCount;
+--   >     VkBool32               runtimeDescriptorArray;
+--   > } VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceDescriptorIndexingFeaturesEXT VkPhysicalDeviceDescriptorIndexingFeaturesEXT registry at www.khronos.org>
+type VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
+     VkStruct VkPhysicalDeviceDescriptorIndexingFeaturesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceDescriptorIndexingFeaturesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
+         where
+    type StructRep VkPhysicalDeviceDescriptorIndexingFeaturesEXT =
+         'StructMeta "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceDescriptorIndexingFeaturesEXT
+           #{size VkPhysicalDeviceDescriptorIndexingFeaturesEXT}
+           #{alignment VkPhysicalDeviceDescriptorIndexingFeaturesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderInputAttachmentArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayDynamicIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderUniformTexelBufferArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayDynamicIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageTexelBufferArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayDynamicIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderUniformBufferArrayNonUniformIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformBufferArrayNonUniformIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderSampledImageArrayNonUniformIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderSampledImageArrayNonUniformIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageBufferArrayNonUniformIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageBufferArrayNonUniformIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageImageArrayNonUniformIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageImageArrayNonUniformIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderInputAttachmentArrayNonUniformIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderInputAttachmentArrayNonUniformIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderUniformTexelBufferArrayNonUniformIndexing" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderUniformTexelBufferArrayNonUniformIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageTexelBufferArrayNonUniformIndexing" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, shaderStorageTexelBufferArrayNonUniformIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingUniformBufferUpdateAfterBind" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformBufferUpdateAfterBind}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingSampledImageUpdateAfterBind" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingSampledImageUpdateAfterBind}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingStorageImageUpdateAfterBind" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageImageUpdateAfterBind}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingStorageBufferUpdateAfterBind" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageBufferUpdateAfterBind}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingUniformTexelBufferUpdateAfterBind" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUniformTexelBufferUpdateAfterBind}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingStorageTexelBufferUpdateAfterBind" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingStorageTexelBufferUpdateAfterBind}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingUpdateUnusedWhilePending" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingUpdateUnusedWhilePending}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingPartiallyBound" VkBool32 'False
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingPartiallyBound}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorBindingVariableDescriptorCount" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, descriptorBindingVariableDescriptorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "runtimeDescriptorArray" VkBool32 'False 
+                                                                  #{offset VkPhysicalDeviceDescriptorIndexingFeaturesEXT, runtimeDescriptorArray}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t               maxUpdateAfterBindDescriptorsInAllPools;
+--   >     VkBool32               shaderUniformBufferArrayNonUniformIndexingNative;
+--   >     VkBool32               shaderSampledImageArrayNonUniformIndexingNative;
+--   >     VkBool32               shaderStorageBufferArrayNonUniformIndexingNative;
+--   >     VkBool32               shaderStorageImageArrayNonUniformIndexingNative;
+--   >     VkBool32               shaderInputAttachmentArrayNonUniformIndexingNative;
+--   >     VkBool32               robustBufferAccessUpdateAfterBind;
+--   >     VkBool32               quadDivergentImplicitLod;
+--   >     uint32_t               maxPerStageDescriptorUpdateAfterBindSamplers;
+--   >     uint32_t               maxPerStageDescriptorUpdateAfterBindUniformBuffers;
+--   >     uint32_t               maxPerStageDescriptorUpdateAfterBindStorageBuffers;
+--   >     uint32_t               maxPerStageDescriptorUpdateAfterBindSampledImages;
+--   >     uint32_t               maxPerStageDescriptorUpdateAfterBindStorageImages;
+--   >     uint32_t               maxPerStageDescriptorUpdateAfterBindInputAttachments;
+--   >     uint32_t               maxPerStageUpdateAfterBindResources;
+--   >     uint32_t               maxDescriptorSetUpdateAfterBindSamplers;
+--   >     uint32_t               maxDescriptorSetUpdateAfterBindUniformBuffers;
+--   >     uint32_t               maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
+--   >     uint32_t               maxDescriptorSetUpdateAfterBindStorageBuffers;
+--   >     uint32_t               maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
+--   >     uint32_t               maxDescriptorSetUpdateAfterBindSampledImages;
+--   >     uint32_t               maxDescriptorSetUpdateAfterBindStorageImages;
+--   >     uint32_t               maxDescriptorSetUpdateAfterBindInputAttachments;
+--   > } VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceDescriptorIndexingPropertiesEXT VkPhysicalDeviceDescriptorIndexingPropertiesEXT registry at www.khronos.org>
+type VkPhysicalDeviceDescriptorIndexingPropertiesEXT =
+     VkStruct VkPhysicalDeviceDescriptorIndexingPropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceDescriptorIndexingPropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
+         where
+    type StructRep VkPhysicalDeviceDescriptorIndexingPropertiesEXT =
+         'StructMeta "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceDescriptorIndexingPropertiesEXT
+           #{size VkPhysicalDeviceDescriptorIndexingPropertiesEXT}
+           #{alignment VkPhysicalDeviceDescriptorIndexingPropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxUpdateAfterBindDescriptorsInAllPools" Word32 'False
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxUpdateAfterBindDescriptorsInAllPools}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderUniformBufferArrayNonUniformIndexingNative" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderUniformBufferArrayNonUniformIndexingNative}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderSampledImageArrayNonUniformIndexingNative" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderSampledImageArrayNonUniformIndexingNative}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageBufferArrayNonUniformIndexingNative" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageBufferArrayNonUniformIndexingNative}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageImageArrayNonUniformIndexingNative" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderStorageImageArrayNonUniformIndexingNative}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderInputAttachmentArrayNonUniformIndexingNative" -- ' closing tick for hsc2hs
+                VkBool32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, shaderInputAttachmentArrayNonUniformIndexingNative}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "robustBufferAccessUpdateAfterBind" VkBool32 'False
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, robustBufferAccessUpdateAfterBind}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "quadDivergentImplicitLod" VkBool32 'False 
+                                                                    #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, quadDivergentImplicitLod}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorUpdateAfterBindSamplers" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSamplers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorUpdateAfterBindUniformBuffers" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindUniformBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorUpdateAfterBindStorageBuffers" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorUpdateAfterBindSampledImages" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindSampledImages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorUpdateAfterBindStorageImages" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindStorageImages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorUpdateAfterBindInputAttachments" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageDescriptorUpdateAfterBindInputAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageUpdateAfterBindResources" Word32 'False
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxPerStageUpdateAfterBindResources}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUpdateAfterBindSamplers" Word32 'False
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSamplers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUpdateAfterBindUniformBuffers" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUpdateAfterBindStorageBuffers" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUpdateAfterBindSampledImages" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindSampledImages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUpdateAfterBindStorageImages" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindStorageImages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUpdateAfterBindInputAttachments" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceDescriptorIndexingPropertiesEXT, maxDescriptorSetUpdateAfterBindInputAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void*                  pNext;
+--   >     uint32_t               maxDiscardRectangles;
+--   > } VkPhysicalDeviceDiscardRectanglePropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceDiscardRectanglePropertiesEXT VkPhysicalDeviceDiscardRectanglePropertiesEXT registry at www.khronos.org>
+type VkPhysicalDeviceDiscardRectanglePropertiesEXT =
+     VkStruct VkPhysicalDeviceDiscardRectanglePropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceDiscardRectanglePropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceDiscardRectanglePropertiesEXT
+         where
+    type StructRep VkPhysicalDeviceDiscardRectanglePropertiesEXT =
+         'StructMeta "VkPhysicalDeviceDiscardRectanglePropertiesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceDiscardRectanglePropertiesEXT
+           #{size VkPhysicalDeviceDiscardRectanglePropertiesEXT}
+           #{alignment VkPhysicalDeviceDiscardRectanglePropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDiscardRectangles" Word32 'False 
+                                                              #{offset VkPhysicalDeviceDiscardRectanglePropertiesEXT, maxDiscardRectangles}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceExternalBufferInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkBufferCreateFlags flags;
+--   >     VkBufferUsageFlags               usage;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
+--   > } VkPhysicalDeviceExternalBufferInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfo registry at www.khronos.org>
+type VkPhysicalDeviceExternalBufferInfo =
+     VkStruct VkPhysicalDeviceExternalBufferInfo' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceExternalBufferInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceExternalBufferInfo where
+    type StructRep VkPhysicalDeviceExternalBufferInfo =
+         'StructMeta "VkPhysicalDeviceExternalBufferInfo" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceExternalBufferInfo
+           #{size VkPhysicalDeviceExternalBufferInfo}
+           #{alignment VkPhysicalDeviceExternalBufferInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceExternalBufferInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceExternalBufferInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkBufferCreateFlags 'True 
+                                                           #{offset VkPhysicalDeviceExternalBufferInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "usage" VkBufferUsageFlags 'False 
+                                                           #{offset VkPhysicalDeviceExternalBufferInfo, usage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagBits 'False
+                #{offset VkPhysicalDeviceExternalBufferInfo, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceExternalBufferInfo`
+type VkPhysicalDeviceExternalBufferInfoKHR =
+     VkPhysicalDeviceExternalBufferInfo
+
+-- | > typedef struct VkPhysicalDeviceExternalFenceInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalFenceHandleTypeFlagBits handleType;
+--   > } VkPhysicalDeviceExternalFenceInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfo registry at www.khronos.org>
+type VkPhysicalDeviceExternalFenceInfo =
+     VkStruct VkPhysicalDeviceExternalFenceInfo' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceExternalFenceInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceExternalFenceInfo where
+    type StructRep VkPhysicalDeviceExternalFenceInfo =
+         'StructMeta "VkPhysicalDeviceExternalFenceInfo" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceExternalFenceInfo
+           #{size VkPhysicalDeviceExternalFenceInfo}
+           #{alignment VkPhysicalDeviceExternalFenceInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceExternalFenceInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceExternalFenceInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalFenceHandleTypeFlagBits 'False
+                #{offset VkPhysicalDeviceExternalFenceInfo, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceExternalFenceInfo`
+type VkPhysicalDeviceExternalFenceInfoKHR =
+     VkPhysicalDeviceExternalFenceInfo
+
+-- | > typedef struct VkPhysicalDeviceExternalImageFormatInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
+--   > } VkPhysicalDeviceExternalImageFormatInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfo registry at www.khronos.org>
+type VkPhysicalDeviceExternalImageFormatInfo =
+     VkStruct VkPhysicalDeviceExternalImageFormatInfo' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceExternalImageFormatInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceExternalImageFormatInfo
+         where
+    type StructRep VkPhysicalDeviceExternalImageFormatInfo =
+         'StructMeta "VkPhysicalDeviceExternalImageFormatInfo" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceExternalImageFormatInfo
+           #{size VkPhysicalDeviceExternalImageFormatInfo}
+           #{alignment VkPhysicalDeviceExternalImageFormatInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceExternalImageFormatInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceExternalImageFormatInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagBits 'True
+                #{offset VkPhysicalDeviceExternalImageFormatInfo, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceImageFormatInfo2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceExternalImageFormatInfo`
+type VkPhysicalDeviceExternalImageFormatInfoKHR =
+     VkPhysicalDeviceExternalImageFormatInfo
+
+-- | > typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkDeviceSize minImportedHostPointerAlignment;
+--   > } VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalMemoryHostPropertiesEXT VkPhysicalDeviceExternalMemoryHostPropertiesEXT registry at www.khronos.org>
+type VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
+     VkStruct VkPhysicalDeviceExternalMemoryHostPropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceExternalMemoryHostPropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
+         where
+    type StructRep VkPhysicalDeviceExternalMemoryHostPropertiesEXT =
+         'StructMeta "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceExternalMemoryHostPropertiesEXT
+           #{size VkPhysicalDeviceExternalMemoryHostPropertiesEXT}
+           #{alignment VkPhysicalDeviceExternalMemoryHostPropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minImportedHostPointerAlignment" VkDeviceSize 'False
+                #{offset VkPhysicalDeviceExternalMemoryHostPropertiesEXT, minImportedHostPointerAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
+--   > } VkPhysicalDeviceExternalSemaphoreInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfo registry at www.khronos.org>
+type VkPhysicalDeviceExternalSemaphoreInfo =
+     VkStruct VkPhysicalDeviceExternalSemaphoreInfo' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceExternalSemaphoreInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceExternalSemaphoreInfo where
+    type StructRep VkPhysicalDeviceExternalSemaphoreInfo =
+         'StructMeta "VkPhysicalDeviceExternalSemaphoreInfo" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceExternalSemaphoreInfo
+           #{size VkPhysicalDeviceExternalSemaphoreInfo}
+           #{alignment VkPhysicalDeviceExternalSemaphoreInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceExternalSemaphoreInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceExternalSemaphoreInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalSemaphoreHandleTypeFlagBits -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceExternalSemaphoreInfo, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceExternalSemaphoreInfo`
+type VkPhysicalDeviceExternalSemaphoreInfoKHR =
+     VkPhysicalDeviceExternalSemaphoreInfo
+
+-- | > typedef struct VkPhysicalDeviceFeatures2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkPhysicalDeviceFeatures         features;
+--   > } VkPhysicalDeviceFeatures2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2 registry at www.khronos.org>
+type VkPhysicalDeviceFeatures2 =
+     VkStruct VkPhysicalDeviceFeatures2' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceFeatures2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceFeatures2 where
+    type StructRep VkPhysicalDeviceFeatures2 =
+         'StructMeta "VkPhysicalDeviceFeatures2" VkPhysicalDeviceFeatures2 -- ' closing tick for hsc2hs
+           #{size VkPhysicalDeviceFeatures2}
+           #{alignment VkPhysicalDeviceFeatures2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceFeatures2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceFeatures2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "features" VkPhysicalDeviceFeatures 'False 
+                                                                    #{offset VkPhysicalDeviceFeatures2, features}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceFeatures2`
+type VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2
+
+-- | > typedef struct VkPhysicalDeviceGroupProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         physicalDeviceCount;
+--   >     VkPhysicalDevice                 physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
+--   >     VkBool32                         subsetAllocation;
+--   > } VkPhysicalDeviceGroupProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupProperties registry at www.khronos.org>
+type VkPhysicalDeviceGroupProperties =
+     VkStruct VkPhysicalDeviceGroupProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceGroupProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceGroupProperties where
+    type StructRep VkPhysicalDeviceGroupProperties =
+         'StructMeta "VkPhysicalDeviceGroupProperties" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceGroupProperties
+           #{size VkPhysicalDeviceGroupProperties}
+           #{alignment VkPhysicalDeviceGroupProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceGroupProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceGroupProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "physicalDeviceCount" Word32 'False 
+                                                             #{offset VkPhysicalDeviceGroupProperties, physicalDeviceCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "physicalDevices" VkPhysicalDevice 'False 
+                                                                   #{offset VkPhysicalDeviceGroupProperties, physicalDevices}
+                VK_MAX_DEVICE_GROUP_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subsetAllocation" VkBool32 'False 
+                                                            #{offset VkPhysicalDeviceGroupProperties, subsetAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceGroupProperties`
+type VkPhysicalDeviceGroupPropertiesKHR =
+     VkPhysicalDeviceGroupProperties
+
+-- | > typedef struct VkPhysicalDeviceIDProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint8_t                          deviceUUID[VK_UUID_SIZE];
+--   >     uint8_t                          driverUUID[VK_UUID_SIZE];
+--   >     uint8_t                          deviceLUID[VK_LUID_SIZE];
+--   >     uint32_t                         deviceNodeMask;
+--   >     VkBool32                         deviceLUIDValid;
+--   > } VkPhysicalDeviceIDProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceIDProperties VkPhysicalDeviceIDProperties registry at www.khronos.org>
+type VkPhysicalDeviceIDProperties =
+     VkStruct VkPhysicalDeviceIDProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceIDProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceIDProperties where
+    type StructRep VkPhysicalDeviceIDProperties =
+         'StructMeta "VkPhysicalDeviceIDProperties" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceIDProperties
+           #{size VkPhysicalDeviceIDProperties}
+           #{alignment VkPhysicalDeviceIDProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceIDProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceIDProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceUUID" Word8 'False 
+                                                   #{offset VkPhysicalDeviceIDProperties, deviceUUID}
+                VK_UUID_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "driverUUID" Word8 'False 
+                                                   #{offset VkPhysicalDeviceIDProperties, driverUUID}
+                VK_UUID_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceLUID" Word8 'False 
+                                                   #{offset VkPhysicalDeviceIDProperties, deviceLUID}
+                VK_LUID_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceNodeMask" Word32 'False 
+                                                        #{offset VkPhysicalDeviceIDProperties, deviceNodeMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceLUIDValid" VkBool32 'False 
+                                                           #{offset VkPhysicalDeviceIDProperties, deviceLUIDValid}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceIDProperties`
+type VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties
+
+-- | > typedef struct VkPhysicalDeviceImageFormatInfo2 {
+--   >     VkStructureType sType;
+--   >     const void* pNext;
+--   >     VkFormat                         format;
+--   >     VkImageType                      type;
+--   >     VkImageTiling                    tiling;
+--   >     VkImageUsageFlags                usage;
+--   >     VkImageCreateFlags flags;
+--   > } VkPhysicalDeviceImageFormatInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2 registry at www.khronos.org>
+type VkPhysicalDeviceImageFormatInfo2 =
+     VkStruct VkPhysicalDeviceImageFormatInfo2' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceImageFormatInfo2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceImageFormatInfo2 where
+    type StructRep VkPhysicalDeviceImageFormatInfo2 =
+         'StructMeta "VkPhysicalDeviceImageFormatInfo2" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceImageFormatInfo2
+           #{size VkPhysicalDeviceImageFormatInfo2}
+           #{alignment VkPhysicalDeviceImageFormatInfo2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceImageFormatInfo2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceImageFormatInfo2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkPhysicalDeviceImageFormatInfo2, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "type" VkImageType 'False 
+                                                   #{offset VkPhysicalDeviceImageFormatInfo2, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tiling" VkImageTiling 'False 
+                                                       #{offset VkPhysicalDeviceImageFormatInfo2, tiling}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "usage" VkImageUsageFlags 'False 
+                                                          #{offset VkPhysicalDeviceImageFormatInfo2, usage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkImageCreateFlags 'True 
+                                                          #{offset VkPhysicalDeviceImageFormatInfo2, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceImageFormatInfo2`
+type VkPhysicalDeviceImageFormatInfo2KHR =
+     VkPhysicalDeviceImageFormatInfo2
+
+-- | > typedef struct VkPhysicalDeviceLimits {
+--   >     uint32_t               maxImageDimension1D;
+--   >     uint32_t               maxImageDimension2D;
+--   >     uint32_t               maxImageDimension3D;
+--   >     uint32_t               maxImageDimensionCube;
+--   >     uint32_t               maxImageArrayLayers;
+--   >     uint32_t               maxTexelBufferElements;
+--   >     uint32_t               maxUniformBufferRange;
+--   >     uint32_t               maxStorageBufferRange;
+--   >     uint32_t               maxPushConstantsSize;
+--   >     uint32_t               maxMemoryAllocationCount;
+--   >     uint32_t               maxSamplerAllocationCount;
+--   >     VkDeviceSize           bufferImageGranularity;
+--   >     VkDeviceSize           sparseAddressSpaceSize;
+--   >     uint32_t               maxBoundDescriptorSets;
+--   >     uint32_t               maxPerStageDescriptorSamplers;
+--   >     uint32_t               maxPerStageDescriptorUniformBuffers;
+--   >     uint32_t               maxPerStageDescriptorStorageBuffers;
+--   >     uint32_t               maxPerStageDescriptorSampledImages;
+--   >     uint32_t               maxPerStageDescriptorStorageImages;
+--   >     uint32_t               maxPerStageDescriptorInputAttachments;
+--   >     uint32_t               maxPerStageResources;
+--   >     uint32_t               maxDescriptorSetSamplers;
+--   >     uint32_t               maxDescriptorSetUniformBuffers;
+--   >     uint32_t               maxDescriptorSetUniformBuffersDynamic;
+--   >     uint32_t               maxDescriptorSetStorageBuffers;
+--   >     uint32_t               maxDescriptorSetStorageBuffersDynamic;
+--   >     uint32_t               maxDescriptorSetSampledImages;
+--   >     uint32_t               maxDescriptorSetStorageImages;
+--   >     uint32_t               maxDescriptorSetInputAttachments;
+--   >     uint32_t               maxVertexInputAttributes;
+--   >     uint32_t               maxVertexInputBindings;
+--   >     uint32_t               maxVertexInputAttributeOffset;
+--   >     uint32_t               maxVertexInputBindingStride;
+--   >     uint32_t               maxVertexOutputComponents;
+--   >     uint32_t               maxTessellationGenerationLevel;
+--   >     uint32_t               maxTessellationPatchSize;
+--   >     uint32_t               maxTessellationControlPerVertexInputComponents;
+--   >     uint32_t               maxTessellationControlPerVertexOutputComponents;
+--   >     uint32_t               maxTessellationControlPerPatchOutputComponents;
+--   >     uint32_t               maxTessellationControlTotalOutputComponents;
+--   >     uint32_t               maxTessellationEvaluationInputComponents;
+--   >     uint32_t               maxTessellationEvaluationOutputComponents;
+--   >     uint32_t               maxGeometryShaderInvocations;
+--   >     uint32_t               maxGeometryInputComponents;
+--   >     uint32_t               maxGeometryOutputComponents;
+--   >     uint32_t               maxGeometryOutputVertices;
+--   >     uint32_t               maxGeometryTotalOutputComponents;
+--   >     uint32_t               maxFragmentInputComponents;
+--   >     uint32_t               maxFragmentOutputAttachments;
+--   >     uint32_t               maxFragmentDualSrcAttachments;
+--   >     uint32_t               maxFragmentCombinedOutputResources;
+--   >     uint32_t               maxComputeSharedMemorySize;
+--   >     uint32_t               maxComputeWorkGroupCount[3];
+--   >     uint32_t               maxComputeWorkGroupInvocations;
+--   >     uint32_t               maxComputeWorkGroupSize[3];
+--   >     uint32_t               subPixelPrecisionBits;
+--   >     uint32_t               subTexelPrecisionBits;
+--   >     uint32_t               mipmapPrecisionBits;
+--   >     uint32_t               maxDrawIndexedIndexValue;
+--   >     uint32_t               maxDrawIndirectCount;
+--   >     float                  maxSamplerLodBias;
+--   >     float                  maxSamplerAnisotropy;
+--   >     uint32_t               maxViewports;
+--   >     uint32_t               maxViewportDimensions[2];
+--   >     float                  viewportBoundsRange[2];
+--   >     uint32_t               viewportSubPixelBits;
+--   >     size_t                 minMemoryMapAlignment;
+--   >     VkDeviceSize           minTexelBufferOffsetAlignment;
+--   >     VkDeviceSize           minUniformBufferOffsetAlignment;
+--   >     VkDeviceSize           minStorageBufferOffsetAlignment;
+--   >     int32_t                minTexelOffset;
+--   >     uint32_t               maxTexelOffset;
+--   >     int32_t                minTexelGatherOffset;
+--   >     uint32_t               maxTexelGatherOffset;
+--   >     float                  minInterpolationOffset;
+--   >     float                  maxInterpolationOffset;
+--   >     uint32_t               subPixelInterpolationOffsetBits;
+--   >     uint32_t               maxFramebufferWidth;
+--   >     uint32_t               maxFramebufferHeight;
+--   >     uint32_t               maxFramebufferLayers;
+--   >     VkSampleCountFlags     framebufferColorSampleCounts;
+--   >     VkSampleCountFlags     framebufferDepthSampleCounts;
+--   >     VkSampleCountFlags     framebufferStencilSampleCounts;
+--   >     VkSampleCountFlags     framebufferNoAttachmentsSampleCounts;
+--   >     uint32_t               maxColorAttachments;
+--   >     VkSampleCountFlags     sampledImageColorSampleCounts;
+--   >     VkSampleCountFlags     sampledImageIntegerSampleCounts;
+--   >     VkSampleCountFlags     sampledImageDepthSampleCounts;
+--   >     VkSampleCountFlags     sampledImageStencilSampleCounts;
+--   >     VkSampleCountFlags     storageImageSampleCounts;
+--   >     uint32_t               maxSampleMaskWords;
+--   >     VkBool32               timestampComputeAndGraphics;
+--   >     float                  timestampPeriod;
+--   >     uint32_t               maxClipDistances;
+--   >     uint32_t               maxCullDistances;
+--   >     uint32_t               maxCombinedClipAndCullDistances;
+--   >     uint32_t               discreteQueuePriorities;
+--   >     float                  pointSizeRange[2];
+--   >     float                  lineWidthRange[2];
+--   >     float                  pointSizeGranularity;
+--   >     float                  lineWidthGranularity;
+--   >     VkBool32               strictLines;
+--   >     VkBool32               standardSampleLocations;
+--   >     VkDeviceSize           optimalBufferCopyOffsetAlignment;
+--   >     VkDeviceSize           optimalBufferCopyRowPitchAlignment;
+--   >     VkDeviceSize           nonCoherentAtomSize;
+--   > } VkPhysicalDeviceLimits;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceLimits VkPhysicalDeviceLimits registry at www.khronos.org>
+type VkPhysicalDeviceLimits = VkStruct VkPhysicalDeviceLimits' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceLimits' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceLimits where
+    type StructRep VkPhysicalDeviceLimits =
+         'StructMeta "VkPhysicalDeviceLimits" VkPhysicalDeviceLimits -- ' closing tick for hsc2hs
+           #{size VkPhysicalDeviceLimits}
+           #{alignment VkPhysicalDeviceLimits}
+           '[('FieldMeta "maxImageDimension1D" Word32 'False  -- ' closing tick for hsc2hs
+                                                             #{offset VkPhysicalDeviceLimits, maxImageDimension1D}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageDimension2D" Word32 'False 
+                                                             #{offset VkPhysicalDeviceLimits, maxImageDimension2D}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageDimension3D" Word32 'False 
+                                                             #{offset VkPhysicalDeviceLimits, maxImageDimension3D}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageDimensionCube" Word32 'False 
+                                                               #{offset VkPhysicalDeviceLimits, maxImageDimensionCube}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageArrayLayers" Word32 'False 
+                                                             #{offset VkPhysicalDeviceLimits, maxImageArrayLayers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTexelBufferElements" Word32 'False 
+                                                                #{offset VkPhysicalDeviceLimits, maxTexelBufferElements}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxUniformBufferRange" Word32 'False 
+                                                               #{offset VkPhysicalDeviceLimits, maxUniformBufferRange}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxStorageBufferRange" Word32 'False 
+                                                               #{offset VkPhysicalDeviceLimits, maxStorageBufferRange}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPushConstantsSize" Word32 'False 
+                                                              #{offset VkPhysicalDeviceLimits, maxPushConstantsSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxMemoryAllocationCount" Word32 'False 
+                                                                  #{offset VkPhysicalDeviceLimits, maxMemoryAllocationCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSamplerAllocationCount" Word32 'False 
+                                                                   #{offset VkPhysicalDeviceLimits, maxSamplerAllocationCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bufferImageGranularity" VkDeviceSize 'False 
+                                                                      #{offset VkPhysicalDeviceLimits, bufferImageGranularity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseAddressSpaceSize" VkDeviceSize 'False 
+                                                                      #{offset VkPhysicalDeviceLimits, sparseAddressSpaceSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxBoundDescriptorSets" Word32 'False 
+                                                                #{offset VkPhysicalDeviceLimits, maxBoundDescriptorSets}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorSamplers" Word32 'False 
+                                                                       #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSamplers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorUniformBuffers" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorUniformBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorStorageBuffers" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorSampledImages" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorSampledImages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorStorageImages" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorStorageImages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageDescriptorInputAttachments" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxPerStageDescriptorInputAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerStageResources" Word32 'False 
+                                                              #{offset VkPhysicalDeviceLimits, maxPerStageResources}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetSamplers" Word32 'False 
+                                                                  #{offset VkPhysicalDeviceLimits, maxDescriptorSetSamplers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUniformBuffers" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetUniformBuffersDynamic" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxDescriptorSetUniformBuffersDynamic}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetStorageBuffers" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetStorageBuffersDynamic" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageBuffersDynamic}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetSampledImages" Word32 'False 
+                                                                       #{offset VkPhysicalDeviceLimits, maxDescriptorSetSampledImages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetStorageImages" Word32 'False 
+                                                                       #{offset VkPhysicalDeviceLimits, maxDescriptorSetStorageImages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDescriptorSetInputAttachments" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxDescriptorSetInputAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxVertexInputAttributes" Word32 'False 
+                                                                  #{offset VkPhysicalDeviceLimits, maxVertexInputAttributes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxVertexInputBindings" Word32 'False 
+                                                                #{offset VkPhysicalDeviceLimits, maxVertexInputBindings}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxVertexInputAttributeOffset" Word32 'False 
+                                                                       #{offset VkPhysicalDeviceLimits, maxVertexInputAttributeOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxVertexInputBindingStride" Word32 'False 
+                                                                     #{offset VkPhysicalDeviceLimits, maxVertexInputBindingStride}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxVertexOutputComponents" Word32 'False 
+                                                                   #{offset VkPhysicalDeviceLimits, maxVertexOutputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTessellationGenerationLevel" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxTessellationGenerationLevel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTessellationPatchSize" Word32 'False 
+                                                                  #{offset VkPhysicalDeviceLimits, maxTessellationPatchSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTessellationControlPerVertexInputComponents" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexInputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTessellationControlPerVertexOutputComponents" -- ' closing tick for hsc2hs
+                Word32
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxTessellationControlPerVertexOutputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTessellationControlPerPatchOutputComponents" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxTessellationControlPerPatchOutputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTessellationControlTotalOutputComponents" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxTessellationControlTotalOutputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTessellationEvaluationInputComponents" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationInputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTessellationEvaluationOutputComponents" Word32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxTessellationEvaluationOutputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxGeometryShaderInvocations" Word32 'False 
+                                                                      #{offset VkPhysicalDeviceLimits, maxGeometryShaderInvocations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxGeometryInputComponents" Word32 'False 
+                                                                    #{offset VkPhysicalDeviceLimits, maxGeometryInputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxGeometryOutputComponents" Word32 'False 
+                                                                     #{offset VkPhysicalDeviceLimits, maxGeometryOutputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxGeometryOutputVertices" Word32 'False 
+                                                                   #{offset VkPhysicalDeviceLimits, maxGeometryOutputVertices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxGeometryTotalOutputComponents" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxGeometryTotalOutputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxFragmentInputComponents" Word32 'False 
+                                                                    #{offset VkPhysicalDeviceLimits, maxFragmentInputComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxFragmentOutputAttachments" Word32 'False 
+                                                                      #{offset VkPhysicalDeviceLimits, maxFragmentOutputAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxFragmentDualSrcAttachments" Word32 'False 
+                                                                       #{offset VkPhysicalDeviceLimits, maxFragmentDualSrcAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxFragmentCombinedOutputResources" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxFragmentCombinedOutputResources}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxComputeSharedMemorySize" Word32 'False 
+                                                                    #{offset VkPhysicalDeviceLimits, maxComputeSharedMemorySize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxComputeWorkGroupCount" Word32 'False 
+                                                                  #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupCount}
+                3
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxComputeWorkGroupInvocations" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupInvocations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxComputeWorkGroupSize" Word32 'False 
+                                                                 #{offset VkPhysicalDeviceLimits, maxComputeWorkGroupSize}
+                3
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subPixelPrecisionBits" Word32 'False 
+                                                               #{offset VkPhysicalDeviceLimits, subPixelPrecisionBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subTexelPrecisionBits" Word32 'False 
+                                                               #{offset VkPhysicalDeviceLimits, subTexelPrecisionBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mipmapPrecisionBits" Word32 'False 
+                                                             #{offset VkPhysicalDeviceLimits, mipmapPrecisionBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDrawIndexedIndexValue" Word32 'False 
+                                                                  #{offset VkPhysicalDeviceLimits, maxDrawIndexedIndexValue}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDrawIndirectCount" Word32 'False 
+                                                              #{offset VkPhysicalDeviceLimits, maxDrawIndirectCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSamplerLodBias" ( -- ' closing tick for hsc2hs
+                                              #{type float}
+                                              ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxSamplerLodBias}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSamplerAnisotropy" ( -- ' closing tick for hsc2hs
+                                                 #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxSamplerAnisotropy}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxViewports" Word32 'False 
+                                                      #{offset VkPhysicalDeviceLimits, maxViewports}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxViewportDimensions" Word32 'False 
+                                                               #{offset VkPhysicalDeviceLimits, maxViewportDimensions}
+                2
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "viewportBoundsRange" ( -- ' closing tick for hsc2hs
+                                                #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, viewportBoundsRange}
+                2
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "viewportSubPixelBits" Word32 'False 
+                                                              #{offset VkPhysicalDeviceLimits, viewportSubPixelBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minMemoryMapAlignment" CSize 'False 
+                                                              #{offset VkPhysicalDeviceLimits, minMemoryMapAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minTexelBufferOffsetAlignment" VkDeviceSize 'False
+                #{offset VkPhysicalDeviceLimits, minTexelBufferOffsetAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minUniformBufferOffsetAlignment" VkDeviceSize 'False
+                #{offset VkPhysicalDeviceLimits, minUniformBufferOffsetAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minStorageBufferOffsetAlignment" VkDeviceSize 'False
+                #{offset VkPhysicalDeviceLimits, minStorageBufferOffsetAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minTexelOffset" Int32 'False 
+                                                       #{offset VkPhysicalDeviceLimits, minTexelOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTexelOffset" Word32 'False 
+                                                        #{offset VkPhysicalDeviceLimits, maxTexelOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minTexelGatherOffset" Int32 'False 
+                                                             #{offset VkPhysicalDeviceLimits, minTexelGatherOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxTexelGatherOffset" Word32 'False 
+                                                              #{offset VkPhysicalDeviceLimits, maxTexelGatherOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minInterpolationOffset" ( -- ' closing tick for hsc2hs
+                                                   #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, minInterpolationOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxInterpolationOffset" ( -- ' closing tick for hsc2hs
+                                                   #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, maxInterpolationOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subPixelInterpolationOffsetBits" Word32 'False
+                #{offset VkPhysicalDeviceLimits, subPixelInterpolationOffsetBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxFramebufferWidth" Word32 'False 
+                                                             #{offset VkPhysicalDeviceLimits, maxFramebufferWidth}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxFramebufferHeight" Word32 'False 
+                                                              #{offset VkPhysicalDeviceLimits, maxFramebufferHeight}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxFramebufferLayers" Word32 'False 
+                                                              #{offset VkPhysicalDeviceLimits, maxFramebufferLayers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "framebufferColorSampleCounts" VkSampleCountFlags 'True
+                #{offset VkPhysicalDeviceLimits, framebufferColorSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "framebufferDepthSampleCounts" VkSampleCountFlags 'True
+                #{offset VkPhysicalDeviceLimits, framebufferDepthSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "framebufferStencilSampleCounts" VkSampleCountFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, framebufferStencilSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "framebufferNoAttachmentsSampleCounts" -- ' closing tick for hsc2hs
+                VkSampleCountFlags
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, framebufferNoAttachmentsSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxColorAttachments" Word32 'False 
+                                                             #{offset VkPhysicalDeviceLimits, maxColorAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampledImageColorSampleCounts" VkSampleCountFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, sampledImageColorSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampledImageIntegerSampleCounts" VkSampleCountFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, sampledImageIntegerSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampledImageDepthSampleCounts" VkSampleCountFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, sampledImageDepthSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampledImageStencilSampleCounts" VkSampleCountFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, sampledImageStencilSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "storageImageSampleCounts" VkSampleCountFlags 'True
+                #{offset VkPhysicalDeviceLimits, storageImageSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSampleMaskWords" Word32 'False 
+                                                            #{offset VkPhysicalDeviceLimits, maxSampleMaskWords}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "timestampComputeAndGraphics" VkBool32 'False 
+                                                                       #{offset VkPhysicalDeviceLimits, timestampComputeAndGraphics}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "timestampPeriod" ( -- ' closing tick for hsc2hs
+                                            #{type float}
+                                            ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, timestampPeriod}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxClipDistances" Word32 'False 
+                                                          #{offset VkPhysicalDeviceLimits, maxClipDistances}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxCullDistances" Word32 'False 
+                                                          #{offset VkPhysicalDeviceLimits, maxCullDistances}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxCombinedClipAndCullDistances" Word32 'False
+                #{offset VkPhysicalDeviceLimits, maxCombinedClipAndCullDistances}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "discreteQueuePriorities" Word32 'False 
+                                                                 #{offset VkPhysicalDeviceLimits, discreteQueuePriorities}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pointSizeRange" ( -- ' closing tick for hsc2hs
+                                           #{type float}
+                                           ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, pointSizeRange}
+                2
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "lineWidthRange" ( -- ' closing tick for hsc2hs
+                                           #{type float}
+                                           ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, lineWidthRange}
+                2
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pointSizeGranularity" ( -- ' closing tick for hsc2hs
+                                                 #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, pointSizeGranularity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "lineWidthGranularity" ( -- ' closing tick for hsc2hs
+                                                 #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, lineWidthGranularity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "strictLines" VkBool32 'False 
+                                                       #{offset VkPhysicalDeviceLimits, strictLines}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "standardSampleLocations" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceLimits, standardSampleLocations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "optimalBufferCopyOffsetAlignment" VkDeviceSize 'False
+                #{offset VkPhysicalDeviceLimits, optimalBufferCopyOffsetAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "optimalBufferCopyRowPitchAlignment" VkDeviceSize -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceLimits, optimalBufferCopyRowPitchAlignment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "nonCoherentAtomSize" VkDeviceSize 'False 
+                                                                   #{offset VkPhysicalDeviceLimits, nonCoherentAtomSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceMaintenance3Properties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         maxPerSetDescriptors;
+--   >     VkDeviceSize                     maxMemoryAllocationSize;
+--   > } VkPhysicalDeviceMaintenance3Properties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3Properties registry at www.khronos.org>
+type VkPhysicalDeviceMaintenance3Properties =
+     VkStruct VkPhysicalDeviceMaintenance3Properties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceMaintenance3Properties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceMaintenance3Properties where
+    type StructRep VkPhysicalDeviceMaintenance3Properties =
+         'StructMeta "VkPhysicalDeviceMaintenance3Properties" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceMaintenance3Properties
+           #{size VkPhysicalDeviceMaintenance3Properties}
+           #{alignment VkPhysicalDeviceMaintenance3Properties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceMaintenance3Properties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceMaintenance3Properties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPerSetDescriptors" Word32 'False 
+                                                              #{offset VkPhysicalDeviceMaintenance3Properties, maxPerSetDescriptors}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxMemoryAllocationSize" VkDeviceSize 'False 
+                                                                       #{offset VkPhysicalDeviceMaintenance3Properties, maxMemoryAllocationSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceMaintenance3Properties`
+type VkPhysicalDeviceMaintenance3PropertiesKHR =
+     VkPhysicalDeviceMaintenance3Properties
+
+-- | > typedef struct VkPhysicalDeviceMemoryProperties {
+--   >     uint32_t               memoryTypeCount;
+--   >     VkMemoryType           memoryTypes[VK_MAX_MEMORY_TYPES];
+--   >     uint32_t               memoryHeapCount;
+--   >     VkMemoryHeap           memoryHeaps[VK_MAX_MEMORY_HEAPS];
+--   > } VkPhysicalDeviceMemoryProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMemoryProperties VkPhysicalDeviceMemoryProperties registry at www.khronos.org>
+type VkPhysicalDeviceMemoryProperties =
+     VkStruct VkPhysicalDeviceMemoryProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceMemoryProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceMemoryProperties where
+    type StructRep VkPhysicalDeviceMemoryProperties =
+         'StructMeta "VkPhysicalDeviceMemoryProperties" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceMemoryProperties
+           #{size VkPhysicalDeviceMemoryProperties}
+           #{alignment VkPhysicalDeviceMemoryProperties}
+           '[('FieldMeta "memoryTypeCount" Word32 'False  -- ' closing tick for hsc2hs
+                                                         #{offset VkPhysicalDeviceMemoryProperties, memoryTypeCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryTypes" VkMemoryType 'False 
+                                                           #{offset VkPhysicalDeviceMemoryProperties, memoryTypes}
+                VK_MAX_MEMORY_TYPES
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryHeapCount" Word32 'False 
+                                                         #{offset VkPhysicalDeviceMemoryProperties, memoryHeapCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryHeaps" VkMemoryHeap 'False 
+                                                           #{offset VkPhysicalDeviceMemoryProperties, memoryHeaps}
+                VK_MAX_MEMORY_HEAPS
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceMemoryProperties2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkPhysicalDeviceMemoryProperties memoryProperties;
+--   > } VkPhysicalDeviceMemoryProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2 registry at www.khronos.org>
+type VkPhysicalDeviceMemoryProperties2 =
+     VkStruct VkPhysicalDeviceMemoryProperties2' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceMemoryProperties2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceMemoryProperties2 where
+    type StructRep VkPhysicalDeviceMemoryProperties2 =
+         'StructMeta "VkPhysicalDeviceMemoryProperties2" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceMemoryProperties2
+           #{size VkPhysicalDeviceMemoryProperties2}
+           #{alignment VkPhysicalDeviceMemoryProperties2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceMemoryProperties2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceMemoryProperties2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryProperties" VkPhysicalDeviceMemoryProperties -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceMemoryProperties2, memoryProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceMemoryProperties2`
+type VkPhysicalDeviceMemoryProperties2KHR =
+     VkPhysicalDeviceMemoryProperties2
+
+-- | > typedef struct VkPhysicalDeviceMultiviewFeatures {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         multiview;
+--   >     VkBool32                         multiviewGeometryShader;
+--   >     VkBool32                         multiviewTessellationShader;
+--   > } VkPhysicalDeviceMultiviewFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeatures registry at www.khronos.org>
+type VkPhysicalDeviceMultiviewFeatures =
+     VkStruct VkPhysicalDeviceMultiviewFeatures' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceMultiviewFeatures' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceMultiviewFeatures where
+    type StructRep VkPhysicalDeviceMultiviewFeatures =
+         'StructMeta "VkPhysicalDeviceMultiviewFeatures" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceMultiviewFeatures
+           #{size VkPhysicalDeviceMultiviewFeatures}
+           #{alignment VkPhysicalDeviceMultiviewFeatures}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceMultiviewFeatures, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceMultiviewFeatures, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "multiview" VkBool32 'False 
+                                                     #{offset VkPhysicalDeviceMultiviewFeatures, multiview}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "multiviewGeometryShader" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceMultiviewFeatures, multiviewGeometryShader}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "multiviewTessellationShader" VkBool32 'False 
+                                                                       #{offset VkPhysicalDeviceMultiviewFeatures, multiviewTessellationShader}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceMultiviewFeatures`
+type VkPhysicalDeviceMultiviewFeaturesKHR =
+     VkPhysicalDeviceMultiviewFeatures
+
+-- | > typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         perViewPositionAllComponents;
+--   > } VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX registry at www.khronos.org>
+type VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX =
+     VkStruct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
+         where
+    type StructRep
+           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
+         =
+         'StructMeta -- ' closing tick for hsc2hs
+           "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX"
+           VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
+           #{size VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX}
+           #{alignment VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "perViewPositionAllComponents" VkBool32 'False
+                #{offset VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, perViewPositionAllComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceMultiviewProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         maxMultiviewViewCount;
+--   >     uint32_t                         maxMultiviewInstanceIndex;
+--   > } VkPhysicalDeviceMultiviewProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewProperties registry at www.khronos.org>
+type VkPhysicalDeviceMultiviewProperties =
+     VkStruct VkPhysicalDeviceMultiviewProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceMultiviewProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceMultiviewProperties where
+    type StructRep VkPhysicalDeviceMultiviewProperties =
+         'StructMeta "VkPhysicalDeviceMultiviewProperties" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceMultiviewProperties
+           #{size VkPhysicalDeviceMultiviewProperties}
+           #{alignment VkPhysicalDeviceMultiviewProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceMultiviewProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceMultiviewProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxMultiviewViewCount" Word32 'False 
+                                                               #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewViewCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxMultiviewInstanceIndex" Word32 'False 
+                                                                   #{offset VkPhysicalDeviceMultiviewProperties, maxMultiviewInstanceIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceMultiviewProperties`
+type VkPhysicalDeviceMultiviewPropertiesKHR =
+     VkPhysicalDeviceMultiviewProperties
+
+-- | > typedef struct VkPhysicalDevicePointClippingProperties {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkPointClippingBehavior      pointClippingBehavior;
+--   > } VkPhysicalDevicePointClippingProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingProperties registry at www.khronos.org>
+type VkPhysicalDevicePointClippingProperties =
+     VkStruct VkPhysicalDevicePointClippingProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDevicePointClippingProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDevicePointClippingProperties
+         where
+    type StructRep VkPhysicalDevicePointClippingProperties =
+         'StructMeta "VkPhysicalDevicePointClippingProperties" -- ' closing tick for hsc2hs
+           VkPhysicalDevicePointClippingProperties
+           #{size VkPhysicalDevicePointClippingProperties}
+           #{alignment VkPhysicalDevicePointClippingProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDevicePointClippingProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDevicePointClippingProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pointClippingBehavior" VkPointClippingBehavior 'False
+                #{offset VkPhysicalDevicePointClippingProperties, pointClippingBehavior}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDevicePointClippingProperties`
+type VkPhysicalDevicePointClippingPropertiesKHR =
+     VkPhysicalDevicePointClippingProperties
+
+-- | > typedef struct VkPhysicalDeviceProperties {
+--   >     uint32_t       apiVersion;
+--   >     uint32_t       driverVersion;
+--   >     uint32_t       vendorID;
+--   >     uint32_t       deviceID;
+--   >     VkPhysicalDeviceType deviceType;
+--   >     char           deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
+--   >     uint8_t        pipelineCacheUUID[VK_UUID_SIZE];
+--   >     VkPhysicalDeviceLimits limits;
+--   >     VkPhysicalDeviceSparseProperties sparseProperties;
+--   > } VkPhysicalDeviceProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceProperties VkPhysicalDeviceProperties registry at www.khronos.org>
+type VkPhysicalDeviceProperties =
+     VkStruct VkPhysicalDeviceProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceProperties where
+    type StructRep VkPhysicalDeviceProperties =
+         'StructMeta "VkPhysicalDeviceProperties" VkPhysicalDeviceProperties -- ' closing tick for hsc2hs
+           #{size VkPhysicalDeviceProperties}
+           #{alignment VkPhysicalDeviceProperties}
+           '[('FieldMeta "apiVersion" Word32 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkPhysicalDeviceProperties, apiVersion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "driverVersion" Word32 'False 
+                                                       #{offset VkPhysicalDeviceProperties, driverVersion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "vendorID" Word32 'False 
+                                                  #{offset VkPhysicalDeviceProperties, vendorID}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceID" Word32 'False 
+                                                  #{offset VkPhysicalDeviceProperties, deviceID}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceType" VkPhysicalDeviceType 'False 
+                                                                  #{offset VkPhysicalDeviceProperties, deviceType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "deviceName" CChar 'False 
+                                                   #{offset VkPhysicalDeviceProperties, deviceName}
+                VK_MAX_PHYSICAL_DEVICE_NAME_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineCacheUUID" Word8 'False 
+                                                          #{offset VkPhysicalDeviceProperties, pipelineCacheUUID}
+                VK_UUID_SIZE
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "limits" VkPhysicalDeviceLimits 'False 
+                                                                #{offset VkPhysicalDeviceProperties, limits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseProperties" VkPhysicalDeviceSparseProperties -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceProperties, sparseProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceProperties2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkPhysicalDeviceProperties       properties;
+--   > } VkPhysicalDeviceProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2 registry at www.khronos.org>
+type VkPhysicalDeviceProperties2 =
+     VkStruct VkPhysicalDeviceProperties2' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceProperties2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceProperties2 where
+    type StructRep VkPhysicalDeviceProperties2 =
+         'StructMeta "VkPhysicalDeviceProperties2" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceProperties2
+           #{size VkPhysicalDeviceProperties2}
+           #{alignment VkPhysicalDeviceProperties2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceProperties2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceProperties2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "properties" VkPhysicalDeviceProperties 'False
+                #{offset VkPhysicalDeviceProperties2, properties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceProperties2`
+type VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2
+
+-- | > typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
+--   >     VkStructureType sType;
+--   >     void*                               pNext;
+--   >     VkBool32                            protectedMemory;
+--   > } VkPhysicalDeviceProtectedMemoryFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceProtectedMemoryFeatures VkPhysicalDeviceProtectedMemoryFeatures registry at www.khronos.org>
+type VkPhysicalDeviceProtectedMemoryFeatures =
+     VkStruct VkPhysicalDeviceProtectedMemoryFeatures' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceProtectedMemoryFeatures' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceProtectedMemoryFeatures
+         where
+    type StructRep VkPhysicalDeviceProtectedMemoryFeatures =
+         'StructMeta "VkPhysicalDeviceProtectedMemoryFeatures" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceProtectedMemoryFeatures
+           #{size VkPhysicalDeviceProtectedMemoryFeatures}
+           #{alignment VkPhysicalDeviceProtectedMemoryFeatures}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceProtectedMemoryFeatures, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceProtectedMemoryFeatures, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "protectedMemory" VkBool32 'False 
+                                                           #{offset VkPhysicalDeviceProtectedMemoryFeatures, protectedMemory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceProtectedMemoryProperties {
+--   >     VkStructureType sType;
+--   >     void*                               pNext;
+--   >     VkBool32                            protectedNoFault;
+--   > } VkPhysicalDeviceProtectedMemoryProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceProtectedMemoryProperties VkPhysicalDeviceProtectedMemoryProperties registry at www.khronos.org>
+type VkPhysicalDeviceProtectedMemoryProperties =
+     VkStruct VkPhysicalDeviceProtectedMemoryProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceProtectedMemoryProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceProtectedMemoryProperties
+         where
+    type StructRep VkPhysicalDeviceProtectedMemoryProperties =
+         'StructMeta "VkPhysicalDeviceProtectedMemoryProperties" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceProtectedMemoryProperties
+           #{size VkPhysicalDeviceProtectedMemoryProperties}
+           #{alignment VkPhysicalDeviceProtectedMemoryProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceProtectedMemoryProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceProtectedMemoryProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "protectedNoFault" VkBool32 'False 
+                                                            #{offset VkPhysicalDeviceProtectedMemoryProperties, protectedNoFault}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         maxPushDescriptors;
+--   > } VkPhysicalDevicePushDescriptorPropertiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDevicePushDescriptorPropertiesKHR VkPhysicalDevicePushDescriptorPropertiesKHR registry at www.khronos.org>
+type VkPhysicalDevicePushDescriptorPropertiesKHR =
+     VkStruct VkPhysicalDevicePushDescriptorPropertiesKHR' -- ' closing tick for hsc2hs
+
+data VkPhysicalDevicePushDescriptorPropertiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDevicePushDescriptorPropertiesKHR
+         where
+    type StructRep VkPhysicalDevicePushDescriptorPropertiesKHR =
+         'StructMeta "VkPhysicalDevicePushDescriptorPropertiesKHR" -- ' closing tick for hsc2hs
+           VkPhysicalDevicePushDescriptorPropertiesKHR
+           #{size VkPhysicalDevicePushDescriptorPropertiesKHR}
+           #{alignment VkPhysicalDevicePushDescriptorPropertiesKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxPushDescriptors" Word32 'False 
+                                                            #{offset VkPhysicalDevicePushDescriptorPropertiesKHR, maxPushDescriptors}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkSampleCountFlags               sampleLocationSampleCounts;
+--   >     VkExtent2D                       maxSampleLocationGridSize;
+--   >     float                            sampleLocationCoordinateRange[2];
+--   >     uint32_t                         sampleLocationSubPixelBits;
+--   >     VkBool32                         variableSampleLocations;
+--   > } VkPhysicalDeviceSampleLocationsPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSampleLocationsPropertiesEXT VkPhysicalDeviceSampleLocationsPropertiesEXT registry at www.khronos.org>
+type VkPhysicalDeviceSampleLocationsPropertiesEXT =
+     VkStruct VkPhysicalDeviceSampleLocationsPropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceSampleLocationsPropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceSampleLocationsPropertiesEXT
+         where
+    type StructRep VkPhysicalDeviceSampleLocationsPropertiesEXT =
+         'StructMeta "VkPhysicalDeviceSampleLocationsPropertiesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceSampleLocationsPropertiesEXT
+           #{size VkPhysicalDeviceSampleLocationsPropertiesEXT}
+           #{alignment VkPhysicalDeviceSampleLocationsPropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationSampleCounts" VkSampleCountFlags 'False
+                #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSampleCounts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSampleLocationGridSize" VkExtent2D 'False 
+                                                                       #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, maxSampleLocationGridSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationCoordinateRange" -- ' closing tick for hsc2hs
+                (#{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationCoordinateRange}
+                2
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationSubPixelBits" Word32 'False 
+                                                                    #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, sampleLocationSubPixelBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "variableSampleLocations" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceSampleLocationsPropertiesEXT, variableSampleLocations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void*                  pNext;
+--   >     VkBool32               filterMinmaxSingleComponentFormats;
+--   >     VkBool32               filterMinmaxImageComponentMapping;
+--   > } VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT registry at www.khronos.org>
+type VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
+     VkStruct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
+         where
+    type StructRep VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT =
+         'StructMeta "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
+           #{size VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT}
+           #{alignment VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "filterMinmaxSingleComponentFormats" VkBool32 'False
+                #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxSingleComponentFormats}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "filterMinmaxImageComponentMapping" VkBool32 'False
+                #{offset VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, filterMinmaxImageComponentMapping}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
+--   >     VkStructureType sType;
+--   >     void*      pNext;
+--   >     VkBool32                         samplerYcbcrConversion;
+--   > } VkPhysicalDeviceSamplerYcbcrConversionFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeatures registry at www.khronos.org>
+type VkPhysicalDeviceSamplerYcbcrConversionFeatures =
+     VkStruct VkPhysicalDeviceSamplerYcbcrConversionFeatures' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceSamplerYcbcrConversionFeatures' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceSamplerYcbcrConversionFeatures
+         where
+    type StructRep VkPhysicalDeviceSamplerYcbcrConversionFeatures =
+         'StructMeta "VkPhysicalDeviceSamplerYcbcrConversionFeatures" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceSamplerYcbcrConversionFeatures
+           #{size VkPhysicalDeviceSamplerYcbcrConversionFeatures}
+           #{alignment VkPhysicalDeviceSamplerYcbcrConversionFeatures}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "samplerYcbcrConversion" VkBool32 'False 
+                                                                  #{offset VkPhysicalDeviceSamplerYcbcrConversionFeatures, samplerYcbcrConversion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceSamplerYcbcrConversionFeatures`
+type VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR =
+     VkPhysicalDeviceSamplerYcbcrConversionFeatures
+
+-- | > typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
+--   >     VkStructureType sType;
+--   >     void*    pNext;
+--   >     uint32_t shaderEngineCount;
+--   >     uint32_t shaderArraysPerEngineCount;
+--   >     uint32_t computeUnitsPerShaderArray;
+--   >     uint32_t simdPerComputeUnit;
+--   >     uint32_t wavefrontsPerSimd;
+--   >     uint32_t wavefrontSize;
+--   >     uint32_t sgprsPerSimd;
+--   >     uint32_t minSgprAllocation;
+--   >     uint32_t maxSgprAllocation;
+--   >     uint32_t sgprAllocationGranularity;
+--   >     uint32_t vgprsPerSimd;
+--   >     uint32_t minVgprAllocation;
+--   >     uint32_t maxVgprAllocation;
+--   >     uint32_t vgprAllocationGranularity;
+--   > } VkPhysicalDeviceShaderCorePropertiesAMD;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceShaderCorePropertiesAMD VkPhysicalDeviceShaderCorePropertiesAMD registry at www.khronos.org>
+type VkPhysicalDeviceShaderCorePropertiesAMD =
+     VkStruct VkPhysicalDeviceShaderCorePropertiesAMD' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceShaderCorePropertiesAMD' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceShaderCorePropertiesAMD
+         where
+    type StructRep VkPhysicalDeviceShaderCorePropertiesAMD =
+         'StructMeta "VkPhysicalDeviceShaderCorePropertiesAMD" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceShaderCorePropertiesAMD
+           #{size VkPhysicalDeviceShaderCorePropertiesAMD}
+           #{alignment VkPhysicalDeviceShaderCorePropertiesAMD}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceShaderCorePropertiesAMD, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderEngineCount" Word32 'False 
+                                                           #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderEngineCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderArraysPerEngineCount" Word32 'False 
+                                                                    #{offset VkPhysicalDeviceShaderCorePropertiesAMD, shaderArraysPerEngineCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "computeUnitsPerShaderArray" Word32 'False 
+                                                                    #{offset VkPhysicalDeviceShaderCorePropertiesAMD, computeUnitsPerShaderArray}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "simdPerComputeUnit" Word32 'False 
+                                                            #{offset VkPhysicalDeviceShaderCorePropertiesAMD, simdPerComputeUnit}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "wavefrontsPerSimd" Word32 'False 
+                                                           #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontsPerSimd}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "wavefrontSize" Word32 'False 
+                                                       #{offset VkPhysicalDeviceShaderCorePropertiesAMD, wavefrontSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sgprsPerSimd" Word32 'False 
+                                                      #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprsPerSimd}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minSgprAllocation" Word32 'False 
+                                                           #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minSgprAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxSgprAllocation" Word32 'False 
+                                                           #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxSgprAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sgprAllocationGranularity" Word32 'False 
+                                                                   #{offset VkPhysicalDeviceShaderCorePropertiesAMD, sgprAllocationGranularity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "vgprsPerSimd" Word32 'False 
+                                                      #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprsPerSimd}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minVgprAllocation" Word32 'False 
+                                                           #{offset VkPhysicalDeviceShaderCorePropertiesAMD, minVgprAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxVgprAllocation" Word32 'False 
+                                                           #{offset VkPhysicalDeviceShaderCorePropertiesAMD, maxVgprAllocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "vgprAllocationGranularity" Word32 'False 
+                                                                   #{offset VkPhysicalDeviceShaderCorePropertiesAMD, vgprAllocationGranularity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceShaderDrawParameterFeatures {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         shaderDrawParameters;
+--   > } VkPhysicalDeviceShaderDrawParameterFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceShaderDrawParameterFeatures VkPhysicalDeviceShaderDrawParameterFeatures registry at www.khronos.org>
+type VkPhysicalDeviceShaderDrawParameterFeatures =
+     VkStruct VkPhysicalDeviceShaderDrawParameterFeatures' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceShaderDrawParameterFeatures' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceShaderDrawParameterFeatures
+         where
+    type StructRep VkPhysicalDeviceShaderDrawParameterFeatures =
+         'StructMeta "VkPhysicalDeviceShaderDrawParameterFeatures" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceShaderDrawParameterFeatures
+           #{size VkPhysicalDeviceShaderDrawParameterFeatures}
+           #{alignment VkPhysicalDeviceShaderDrawParameterFeatures}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceShaderDrawParameterFeatures, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceShaderDrawParameterFeatures, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderDrawParameters" VkBool32 'False 
+                                                                #{offset VkPhysicalDeviceShaderDrawParameterFeatures, shaderDrawParameters}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceFeatures2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkFormat                         format;
+--   >     VkImageType                      type;
+--   >     VkSampleCountFlagBits            samples;
+--   >     VkImageUsageFlags                usage;
+--   >     VkImageTiling                    tiling;
+--   > } VkPhysicalDeviceSparseImageFormatInfo2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2 registry at www.khronos.org>
+type VkPhysicalDeviceSparseImageFormatInfo2 =
+     VkStruct VkPhysicalDeviceSparseImageFormatInfo2' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceSparseImageFormatInfo2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceSparseImageFormatInfo2 where
+    type StructRep VkPhysicalDeviceSparseImageFormatInfo2 =
+         'StructMeta "VkPhysicalDeviceSparseImageFormatInfo2" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceSparseImageFormatInfo2
+           #{size VkPhysicalDeviceSparseImageFormatInfo2}
+           #{alignment VkPhysicalDeviceSparseImageFormatInfo2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceSparseImageFormatInfo2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceSparseImageFormatInfo2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkPhysicalDeviceSparseImageFormatInfo2, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "type" VkImageType 'False 
+                                                   #{offset VkPhysicalDeviceSparseImageFormatInfo2, type}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "samples" VkSampleCountFlagBits 'False 
+                                                                #{offset VkPhysicalDeviceSparseImageFormatInfo2, samples}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "usage" VkImageUsageFlags 'False 
+                                                          #{offset VkPhysicalDeviceSparseImageFormatInfo2, usage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tiling" VkImageTiling 'False 
+                                                       #{offset VkPhysicalDeviceSparseImageFormatInfo2, tiling}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceSparseImageFormatInfo2`
+type VkPhysicalDeviceSparseImageFormatInfo2KHR =
+     VkPhysicalDeviceSparseImageFormatInfo2
+
+-- | > typedef struct VkPhysicalDeviceSparseProperties {
+--   >     VkBool32               residencyStandard2DBlockShape;
+--   >     VkBool32               residencyStandard2DMultisampleBlockShape;
+--   >     VkBool32               residencyStandard3DBlockShape;
+--   >     VkBool32               residencyAlignedMipSize;
+--   >     VkBool32               residencyNonResidentStrict;
+--   > } VkPhysicalDeviceSparseProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSparseProperties VkPhysicalDeviceSparseProperties registry at www.khronos.org>
+type VkPhysicalDeviceSparseProperties =
+     VkStruct VkPhysicalDeviceSparseProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceSparseProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceSparseProperties where
+    type StructRep VkPhysicalDeviceSparseProperties =
+         'StructMeta "VkPhysicalDeviceSparseProperties" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceSparseProperties
+           #{size VkPhysicalDeviceSparseProperties}
+           #{alignment VkPhysicalDeviceSparseProperties}
+           '[('FieldMeta "residencyStandard2DBlockShape" VkBool32 'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DBlockShape}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "residencyStandard2DMultisampleBlockShape" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceSparseProperties, residencyStandard2DMultisampleBlockShape}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "residencyStandard3DBlockShape" VkBool32 'False
+                #{offset VkPhysicalDeviceSparseProperties, residencyStandard3DBlockShape}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "residencyAlignedMipSize" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceSparseProperties, residencyAlignedMipSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "residencyNonResidentStrict" VkBool32 'False 
+                                                                      #{offset VkPhysicalDeviceSparseProperties, residencyNonResidentStrict}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceSubgroupProperties {
+--   >     VkStructureType sType;
+--   >     void*                   pNext;
+--   >     uint32_t                      subgroupSize;
+--   >     VkShaderStageFlags            supportedStages;
+--   >     VkSubgroupFeatureFlags        supportedOperations;
+--   >     VkBool32 quadOperationsInAllStages;
+--   > } VkPhysicalDeviceSubgroupProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSubgroupProperties VkPhysicalDeviceSubgroupProperties registry at www.khronos.org>
+type VkPhysicalDeviceSubgroupProperties =
+     VkStruct VkPhysicalDeviceSubgroupProperties' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceSubgroupProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceSubgroupProperties where
+    type StructRep VkPhysicalDeviceSubgroupProperties =
+         'StructMeta "VkPhysicalDeviceSubgroupProperties" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceSubgroupProperties
+           #{size VkPhysicalDeviceSubgroupProperties}
+           #{alignment VkPhysicalDeviceSubgroupProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceSubgroupProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceSubgroupProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subgroupSize" Word32 'False 
+                                                      #{offset VkPhysicalDeviceSubgroupProperties, subgroupSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedStages" VkShaderStageFlags 'False 
+                                                                     #{offset VkPhysicalDeviceSubgroupProperties, supportedStages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedOperations" VkSubgroupFeatureFlags 'False
+                #{offset VkPhysicalDeviceSubgroupProperties, supportedOperations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "quadOperationsInAllStages" VkBool32 'False 
+                                                                     #{offset VkPhysicalDeviceSubgroupProperties, quadOperationsInAllStages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
+--   >     VkStructureType sType;
+--   >     const void* pNext;
+--   >     VkSurfaceKHR surface;
+--   > } VkPhysicalDeviceSurfaceInfo2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceSurfaceInfo2KHR VkPhysicalDeviceSurfaceInfo2KHR registry at www.khronos.org>
+type VkPhysicalDeviceSurfaceInfo2KHR =
+     VkStruct VkPhysicalDeviceSurfaceInfo2KHR' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceSurfaceInfo2KHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceSurfaceInfo2KHR where
+    type StructRep VkPhysicalDeviceSurfaceInfo2KHR =
+         'StructMeta "VkPhysicalDeviceSurfaceInfo2KHR" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceSurfaceInfo2KHR
+           #{size VkPhysicalDeviceSurfaceInfo2KHR}
+           #{alignment VkPhysicalDeviceSurfaceInfo2KHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceSurfaceInfo2KHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceSurfaceInfo2KHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "surface" VkSurfaceKHR 'False 
+                                                       #{offset VkPhysicalDeviceSurfaceInfo2KHR, surface}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPhysicalDeviceVariablePointerFeatures {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkBool32                         variablePointersStorageBuffer;
+--   >     VkBool32                         variablePointers;
+--   > } VkPhysicalDeviceVariablePointerFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointerFeatures registry at www.khronos.org>
+type VkPhysicalDeviceVariablePointerFeatures =
+     VkStruct VkPhysicalDeviceVariablePointerFeatures' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceVariablePointerFeatures' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceVariablePointerFeatures
+         where
+    type StructRep VkPhysicalDeviceVariablePointerFeatures =
+         'StructMeta "VkPhysicalDeviceVariablePointerFeatures" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceVariablePointerFeatures
+           #{size VkPhysicalDeviceVariablePointerFeatures}
+           #{alignment VkPhysicalDeviceVariablePointerFeatures}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceVariablePointerFeatures, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceVariablePointerFeatures, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "variablePointersStorageBuffer" VkBool32 'False
+                #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointersStorageBuffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "variablePointers" VkBool32 'False 
+                                                            #{offset VkPhysicalDeviceVariablePointerFeatures, variablePointers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceFeatures2, VkDeviceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPhysicalDeviceVariablePointerFeatures`
+type VkPhysicalDeviceVariablePointerFeaturesKHR =
+     VkPhysicalDeviceVariablePointerFeatures
+
+-- | > typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
+--   >     VkStructureType sType;
+--   >     void*                  pNext;
+--   >     uint32_t               maxVertexAttribDivisor;
+--   > } VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT registry at www.khronos.org>
+type VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT =
+     VkStruct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
+         where
+    type StructRep VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
+         =
+         'StructMeta "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" -- ' closing tick for hsc2hs
+           VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
+           #{size VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT}
+           #{alignment VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxVertexAttribDivisor" Word32 'False 
+                                                                #{offset VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, maxVertexAttribDivisor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPhysicalDeviceProperties2] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PhysicalDeviceFeatures.hsc
@@ -2,2786 +2,363 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
-       (VkPhysicalDeviceFeatures, VkPhysicalDeviceFeatures') where -- ' closing tick for hsc2hs
-import Foreign.Storable                 (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes  (VkBool32)
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
-
--- | > typedef struct VkPhysicalDeviceFeatures {
---   >     VkBool32               robustBufferAccess;
---   >     VkBool32               fullDrawIndexUint32;
---   >     VkBool32               imageCubeArray;
---   >     VkBool32               independentBlend;
---   >     VkBool32               geometryShader;
---   >     VkBool32               tessellationShader;
---   >     VkBool32               sampleRateShading;
---   >     VkBool32               dualSrcBlend;
---   >     VkBool32               logicOp;
---   >     VkBool32               multiDrawIndirect;
---   >     VkBool32               drawIndirectFirstInstance;
---   >     VkBool32               depthClamp;
---   >     VkBool32               depthBiasClamp;
---   >     VkBool32               fillModeNonSolid;
---   >     VkBool32               depthBounds;
---   >     VkBool32               wideLines;
---   >     VkBool32               largePoints;
---   >     VkBool32               alphaToOne;
---   >     VkBool32               multiViewport;
---   >     VkBool32               samplerAnisotropy;
---   >     VkBool32               textureCompressionETC2;
---   >     VkBool32               textureCompressionASTC_LDR;
---   >     VkBool32               textureCompressionBC;
---   >     VkBool32               occlusionQueryPrecise;
---   >     VkBool32               pipelineStatisticsQuery;
---   >     VkBool32               vertexPipelineStoresAndAtomics;
---   >     VkBool32               fragmentStoresAndAtomics;
---   >     VkBool32               shaderTessellationAndGeometryPointSize;
---   >     VkBool32               shaderImageGatherExtended;
---   >     VkBool32               shaderStorageImageExtendedFormats;
---   >     VkBool32               shaderStorageImageMultisample;
---   >     VkBool32               shaderStorageImageReadWithoutFormat;
---   >     VkBool32               shaderStorageImageWriteWithoutFormat;
---   >     VkBool32               shaderUniformBufferArrayDynamicIndexing;
---   >     VkBool32               shaderSampledImageArrayDynamicIndexing;
---   >     VkBool32               shaderStorageBufferArrayDynamicIndexing;
---   >     VkBool32               shaderStorageImageArrayDynamicIndexing;
---   >     VkBool32               shaderClipDistance;
---   >     VkBool32               shaderCullDistance;
---   >     VkBool32               shaderFloat64;
---   >     VkBool32               shaderInt64;
---   >     VkBool32               shaderInt16;
---   >     VkBool32               shaderResourceResidency;
---   >     VkBool32               shaderResourceMinLod;
---   >     VkBool32               sparseBinding;
---   >     VkBool32               sparseResidencyBuffer;
---   >     VkBool32               sparseResidencyImage2D;
---   >     VkBool32               sparseResidencyImage3D;
---   >     VkBool32               sparseResidency2Samples;
---   >     VkBool32               sparseResidency4Samples;
---   >     VkBool32               sparseResidency8Samples;
---   >     VkBool32               sparseResidency16Samples;
---   >     VkBool32               sparseResidencyAliased;
---   >     VkBool32               variableMultisampleRate;
---   >     VkBool32               inheritedQueries;
---   > } VkPhysicalDeviceFeatures;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceFeatures VkPhysicalDeviceFeatures registry at www.khronos.org>
-type VkPhysicalDeviceFeatures =
-     VulkanStruct VkPhysicalDeviceFeatures' -- ' closing tick for hsc2hs
-
-data VkPhysicalDeviceFeatures' -- ' closing tick for hsc2hs
-
-instance Eq VkPhysicalDeviceFeatures where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPhysicalDeviceFeatures where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPhysicalDeviceFeatures where
-        sizeOf ~_ = #{size VkPhysicalDeviceFeatures}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPhysicalDeviceFeatures}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPhysicalDeviceFeatures where
-        type StructFields VkPhysicalDeviceFeatures =
-             '["robustBufferAccess", "fullDrawIndexUint32", "imageCubeArray", -- ' closing tick for hsc2hs
-               "independentBlend", "geometryShader", "tessellationShader",
-               "sampleRateShading", "dualSrcBlend", "logicOp",
-               "multiDrawIndirect", "drawIndirectFirstInstance", "depthClamp",
-               "depthBiasClamp", "fillModeNonSolid", "depthBounds", "wideLines",
-               "largePoints", "alphaToOne", "multiViewport", "samplerAnisotropy",
-               "textureCompressionETC2", "textureCompressionASTC_LDR",
-               "textureCompressionBC", "occlusionQueryPrecise",
-               "pipelineStatisticsQuery", "vertexPipelineStoresAndAtomics",
-               "fragmentStoresAndAtomics",
-               "shaderTessellationAndGeometryPointSize",
-               "shaderImageGatherExtended", "shaderStorageImageExtendedFormats",
-               "shaderStorageImageMultisample",
-               "shaderStorageImageReadWithoutFormat",
-               "shaderStorageImageWriteWithoutFormat",
-               "shaderUniformBufferArrayDynamicIndexing",
-               "shaderSampledImageArrayDynamicIndexing",
-               "shaderStorageBufferArrayDynamicIndexing",
-               "shaderStorageImageArrayDynamicIndexing", "shaderClipDistance",
-               "shaderCullDistance", "shaderFloat64", "shaderInt64",
-               "shaderInt16", "shaderResourceResidency", "shaderResourceMinLod",
-               "sparseBinding", "sparseResidencyBuffer", "sparseResidencyImage2D",
-               "sparseResidencyImage3D", "sparseResidency2Samples",
-               "sparseResidency4Samples", "sparseResidency8Samples",
-               "sparseResidency16Samples", "sparseResidencyAliased",
-               "variableMultisampleRate", "inheritedQueries"]
-        type CUnionType VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPhysicalDeviceFeatures = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "robustBufferAccess" VkPhysicalDeviceFeatures where
-        type FieldType "robustBufferAccess" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "robustBufferAccess" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "robustBufferAccess" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, robustBufferAccess}
-        type FieldIsArray "robustBufferAccess" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, robustBufferAccess}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "robustBufferAccess" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, robustBufferAccess})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, robustBufferAccess}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "robustBufferAccess" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, robustBufferAccess}
-
-instance {-# OVERLAPPING #-}
-         HasField "fullDrawIndexUint32" VkPhysicalDeviceFeatures where
-        type FieldType "fullDrawIndexUint32" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "fullDrawIndexUint32" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "fullDrawIndexUint32" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32}
-        type FieldIsArray "fullDrawIndexUint32" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fullDrawIndexUint32" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fullDrawIndexUint32" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageCubeArray" VkPhysicalDeviceFeatures where
-        type FieldType "imageCubeArray" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "imageCubeArray" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageCubeArray" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, imageCubeArray}
-        type FieldIsArray "imageCubeArray" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, imageCubeArray}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageCubeArray" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, imageCubeArray})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, imageCubeArray}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageCubeArray" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, imageCubeArray}
-
-instance {-# OVERLAPPING #-}
-         HasField "independentBlend" VkPhysicalDeviceFeatures where
-        type FieldType "independentBlend" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "independentBlend" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "independentBlend" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, independentBlend}
-        type FieldIsArray "independentBlend" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, independentBlend}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "independentBlend" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, independentBlend})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, independentBlend}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "independentBlend" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, independentBlend}
-
-instance {-# OVERLAPPING #-}
-         HasField "geometryShader" VkPhysicalDeviceFeatures where
-        type FieldType "geometryShader" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "geometryShader" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "geometryShader" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, geometryShader}
-        type FieldIsArray "geometryShader" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, geometryShader}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "geometryShader" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, geometryShader})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, geometryShader}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "geometryShader" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, geometryShader}
-
-instance {-# OVERLAPPING #-}
-         HasField "tessellationShader" VkPhysicalDeviceFeatures where
-        type FieldType "tessellationShader" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "tessellationShader" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "tessellationShader" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, tessellationShader}
-        type FieldIsArray "tessellationShader" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, tessellationShader}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "tessellationShader" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, tessellationShader})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, tessellationShader}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "tessellationShader" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, tessellationShader}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleRateShading" VkPhysicalDeviceFeatures where
-        type FieldType "sampleRateShading" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "sampleRateShading" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleRateShading" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, sampleRateShading}
-        type FieldIsArray "sampleRateShading" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sampleRateShading}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleRateShading" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sampleRateShading})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sampleRateShading}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleRateShading" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sampleRateShading}
-
-instance {-# OVERLAPPING #-}
-         HasField "dualSrcBlend" VkPhysicalDeviceFeatures where
-        type FieldType "dualSrcBlend" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "dualSrcBlend" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dualSrcBlend" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, dualSrcBlend}
-        type FieldIsArray "dualSrcBlend" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, dualSrcBlend}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dualSrcBlend" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, dualSrcBlend})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, dualSrcBlend}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dualSrcBlend" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, dualSrcBlend}
-
-instance {-# OVERLAPPING #-}
-         HasField "logicOp" VkPhysicalDeviceFeatures where
-        type FieldType "logicOp" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "logicOp" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "logicOp" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, logicOp}
-        type FieldIsArray "logicOp" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, logicOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "logicOp" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, logicOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, logicOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "logicOp" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, logicOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "multiDrawIndirect" VkPhysicalDeviceFeatures where
-        type FieldType "multiDrawIndirect" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "multiDrawIndirect" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "multiDrawIndirect" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, multiDrawIndirect}
-        type FieldIsArray "multiDrawIndirect" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, multiDrawIndirect}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "multiDrawIndirect" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, multiDrawIndirect})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, multiDrawIndirect}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "multiDrawIndirect" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, multiDrawIndirect}
-
-instance {-# OVERLAPPING #-}
-         HasField "drawIndirectFirstInstance" VkPhysicalDeviceFeatures where
-        type FieldType "drawIndirectFirstInstance" VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "drawIndirectFirstInstance"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "drawIndirectFirstInstance"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance}
-        type FieldIsArray "drawIndirectFirstInstance"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "drawIndirectFirstInstance" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "drawIndirectFirstInstance" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthClamp" VkPhysicalDeviceFeatures where
-        type FieldType "depthClamp" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "depthClamp" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthClamp" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, depthClamp}
-        type FieldIsArray "depthClamp" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, depthClamp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthClamp" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, depthClamp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, depthClamp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthClamp" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, depthClamp}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthBiasClamp" VkPhysicalDeviceFeatures where
-        type FieldType "depthBiasClamp" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "depthBiasClamp" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthBiasClamp" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, depthBiasClamp}
-        type FieldIsArray "depthBiasClamp" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, depthBiasClamp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthBiasClamp" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, depthBiasClamp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, depthBiasClamp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthBiasClamp" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, depthBiasClamp}
-
-instance {-# OVERLAPPING #-}
-         HasField "fillModeNonSolid" VkPhysicalDeviceFeatures where
-        type FieldType "fillModeNonSolid" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "fillModeNonSolid" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "fillModeNonSolid" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, fillModeNonSolid}
-        type FieldIsArray "fillModeNonSolid" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, fillModeNonSolid}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fillModeNonSolid" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, fillModeNonSolid})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, fillModeNonSolid}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fillModeNonSolid" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, fillModeNonSolid}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthBounds" VkPhysicalDeviceFeatures where
-        type FieldType "depthBounds" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "depthBounds" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthBounds" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, depthBounds}
-        type FieldIsArray "depthBounds" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, depthBounds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthBounds" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, depthBounds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, depthBounds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthBounds" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, depthBounds}
-
-instance {-# OVERLAPPING #-}
-         HasField "wideLines" VkPhysicalDeviceFeatures where
-        type FieldType "wideLines" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "wideLines" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "wideLines" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, wideLines}
-        type FieldIsArray "wideLines" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, wideLines}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "wideLines" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, wideLines})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, wideLines}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "wideLines" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, wideLines}
-
-instance {-# OVERLAPPING #-}
-         HasField "largePoints" VkPhysicalDeviceFeatures where
-        type FieldType "largePoints" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "largePoints" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "largePoints" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, largePoints}
-        type FieldIsArray "largePoints" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, largePoints}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "largePoints" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, largePoints})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, largePoints}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "largePoints" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, largePoints}
-
-instance {-# OVERLAPPING #-}
-         HasField "alphaToOne" VkPhysicalDeviceFeatures where
-        type FieldType "alphaToOne" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "alphaToOne" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "alphaToOne" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, alphaToOne}
-        type FieldIsArray "alphaToOne" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, alphaToOne}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "alphaToOne" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, alphaToOne})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, alphaToOne}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "alphaToOne" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, alphaToOne}
-
-instance {-# OVERLAPPING #-}
-         HasField "multiViewport" VkPhysicalDeviceFeatures where
-        type FieldType "multiViewport" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "multiViewport" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "multiViewport" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, multiViewport}
-        type FieldIsArray "multiViewport" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, multiViewport}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "multiViewport" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, multiViewport})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, multiViewport}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "multiViewport" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, multiViewport}
-
-instance {-# OVERLAPPING #-}
-         HasField "samplerAnisotropy" VkPhysicalDeviceFeatures where
-        type FieldType "samplerAnisotropy" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "samplerAnisotropy" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "samplerAnisotropy" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, samplerAnisotropy}
-        type FieldIsArray "samplerAnisotropy" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, samplerAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "samplerAnisotropy" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, samplerAnisotropy})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, samplerAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "samplerAnisotropy" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, samplerAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         HasField "textureCompressionETC2" VkPhysicalDeviceFeatures where
-        type FieldType "textureCompressionETC2" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "textureCompressionETC2"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "textureCompressionETC2" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, textureCompressionETC2}
-        type FieldIsArray "textureCompressionETC2" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, textureCompressionETC2}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "textureCompressionETC2" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, textureCompressionETC2})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionETC2}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "textureCompressionETC2" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionETC2}
-
-instance {-# OVERLAPPING #-}
-         HasField "textureCompressionASTC_LDR" VkPhysicalDeviceFeatures
-         where
-        type FieldType "textureCompressionASTC_LDR"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "textureCompressionASTC_LDR"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "textureCompressionASTC_LDR"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR}
-        type FieldIsArray "textureCompressionASTC_LDR"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "textureCompressionASTC_LDR" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "textureCompressionASTC_LDR" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR}
-
-instance {-# OVERLAPPING #-}
-         HasField "textureCompressionBC" VkPhysicalDeviceFeatures where
-        type FieldType "textureCompressionBC" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "textureCompressionBC" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "textureCompressionBC" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, textureCompressionBC}
-        type FieldIsArray "textureCompressionBC" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, textureCompressionBC}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "textureCompressionBC" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, textureCompressionBC})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionBC}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "textureCompressionBC" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, textureCompressionBC}
-
-instance {-# OVERLAPPING #-}
-         HasField "occlusionQueryPrecise" VkPhysicalDeviceFeatures where
-        type FieldType "occlusionQueryPrecise" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "occlusionQueryPrecise" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "occlusionQueryPrecise" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise}
-        type FieldIsArray "occlusionQueryPrecise" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "occlusionQueryPrecise" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "occlusionQueryPrecise" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineStatisticsQuery" VkPhysicalDeviceFeatures where
-        type FieldType "pipelineStatisticsQuery" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "pipelineStatisticsQuery"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineStatisticsQuery" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery}
-        type FieldIsArray "pipelineStatisticsQuery"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineStatisticsQuery" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineStatisticsQuery" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery}
-
-instance {-# OVERLAPPING #-}
-         HasField "vertexPipelineStoresAndAtomics" VkPhysicalDeviceFeatures
-         where
-        type FieldType "vertexPipelineStoresAndAtomics"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "vertexPipelineStoresAndAtomics"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "vertexPipelineStoresAndAtomics"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics}
-        type FieldIsArray "vertexPipelineStoresAndAtomics"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vertexPipelineStoresAndAtomics"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vertexPipelineStoresAndAtomics"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics}
-
-instance {-# OVERLAPPING #-}
-         HasField "fragmentStoresAndAtomics" VkPhysicalDeviceFeatures where
-        type FieldType "fragmentStoresAndAtomics" VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "fragmentStoresAndAtomics"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fragmentStoresAndAtomics"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics}
-        type FieldIsArray "fragmentStoresAndAtomics"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fragmentStoresAndAtomics" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fragmentStoresAndAtomics" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderTessellationAndGeometryPointSize"
-           VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderTessellationAndGeometryPointSize"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderTessellationAndGeometryPointSize"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderTessellationAndGeometryPointSize"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize}
-        type FieldIsArray "shaderTessellationAndGeometryPointSize"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderTessellationAndGeometryPointSize"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderTessellationAndGeometryPointSize"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderImageGatherExtended" VkPhysicalDeviceFeatures where
-        type FieldType "shaderImageGatherExtended" VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderImageGatherExtended"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderImageGatherExtended"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended}
-        type FieldIsArray "shaderImageGatherExtended"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderImageGatherExtended" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderImageGatherExtended" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageImageExtendedFormats"
-           VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderStorageImageExtendedFormats"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderStorageImageExtendedFormats"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageImageExtendedFormats"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats}
-        type FieldIsArray "shaderStorageImageExtendedFormats"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageImageExtendedFormats"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageImageExtendedFormats"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageImageMultisample" VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderStorageImageMultisample"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderStorageImageMultisample"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageImageMultisample"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample}
-        type FieldIsArray "shaderStorageImageMultisample"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageImageMultisample"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageImageMultisample"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageImageReadWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderStorageImageReadWithoutFormat"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderStorageImageReadWithoutFormat"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageImageReadWithoutFormat"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat}
-        type FieldIsArray "shaderStorageImageReadWithoutFormat"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageImageReadWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageImageReadWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageImageWriteWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderStorageImageWriteWithoutFormat"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderStorageImageWriteWithoutFormat"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageImageWriteWithoutFormat"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat}
-        type FieldIsArray "shaderStorageImageWriteWithoutFormat"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageImageWriteWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageImageWriteWithoutFormat"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderUniformBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderUniformBufferArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderUniformBufferArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderUniformBufferArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing}
-        type FieldIsArray "shaderUniformBufferArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderUniformBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderUniformBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderSampledImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderSampledImageArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderSampledImageArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderSampledImageArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing}
-        type FieldIsArray "shaderSampledImageArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderSampledImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderSampledImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderStorageBufferArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderStorageBufferArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageBufferArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing}
-        type FieldIsArray "shaderStorageBufferArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageBufferArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStorageImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        type FieldType "shaderStorageImageArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "shaderStorageImageArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStorageImageArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing}
-        type FieldIsArray "shaderStorageImageArrayDynamicIndexing"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStorageImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStorageImageArrayDynamicIndexing"
-           VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderClipDistance" VkPhysicalDeviceFeatures where
-        type FieldType "shaderClipDistance" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "shaderClipDistance" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderClipDistance" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, shaderClipDistance}
-        type FieldIsArray "shaderClipDistance" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderClipDistance}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderClipDistance" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderClipDistance})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderClipDistance}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderClipDistance" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderClipDistance}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderCullDistance" VkPhysicalDeviceFeatures where
-        type FieldType "shaderCullDistance" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "shaderCullDistance" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderCullDistance" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, shaderCullDistance}
-        type FieldIsArray "shaderCullDistance" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderCullDistance}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderCullDistance" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderCullDistance})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderCullDistance}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderCullDistance" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderCullDistance}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderFloat64" VkPhysicalDeviceFeatures where
-        type FieldType "shaderFloat64" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "shaderFloat64" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderFloat64" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, shaderFloat64}
-        type FieldIsArray "shaderFloat64" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderFloat64}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderFloat64" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderFloat64})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderFloat64}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderFloat64" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderFloat64}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderInt64" VkPhysicalDeviceFeatures where
-        type FieldType "shaderInt64" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "shaderInt64" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderInt64" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, shaderInt64}
-        type FieldIsArray "shaderInt64" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderInt64}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderInt64" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderInt64})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderInt64}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderInt64" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderInt64}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderInt16" VkPhysicalDeviceFeatures where
-        type FieldType "shaderInt16" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "shaderInt16" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderInt16" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, shaderInt16}
-        type FieldIsArray "shaderInt16" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderInt16}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderInt16" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderInt16})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderInt16}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderInt16" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderInt16}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderResourceResidency" VkPhysicalDeviceFeatures where
-        type FieldType "shaderResourceResidency" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "shaderResourceResidency"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderResourceResidency" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, shaderResourceResidency}
-        type FieldIsArray "shaderResourceResidency"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderResourceResidency}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderResourceResidency" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderResourceResidency})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderResourceResidency}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderResourceResidency" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderResourceResidency}
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderResourceMinLod" VkPhysicalDeviceFeatures where
-        type FieldType "shaderResourceMinLod" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "shaderResourceMinLod" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderResourceMinLod" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod}
-        type FieldIsArray "shaderResourceMinLod" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderResourceMinLod" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderResourceMinLod" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseBinding" VkPhysicalDeviceFeatures where
-        type FieldType "sparseBinding" VkPhysicalDeviceFeatures = VkBool32
-        type FieldOptional "sparseBinding" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseBinding" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, sparseBinding}
-        type FieldIsArray "sparseBinding" VkPhysicalDeviceFeatures = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseBinding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseBinding" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseBinding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseBinding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseBinding" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseBinding}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseResidencyBuffer" VkPhysicalDeviceFeatures where
-        type FieldType "sparseResidencyBuffer" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "sparseResidencyBuffer" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseResidencyBuffer" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer}
-        type FieldIsArray "sparseResidencyBuffer" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseResidencyBuffer" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseResidencyBuffer" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseResidencyImage2D" VkPhysicalDeviceFeatures where
-        type FieldType "sparseResidencyImage2D" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "sparseResidencyImage2D"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseResidencyImage2D" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D}
-        type FieldIsArray "sparseResidencyImage2D" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseResidencyImage2D" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseResidencyImage2D" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseResidencyImage3D" VkPhysicalDeviceFeatures where
-        type FieldType "sparseResidencyImage3D" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "sparseResidencyImage3D"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseResidencyImage3D" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D}
-        type FieldIsArray "sparseResidencyImage3D" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseResidencyImage3D" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseResidencyImage3D" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseResidency2Samples" VkPhysicalDeviceFeatures where
-        type FieldType "sparseResidency2Samples" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "sparseResidency2Samples"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseResidency2Samples" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples}
-        type FieldIsArray "sparseResidency2Samples"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseResidency2Samples" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseResidency2Samples" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseResidency4Samples" VkPhysicalDeviceFeatures where
-        type FieldType "sparseResidency4Samples" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "sparseResidency4Samples"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseResidency4Samples" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples}
-        type FieldIsArray "sparseResidency4Samples"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseResidency4Samples" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseResidency4Samples" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseResidency8Samples" VkPhysicalDeviceFeatures where
-        type FieldType "sparseResidency8Samples" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "sparseResidency8Samples"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseResidency8Samples" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples}
-        type FieldIsArray "sparseResidency8Samples"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseResidency8Samples" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseResidency8Samples" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseResidency16Samples" VkPhysicalDeviceFeatures where
-        type FieldType "sparseResidency16Samples" VkPhysicalDeviceFeatures
-             = VkBool32
-        type FieldOptional "sparseResidency16Samples"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseResidency16Samples"
-               VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples}
-        type FieldIsArray "sparseResidency16Samples"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseResidency16Samples" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseResidency16Samples" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples}
-
-instance {-# OVERLAPPING #-}
-         HasField "sparseResidencyAliased" VkPhysicalDeviceFeatures where
-        type FieldType "sparseResidencyAliased" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "sparseResidencyAliased"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sparseResidencyAliased" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased}
-        type FieldIsArray "sparseResidencyAliased" VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sparseResidencyAliased" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sparseResidencyAliased" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased}
-
-instance {-# OVERLAPPING #-}
-         HasField "variableMultisampleRate" VkPhysicalDeviceFeatures where
-        type FieldType "variableMultisampleRate" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "variableMultisampleRate"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "variableMultisampleRate" VkPhysicalDeviceFeatures
-             =
-             #{offset VkPhysicalDeviceFeatures, variableMultisampleRate}
-        type FieldIsArray "variableMultisampleRate"
-               VkPhysicalDeviceFeatures
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, variableMultisampleRate}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "variableMultisampleRate" VkPhysicalDeviceFeatures
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, variableMultisampleRate})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, variableMultisampleRate}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "variableMultisampleRate" VkPhysicalDeviceFeatures
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, variableMultisampleRate}
-
-instance {-# OVERLAPPING #-}
-         HasField "inheritedQueries" VkPhysicalDeviceFeatures where
-        type FieldType "inheritedQueries" VkPhysicalDeviceFeatures =
-             VkBool32
-        type FieldOptional "inheritedQueries" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "inheritedQueries" VkPhysicalDeviceFeatures =
-             #{offset VkPhysicalDeviceFeatures, inheritedQueries}
-        type FieldIsArray "inheritedQueries" VkPhysicalDeviceFeatures =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPhysicalDeviceFeatures, inheritedQueries}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "inheritedQueries" VkPhysicalDeviceFeatures where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPhysicalDeviceFeatures, inheritedQueries})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPhysicalDeviceFeatures, inheritedQueries}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "inheritedQueries" VkPhysicalDeviceFeatures where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPhysicalDeviceFeatures, inheritedQueries}
-
-instance Show VkPhysicalDeviceFeatures where
-        showsPrec d x
-          = showString "VkPhysicalDeviceFeatures {" .
-              showString "robustBufferAccess = " .
-                showsPrec d (getField @"robustBufferAccess" x) .
-                  showString ", " .
-                    showString "fullDrawIndexUint32 = " .
-                      showsPrec d (getField @"fullDrawIndexUint32" x) .
-                        showString ", " .
-                          showString "imageCubeArray = " .
-                            showsPrec d (getField @"imageCubeArray" x) .
-                              showString ", " .
-                                showString "independentBlend = " .
-                                  showsPrec d (getField @"independentBlend" x) .
-                                    showString ", " .
-                                      showString "geometryShader = " .
-                                        showsPrec d (getField @"geometryShader" x) .
-                                          showString ", " .
-                                            showString "tessellationShader = " .
-                                              showsPrec d (getField @"tessellationShader" x) .
-                                                showString ", " .
-                                                  showString "sampleRateShading = " .
-                                                    showsPrec d (getField @"sampleRateShading" x) .
-                                                      showString ", " .
-                                                        showString "dualSrcBlend = " .
-                                                          showsPrec d (getField @"dualSrcBlend" x) .
-                                                            showString ", " .
-                                                              showString "logicOp = " .
-                                                                showsPrec d (getField @"logicOp" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "multiDrawIndirect = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"multiDrawIndirect"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "drawIndirectFirstInstance = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"drawIndirectFirstInstance"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "depthClamp = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"depthClamp"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "depthBiasClamp = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"depthBiasClamp"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "fillModeNonSolid = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"fillModeNonSolid"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "depthBounds = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"depthBounds"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "wideLines = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (getField
-                                                                                                               @"wideLines"
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "largePoints = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (getField
-                                                                                                                     @"largePoints"
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "alphaToOne = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (getField
-                                                                                                                           @"alphaToOne"
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showString
-                                                                                                                          ", "
-                                                                                                                          .
-                                                                                                                          showString
-                                                                                                                            "multiViewport = "
-                                                                                                                            .
-                                                                                                                            showsPrec
-                                                                                                                              d
-                                                                                                                              (getField
-                                                                                                                                 @"multiViewport"
-                                                                                                                                 x)
-                                                                                                                              .
-                                                                                                                              showString
-                                                                                                                                ", "
-                                                                                                                                .
-                                                                                                                                showString
-                                                                                                                                  "samplerAnisotropy = "
-                                                                                                                                  .
-                                                                                                                                  showsPrec
-                                                                                                                                    d
-                                                                                                                                    (getField
-                                                                                                                                       @"samplerAnisotropy"
-                                                                                                                                       x)
-                                                                                                                                    .
-                                                                                                                                    showString
-                                                                                                                                      ", "
-                                                                                                                                      .
-                                                                                                                                      showString
-                                                                                                                                        "textureCompressionETC2 = "
-                                                                                                                                        .
-                                                                                                                                        showsPrec
-                                                                                                                                          d
-                                                                                                                                          (getField
-                                                                                                                                             @"textureCompressionETC2"
-                                                                                                                                             x)
-                                                                                                                                          .
-                                                                                                                                          showString
-                                                                                                                                            ", "
-                                                                                                                                            .
-                                                                                                                                            showString
-                                                                                                                                              "textureCompressionASTC_LDR = "
-                                                                                                                                              .
-                                                                                                                                              showsPrec
-                                                                                                                                                d
-                                                                                                                                                (getField
-                                                                                                                                                   @"textureCompressionASTC_LDR"
-                                                                                                                                                   x)
-                                                                                                                                                .
-                                                                                                                                                showString
-                                                                                                                                                  ", "
-                                                                                                                                                  .
-                                                                                                                                                  showString
-                                                                                                                                                    "textureCompressionBC = "
-                                                                                                                                                    .
-                                                                                                                                                    showsPrec
-                                                                                                                                                      d
-                                                                                                                                                      (getField
-                                                                                                                                                         @"textureCompressionBC"
-                                                                                                                                                         x)
-                                                                                                                                                      .
-                                                                                                                                                      showString
-                                                                                                                                                        ", "
-                                                                                                                                                        .
-                                                                                                                                                        showString
-                                                                                                                                                          "occlusionQueryPrecise = "
-                                                                                                                                                          .
-                                                                                                                                                          showsPrec
-                                                                                                                                                            d
-                                                                                                                                                            (getField
-                                                                                                                                                               @"occlusionQueryPrecise"
-                                                                                                                                                               x)
-                                                                                                                                                            .
-                                                                                                                                                            showString
-                                                                                                                                                              ", "
-                                                                                                                                                              .
-                                                                                                                                                              showString
-                                                                                                                                                                "pipelineStatisticsQuery = "
-                                                                                                                                                                .
-                                                                                                                                                                showsPrec
-                                                                                                                                                                  d
-                                                                                                                                                                  (getField
-                                                                                                                                                                     @"pipelineStatisticsQuery"
-                                                                                                                                                                     x)
-                                                                                                                                                                  .
-                                                                                                                                                                  showString
-                                                                                                                                                                    ", "
-                                                                                                                                                                    .
-                                                                                                                                                                    showString
-                                                                                                                                                                      "vertexPipelineStoresAndAtomics = "
-                                                                                                                                                                      .
-                                                                                                                                                                      showsPrec
-                                                                                                                                                                        d
-                                                                                                                                                                        (getField
-                                                                                                                                                                           @"vertexPipelineStoresAndAtomics"
-                                                                                                                                                                           x)
-                                                                                                                                                                        .
-                                                                                                                                                                        showString
-                                                                                                                                                                          ", "
-                                                                                                                                                                          .
-                                                                                                                                                                          showString
-                                                                                                                                                                            "fragmentStoresAndAtomics = "
-                                                                                                                                                                            .
-                                                                                                                                                                            showsPrec
-                                                                                                                                                                              d
-                                                                                                                                                                              (getField
-                                                                                                                                                                                 @"fragmentStoresAndAtomics"
-                                                                                                                                                                                 x)
-                                                                                                                                                                              .
-                                                                                                                                                                              showString
-                                                                                                                                                                                ", "
-                                                                                                                                                                                .
-                                                                                                                                                                                showString
-                                                                                                                                                                                  "shaderTessellationAndGeometryPointSize = "
-                                                                                                                                                                                  .
-                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                    d
-                                                                                                                                                                                    (getField
-                                                                                                                                                                                       @"shaderTessellationAndGeometryPointSize"
-                                                                                                                                                                                       x)
-                                                                                                                                                                                    .
-                                                                                                                                                                                    showString
-                                                                                                                                                                                      ", "
-                                                                                                                                                                                      .
-                                                                                                                                                                                      showString
-                                                                                                                                                                                        "shaderImageGatherExtended = "
-                                                                                                                                                                                        .
-                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                          d
-                                                                                                                                                                                          (getField
-                                                                                                                                                                                             @"shaderImageGatherExtended"
-                                                                                                                                                                                             x)
-                                                                                                                                                                                          .
-                                                                                                                                                                                          showString
-                                                                                                                                                                                            ", "
-                                                                                                                                                                                            .
-                                                                                                                                                                                            showString
-                                                                                                                                                                                              "shaderStorageImageExtendedFormats = "
-                                                                                                                                                                                              .
-                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                d
-                                                                                                                                                                                                (getField
-                                                                                                                                                                                                   @"shaderStorageImageExtendedFormats"
-                                                                                                                                                                                                   x)
-                                                                                                                                                                                                .
-                                                                                                                                                                                                showString
-                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                  .
-                                                                                                                                                                                                  showString
-                                                                                                                                                                                                    "shaderStorageImageMultisample = "
-                                                                                                                                                                                                    .
-                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                      d
-                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                         @"shaderStorageImageMultisample"
-                                                                                                                                                                                                         x)
-                                                                                                                                                                                                      .
-                                                                                                                                                                                                      showString
-                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                        .
-                                                                                                                                                                                                        showString
-                                                                                                                                                                                                          "shaderStorageImageReadWithoutFormat = "
-                                                                                                                                                                                                          .
-                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                            d
-                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                               @"shaderStorageImageReadWithoutFormat"
-                                                                                                                                                                                                               x)
-                                                                                                                                                                                                            .
-                                                                                                                                                                                                            showString
-                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                              .
-                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                "shaderStorageImageWriteWithoutFormat = "
-                                                                                                                                                                                                                .
-                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                     @"shaderStorageImageWriteWithoutFormat"
-                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                      "shaderUniformBufferArrayDynamicIndexing = "
-                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                           @"shaderUniformBufferArrayDynamicIndexing"
-                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                            "shaderSampledImageArrayDynamicIndexing = "
-                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                 @"shaderSampledImageArrayDynamicIndexing"
-                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                  "shaderStorageBufferArrayDynamicIndexing = "
-                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                       @"shaderStorageBufferArrayDynamicIndexing"
-                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                        "shaderStorageImageArrayDynamicIndexing = "
-                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                             @"shaderStorageImageArrayDynamicIndexing"
-                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                              "shaderClipDistance = "
-                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                   @"shaderClipDistance"
-                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                    "shaderCullDistance = "
-                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                         @"shaderCullDistance"
-                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                          "shaderFloat64 = "
-                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                               @"shaderFloat64"
-                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                "shaderInt64 = "
-                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                     @"shaderInt64"
-                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                      "shaderInt16 = "
-                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                           @"shaderInt16"
-                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                            "shaderResourceResidency = "
-                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                 @"shaderResourceResidency"
-                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                  "shaderResourceMinLod = "
-                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                       @"shaderResourceMinLod"
-                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                        "sparseBinding = "
-                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                             @"sparseBinding"
-                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                              "sparseResidencyBuffer = "
-                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                   @"sparseResidencyBuffer"
-                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                    "sparseResidencyImage2D = "
-                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                         @"sparseResidencyImage2D"
-                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                        ", "
-                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                          "sparseResidencyImage3D = "
-                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                          showsPrec
-                                                                                                                                                                                                                                                                                                            d
-                                                                                                                                                                                                                                                                                                            (getField
-                                                                                                                                                                                                                                                                                                               @"sparseResidencyImage3D"
-                                                                                                                                                                                                                                                                                                               x)
-                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                              ", "
-                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                "sparseResidency2Samples = "
-                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                showsPrec
-                                                                                                                                                                                                                                                                                                                  d
-                                                                                                                                                                                                                                                                                                                  (getField
-                                                                                                                                                                                                                                                                                                                     @"sparseResidency2Samples"
-                                                                                                                                                                                                                                                                                                                     x)
-                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                    ", "
-                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                      "sparseResidency4Samples = "
-                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                      showsPrec
-                                                                                                                                                                                                                                                                                                                        d
-                                                                                                                                                                                                                                                                                                                        (getField
-                                                                                                                                                                                                                                                                                                                           @"sparseResidency4Samples"
-                                                                                                                                                                                                                                                                                                                           x)
-                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                        showString
-                                                                                                                                                                                                                                                                                                                          ", "
-                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                            "sparseResidency8Samples = "
-                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                            showsPrec
-                                                                                                                                                                                                                                                                                                                              d
-                                                                                                                                                                                                                                                                                                                              (getField
-                                                                                                                                                                                                                                                                                                                                 @"sparseResidency8Samples"
-                                                                                                                                                                                                                                                                                                                                 x)
-                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                              showString
-                                                                                                                                                                                                                                                                                                                                ", "
-                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                  "sparseResidency16Samples = "
-                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                  showsPrec
-                                                                                                                                                                                                                                                                                                                                    d
-                                                                                                                                                                                                                                                                                                                                    (getField
-                                                                                                                                                                                                                                                                                                                                       @"sparseResidency16Samples"
-                                                                                                                                                                                                                                                                                                                                       x)
-                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                    showString
-                                                                                                                                                                                                                                                                                                                                      ", "
-                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                      showString
-                                                                                                                                                                                                                                                                                                                                        "sparseResidencyAliased = "
-                                                                                                                                                                                                                                                                                                                                        .
-                                                                                                                                                                                                                                                                                                                                        showsPrec
-                                                                                                                                                                                                                                                                                                                                          d
-                                                                                                                                                                                                                                                                                                                                          (getField
-                                                                                                                                                                                                                                                                                                                                             @"sparseResidencyAliased"
-                                                                                                                                                                                                                                                                                                                                             x)
-                                                                                                                                                                                                                                                                                                                                          .
-                                                                                                                                                                                                                                                                                                                                          showString
-                                                                                                                                                                                                                                                                                                                                            ", "
-                                                                                                                                                                                                                                                                                                                                            .
-                                                                                                                                                                                                                                                                                                                                            showString
-                                                                                                                                                                                                                                                                                                                                              "variableMultisampleRate = "
-                                                                                                                                                                                                                                                                                                                                              .
-                                                                                                                                                                                                                                                                                                                                              showsPrec
-                                                                                                                                                                                                                                                                                                                                                d
-                                                                                                                                                                                                                                                                                                                                                (getField
-                                                                                                                                                                                                                                                                                                                                                   @"variableMultisampleRate"
-                                                                                                                                                                                                                                                                                                                                                   x)
-                                                                                                                                                                                                                                                                                                                                                .
-                                                                                                                                                                                                                                                                                                                                                showString
-                                                                                                                                                                                                                                                                                                                                                  ", "
-                                                                                                                                                                                                                                                                                                                                                  .
-                                                                                                                                                                                                                                                                                                                                                  showString
-                                                                                                                                                                                                                                                                                                                                                    "inheritedQueries = "
-                                                                                                                                                                                                                                                                                                                                                    .
-                                                                                                                                                                                                                                                                                                                                                    showsPrec
-                                                                                                                                                                                                                                                                                                                                                      d
-                                                                                                                                                                                                                                                                                                                                                      (getField
-                                                                                                                                                                                                                                                                                                                                                         @"inheritedQueries"
-                                                                                                                                                                                                                                                                                                                                                         x)
-                                                                                                                                                                                                                                                                                                                                                      .
-                                                                                                                                                                                                                                                                                                                                                      showChar
-                                                                                                                                                                                                                                                                                                                                                        '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.PhysicalDeviceFeatures
+       (VkPhysicalDeviceFeatures) where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes  (VkBool32)
+
+-- | > typedef struct VkPhysicalDeviceFeatures {
+--   >     VkBool32               robustBufferAccess;
+--   >     VkBool32               fullDrawIndexUint32;
+--   >     VkBool32               imageCubeArray;
+--   >     VkBool32               independentBlend;
+--   >     VkBool32               geometryShader;
+--   >     VkBool32               tessellationShader;
+--   >     VkBool32               sampleRateShading;
+--   >     VkBool32               dualSrcBlend;
+--   >     VkBool32               logicOp;
+--   >     VkBool32               multiDrawIndirect;
+--   >     VkBool32               drawIndirectFirstInstance;
+--   >     VkBool32               depthClamp;
+--   >     VkBool32               depthBiasClamp;
+--   >     VkBool32               fillModeNonSolid;
+--   >     VkBool32               depthBounds;
+--   >     VkBool32               wideLines;
+--   >     VkBool32               largePoints;
+--   >     VkBool32               alphaToOne;
+--   >     VkBool32               multiViewport;
+--   >     VkBool32               samplerAnisotropy;
+--   >     VkBool32               textureCompressionETC2;
+--   >     VkBool32               textureCompressionASTC_LDR;
+--   >     VkBool32               textureCompressionBC;
+--   >     VkBool32               occlusionQueryPrecise;
+--   >     VkBool32               pipelineStatisticsQuery;
+--   >     VkBool32               vertexPipelineStoresAndAtomics;
+--   >     VkBool32               fragmentStoresAndAtomics;
+--   >     VkBool32               shaderTessellationAndGeometryPointSize;
+--   >     VkBool32               shaderImageGatherExtended;
+--   >     VkBool32               shaderStorageImageExtendedFormats;
+--   >     VkBool32               shaderStorageImageMultisample;
+--   >     VkBool32               shaderStorageImageReadWithoutFormat;
+--   >     VkBool32               shaderStorageImageWriteWithoutFormat;
+--   >     VkBool32               shaderUniformBufferArrayDynamicIndexing;
+--   >     VkBool32               shaderSampledImageArrayDynamicIndexing;
+--   >     VkBool32               shaderStorageBufferArrayDynamicIndexing;
+--   >     VkBool32               shaderStorageImageArrayDynamicIndexing;
+--   >     VkBool32               shaderClipDistance;
+--   >     VkBool32               shaderCullDistance;
+--   >     VkBool32               shaderFloat64;
+--   >     VkBool32               shaderInt64;
+--   >     VkBool32               shaderInt16;
+--   >     VkBool32               shaderResourceResidency;
+--   >     VkBool32               shaderResourceMinLod;
+--   >     VkBool32               sparseBinding;
+--   >     VkBool32               sparseResidencyBuffer;
+--   >     VkBool32               sparseResidencyImage2D;
+--   >     VkBool32               sparseResidencyImage3D;
+--   >     VkBool32               sparseResidency2Samples;
+--   >     VkBool32               sparseResidency4Samples;
+--   >     VkBool32               sparseResidency8Samples;
+--   >     VkBool32               sparseResidency16Samples;
+--   >     VkBool32               sparseResidencyAliased;
+--   >     VkBool32               variableMultisampleRate;
+--   >     VkBool32               inheritedQueries;
+--   > } VkPhysicalDeviceFeatures;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPhysicalDeviceFeatures VkPhysicalDeviceFeatures registry at www.khronos.org>
+type VkPhysicalDeviceFeatures = VkStruct VkPhysicalDeviceFeatures' -- ' closing tick for hsc2hs
+
+data VkPhysicalDeviceFeatures' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPhysicalDeviceFeatures where
+    type StructRep VkPhysicalDeviceFeatures =
+         'StructMeta "VkPhysicalDeviceFeatures" VkPhysicalDeviceFeatures -- ' closing tick for hsc2hs
+           #{size VkPhysicalDeviceFeatures}
+           #{alignment VkPhysicalDeviceFeatures}
+           '[('FieldMeta "robustBufferAccess" VkBool32 'False  -- ' closing tick for hsc2hs
+                                                              #{offset VkPhysicalDeviceFeatures, robustBufferAccess}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fullDrawIndexUint32" VkBool32 'False 
+                                                               #{offset VkPhysicalDeviceFeatures, fullDrawIndexUint32}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageCubeArray" VkBool32 'False 
+                                                          #{offset VkPhysicalDeviceFeatures, imageCubeArray}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "independentBlend" VkBool32 'False 
+                                                            #{offset VkPhysicalDeviceFeatures, independentBlend}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "geometryShader" VkBool32 'False 
+                                                          #{offset VkPhysicalDeviceFeatures, geometryShader}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "tessellationShader" VkBool32 'False 
+                                                              #{offset VkPhysicalDeviceFeatures, tessellationShader}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleRateShading" VkBool32 'False 
+                                                             #{offset VkPhysicalDeviceFeatures, sampleRateShading}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dualSrcBlend" VkBool32 'False 
+                                                        #{offset VkPhysicalDeviceFeatures, dualSrcBlend}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "logicOp" VkBool32 'False 
+                                                   #{offset VkPhysicalDeviceFeatures, logicOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "multiDrawIndirect" VkBool32 'False 
+                                                             #{offset VkPhysicalDeviceFeatures, multiDrawIndirect}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "drawIndirectFirstInstance" VkBool32 'False 
+                                                                     #{offset VkPhysicalDeviceFeatures, drawIndirectFirstInstance}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthClamp" VkBool32 'False 
+                                                      #{offset VkPhysicalDeviceFeatures, depthClamp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthBiasClamp" VkBool32 'False 
+                                                          #{offset VkPhysicalDeviceFeatures, depthBiasClamp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fillModeNonSolid" VkBool32 'False 
+                                                            #{offset VkPhysicalDeviceFeatures, fillModeNonSolid}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthBounds" VkBool32 'False 
+                                                       #{offset VkPhysicalDeviceFeatures, depthBounds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "wideLines" VkBool32 'False 
+                                                     #{offset VkPhysicalDeviceFeatures, wideLines}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "largePoints" VkBool32 'False 
+                                                       #{offset VkPhysicalDeviceFeatures, largePoints}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "alphaToOne" VkBool32 'False 
+                                                      #{offset VkPhysicalDeviceFeatures, alphaToOne}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "multiViewport" VkBool32 'False 
+                                                         #{offset VkPhysicalDeviceFeatures, multiViewport}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "samplerAnisotropy" VkBool32 'False 
+                                                             #{offset VkPhysicalDeviceFeatures, samplerAnisotropy}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "textureCompressionETC2" VkBool32 'False 
+                                                                  #{offset VkPhysicalDeviceFeatures, textureCompressionETC2}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "textureCompressionASTC_LDR" VkBool32 'False 
+                                                                      #{offset VkPhysicalDeviceFeatures, textureCompressionASTC_LDR}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "textureCompressionBC" VkBool32 'False 
+                                                                #{offset VkPhysicalDeviceFeatures, textureCompressionBC}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "occlusionQueryPrecise" VkBool32 'False 
+                                                                 #{offset VkPhysicalDeviceFeatures, occlusionQueryPrecise}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineStatisticsQuery" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceFeatures, pipelineStatisticsQuery}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "vertexPipelineStoresAndAtomics" VkBool32 'False
+                #{offset VkPhysicalDeviceFeatures, vertexPipelineStoresAndAtomics}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fragmentStoresAndAtomics" VkBool32 'False 
+                                                                    #{offset VkPhysicalDeviceFeatures, fragmentStoresAndAtomics}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderTessellationAndGeometryPointSize" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceFeatures, shaderTessellationAndGeometryPointSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderImageGatherExtended" VkBool32 'False 
+                                                                     #{offset VkPhysicalDeviceFeatures, shaderImageGatherExtended}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageImageExtendedFormats" VkBool32 'False
+                #{offset VkPhysicalDeviceFeatures, shaderStorageImageExtendedFormats}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageImageMultisample" VkBool32 'False
+                #{offset VkPhysicalDeviceFeatures, shaderStorageImageMultisample}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageImageReadWithoutFormat" VkBool32 'False
+                #{offset VkPhysicalDeviceFeatures, shaderStorageImageReadWithoutFormat}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageImageWriteWithoutFormat" VkBool32 'False
+                #{offset VkPhysicalDeviceFeatures, shaderStorageImageWriteWithoutFormat}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderUniformBufferArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceFeatures, shaderUniformBufferArrayDynamicIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderSampledImageArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceFeatures, shaderSampledImageArrayDynamicIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageBufferArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceFeatures, shaderStorageBufferArrayDynamicIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderStorageImageArrayDynamicIndexing" VkBool32 -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPhysicalDeviceFeatures, shaderStorageImageArrayDynamicIndexing}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderClipDistance" VkBool32 'False 
+                                                              #{offset VkPhysicalDeviceFeatures, shaderClipDistance}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderCullDistance" VkBool32 'False 
+                                                              #{offset VkPhysicalDeviceFeatures, shaderCullDistance}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderFloat64" VkBool32 'False 
+                                                         #{offset VkPhysicalDeviceFeatures, shaderFloat64}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderInt64" VkBool32 'False 
+                                                       #{offset VkPhysicalDeviceFeatures, shaderInt64}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderInt16" VkBool32 'False 
+                                                       #{offset VkPhysicalDeviceFeatures, shaderInt16}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderResourceResidency" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceFeatures, shaderResourceResidency}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "shaderResourceMinLod" VkBool32 'False 
+                                                                #{offset VkPhysicalDeviceFeatures, shaderResourceMinLod}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseBinding" VkBool32 'False 
+                                                         #{offset VkPhysicalDeviceFeatures, sparseBinding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseResidencyBuffer" VkBool32 'False 
+                                                                 #{offset VkPhysicalDeviceFeatures, sparseResidencyBuffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseResidencyImage2D" VkBool32 'False 
+                                                                  #{offset VkPhysicalDeviceFeatures, sparseResidencyImage2D}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseResidencyImage3D" VkBool32 'False 
+                                                                  #{offset VkPhysicalDeviceFeatures, sparseResidencyImage3D}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseResidency2Samples" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceFeatures, sparseResidency2Samples}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseResidency4Samples" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceFeatures, sparseResidency4Samples}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseResidency8Samples" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceFeatures, sparseResidency8Samples}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseResidency16Samples" VkBool32 'False 
+                                                                    #{offset VkPhysicalDeviceFeatures, sparseResidency16Samples}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sparseResidencyAliased" VkBool32 'False 
+                                                                  #{offset VkPhysicalDeviceFeatures, sparseResidencyAliased}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "variableMultisampleRate" VkBool32 'False 
+                                                                   #{offset VkPhysicalDeviceFeatures, variableMultisampleRate}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "inheritedQueries" VkBool32 'False 
+                                                            #{offset VkPhysicalDeviceFeatures, inheritedQueries}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Pipeline.hsc
@@ -1,8923 +1,1647 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.Pipeline
-       (VkGraphicsPipelineCreateInfo, VkGraphicsPipelineCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineCacheCreateInfo, VkPipelineCacheCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineColorBlendAdvancedStateCreateInfoEXT,
-        VkPipelineColorBlendAdvancedStateCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkPipelineColorBlendAttachmentState,
-        VkPipelineColorBlendAttachmentState', -- ' closing tick for hsc2hs
-        VkPipelineColorBlendStateCreateInfo,
-        VkPipelineColorBlendStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineCoverageModulationStateCreateInfoNV,
-        VkPipelineCoverageModulationStateCreateInfoNV', -- ' closing tick for hsc2hs
-        VkPipelineCoverageToColorStateCreateInfoNV,
-        VkPipelineCoverageToColorStateCreateInfoNV', -- ' closing tick for hsc2hs
-        VkPipelineDepthStencilStateCreateInfo,
-        VkPipelineDepthStencilStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineDiscardRectangleStateCreateInfoEXT,
-        VkPipelineDiscardRectangleStateCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkPipelineDynamicStateCreateInfo,
-        VkPipelineDynamicStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineInputAssemblyStateCreateInfo,
-        VkPipelineInputAssemblyStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineLayoutCreateInfo, VkPipelineLayoutCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineMultisampleStateCreateInfo,
-        VkPipelineMultisampleStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineRasterizationConservativeStateCreateInfoEXT,
-        VkPipelineRasterizationConservativeStateCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkPipelineRasterizationStateCreateInfo,
-        VkPipelineRasterizationStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineRasterizationStateRasterizationOrderAMD,
-        VkPipelineRasterizationStateRasterizationOrderAMD', -- ' closing tick for hsc2hs
-        VkPipelineSampleLocationsStateCreateInfoEXT,
-        VkPipelineSampleLocationsStateCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkPipelineShaderStageCreateInfo, VkPipelineShaderStageCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineTessellationDomainOriginStateCreateInfo,
-        VkPipelineTessellationDomainOriginStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineTessellationDomainOriginStateCreateInfoKHR,
-        VkPipelineTessellationStateCreateInfo,
-        VkPipelineTessellationStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineVertexInputDivisorStateCreateInfoEXT,
-        VkPipelineVertexInputDivisorStateCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkPipelineVertexInputStateCreateInfo,
-        VkPipelineVertexInputStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineViewportStateCreateInfo,
-        VkPipelineViewportStateCreateInfo', -- ' closing tick for hsc2hs
-        VkPipelineViewportSwizzleStateCreateInfoNV,
-        VkPipelineViewportSwizzleStateCreateInfoNV', -- ' closing tick for hsc2hs
-        VkPipelineViewportWScalingStateCreateInfoNV,
-        VkPipelineViewportWScalingStateCreateInfoNV') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                            (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes                             (VkBool32,
-                                                                    VkSampleMask)
-import Graphics.Vulkan.Types.Bitmasks                              (VkPipelineCacheCreateFlags,
-                                                                    VkPipelineColorBlendStateCreateFlags,
-                                                                    VkPipelineCoverageModulationStateCreateFlagsNV,
-                                                                    VkPipelineCoverageToColorStateCreateFlagsNV,
-                                                                    VkPipelineDepthStencilStateCreateFlags,
-                                                                    VkPipelineDiscardRectangleStateCreateFlagsEXT,
-                                                                    VkPipelineDynamicStateCreateFlags,
-                                                                    VkPipelineInputAssemblyStateCreateFlags,
-                                                                    VkPipelineLayoutCreateFlags,
-                                                                    VkPipelineMultisampleStateCreateFlags,
-                                                                    VkPipelineRasterizationConservativeStateCreateFlagsEXT,
-                                                                    VkPipelineRasterizationStateCreateFlags,
-                                                                    VkPipelineShaderStageCreateFlags,
-                                                                    VkPipelineTessellationStateCreateFlags,
-                                                                    VkPipelineVertexInputStateCreateFlags,
-                                                                    VkPipelineViewportStateCreateFlags,
-                                                                    VkPipelineViewportSwizzleStateCreateFlagsNV)
-import Graphics.Vulkan.Types.Enum.Blend                            (VkBlendFactor,
-                                                                    VkBlendOp,
-                                                                    VkBlendOverlapEXT)
-import Graphics.Vulkan.Types.Enum.Color                            (VkColorComponentFlags)
-import Graphics.Vulkan.Types.Enum.CompareOp                        (VkCompareOp)
-import Graphics.Vulkan.Types.Enum.ConservativeRasterizationModeEXT (VkConservativeRasterizationModeEXT)
-import Graphics.Vulkan.Types.Enum.CoverageModulationModeNV         (VkCoverageModulationModeNV)
-import Graphics.Vulkan.Types.Enum.CullModeFlags                    (VkCullModeFlags)
-import Graphics.Vulkan.Types.Enum.DiscardRectangleModeEXT          (VkDiscardRectangleModeEXT)
-import Graphics.Vulkan.Types.Enum.DynamicState                     (VkDynamicState)
-import Graphics.Vulkan.Types.Enum.FrontFace                        (VkFrontFace)
-import Graphics.Vulkan.Types.Enum.LogicOp                          (VkLogicOp)
-import Graphics.Vulkan.Types.Enum.Pipeline                         (VkPipelineCreateFlags)
-import Graphics.Vulkan.Types.Enum.PolygonMode                      (VkPolygonMode)
-import Graphics.Vulkan.Types.Enum.PrimitiveTopology                (VkPrimitiveTopology)
-import Graphics.Vulkan.Types.Enum.RasterizationOrderAMD            (VkRasterizationOrderAMD)
-import Graphics.Vulkan.Types.Enum.SampleCountFlags                 (VkSampleCountFlagBits)
-import Graphics.Vulkan.Types.Enum.Shader                           (VkShaderStageFlagBits)
-import Graphics.Vulkan.Types.Enum.StructureType                    (VkStructureType)
-import Graphics.Vulkan.Types.Enum.TessellationDomainOrigin         (VkTessellationDomainOrigin)
-import Graphics.Vulkan.Types.Handles                               (VkDescriptorSetLayout,
-                                                                    VkPipeline,
-                                                                    VkPipelineLayout,
-                                                                    VkRenderPass,
-                                                                    VkShaderModule)
-import Graphics.Vulkan.Types.Struct.PushConstantRange              (VkPushConstantRange)
-import Graphics.Vulkan.Types.Struct.Rect                           (VkRect2D)
-import Graphics.Vulkan.Types.Struct.SampleLocation                 (VkSampleLocationsInfoEXT)
-import Graphics.Vulkan.Types.Struct.Specialization                 (VkSpecializationInfo)
-import Graphics.Vulkan.Types.Struct.StencilOpState                 (VkStencilOpState)
-import Graphics.Vulkan.Types.Struct.VertexInput                    (VkVertexInputAttributeDescription,
-                                                                    VkVertexInputBindingDescription,
-                                                                    VkVertexInputBindingDivisorDescriptionEXT)
-import Graphics.Vulkan.Types.Struct.Viewport                       (VkViewport, VkViewportSwizzleNV,
-                                                                    VkViewportWScalingNV)
-import System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkGraphicsPipelineCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineCreateFlags  flags;
---   >     uint32_t               stageCount;
---   >     const VkPipelineShaderStageCreateInfo* pStages;
---   >     const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
---   >     const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
---   >     const VkPipelineTessellationStateCreateInfo* pTessellationState;
---   >     const VkPipelineViewportStateCreateInfo* pViewportState;
---   >     const VkPipelineRasterizationStateCreateInfo* pRasterizationState;
---   >     const VkPipelineMultisampleStateCreateInfo* pMultisampleState;
---   >     const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
---   >     const VkPipelineColorBlendStateCreateInfo* pColorBlendState;
---   >     const VkPipelineDynamicStateCreateInfo* pDynamicState;
---   >     VkPipelineLayout       layout;
---   >     VkRenderPass           renderPass;
---   >     uint32_t               subpass;
---   >     VkPipeline      basePipelineHandle;
---   >     int32_t                basePipelineIndex;
---   > } VkGraphicsPipelineCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkGraphicsPipelineCreateInfo VkGraphicsPipelineCreateInfo registry at www.khronos.org>
-type VkGraphicsPipelineCreateInfo =
-     VulkanStruct VkGraphicsPipelineCreateInfo' -- ' closing tick for hsc2hs
-
-data VkGraphicsPipelineCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkGraphicsPipelineCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkGraphicsPipelineCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkGraphicsPipelineCreateInfo where
-        sizeOf ~_ = #{size VkGraphicsPipelineCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkGraphicsPipelineCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkGraphicsPipelineCreateInfo where
-        type StructFields VkGraphicsPipelineCreateInfo =
-             '["sType", "pNext", "flags", "stageCount", "pStages", -- ' closing tick for hsc2hs
-               "pVertexInputState", "pInputAssemblyState", "pTessellationState",
-               "pViewportState", "pRasterizationState", "pMultisampleState",
-               "pDepthStencilState", "pColorBlendState", "pDynamicState",
-               "layout", "renderPass", "subpass", "basePipelineHandle",
-               "basePipelineIndex"]
-        type CUnionType VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkGraphicsPipelineCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkGraphicsPipelineCreateInfo where
-        type FieldType "sType" VkGraphicsPipelineCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, sType}
-        type FieldIsArray "sType" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkGraphicsPipelineCreateInfo where
-        type FieldType "pNext" VkGraphicsPipelineCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, pNext}
-        type FieldIsArray "pNext" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkGraphicsPipelineCreateInfo where
-        type FieldType "flags" VkGraphicsPipelineCreateInfo =
-             VkPipelineCreateFlags
-        type FieldOptional "flags" VkGraphicsPipelineCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, flags}
-        type FieldIsArray "flags" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "stageCount" VkGraphicsPipelineCreateInfo where
-        type FieldType "stageCount" VkGraphicsPipelineCreateInfo = Word32
-        type FieldOptional "stageCount" VkGraphicsPipelineCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "stageCount" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, stageCount}
-        type FieldIsArray "stageCount" VkGraphicsPipelineCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, stageCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stageCount" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, stageCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, stageCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stageCount" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, stageCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pStages" VkGraphicsPipelineCreateInfo where
-        type FieldType "pStages" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineShaderStageCreateInfo
-        type FieldOptional "pStages" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pStages" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, pStages}
-        type FieldIsArray "pStages" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pStages}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pStages" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pStages})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pStages}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pStages" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pStages}
-
-instance {-# OVERLAPPING #-}
-         HasField "pVertexInputState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pVertexInputState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineVertexInputStateCreateInfo
-        type FieldOptional "pVertexInputState" VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pVertexInputState" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
-        type FieldIsArray "pVertexInputState" VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pVertexInputState" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pVertexInputState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pVertexInputState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
-
-instance {-# OVERLAPPING #-}
-         HasField "pInputAssemblyState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pInputAssemblyState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineInputAssemblyStateCreateInfo
-        type FieldOptional "pInputAssemblyState"
-               VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pInputAssemblyState" VkGraphicsPipelineCreateInfo
-             =
-             #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
-        type FieldIsArray "pInputAssemblyState"
-               VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pInputAssemblyState" VkGraphicsPipelineCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pInputAssemblyState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
-
-instance {-# OVERLAPPING #-}
-         HasField "pTessellationState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pTessellationState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineTessellationStateCreateInfo
-        type FieldOptional "pTessellationState"
-               VkGraphicsPipelineCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pTessellationState" VkGraphicsPipelineCreateInfo
-             =
-             #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
-        type FieldIsArray "pTessellationState" VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pTessellationState" VkGraphicsPipelineCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pTessellationState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pTessellationState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewportState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pViewportState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineViewportStateCreateInfo
-        type FieldOptional "pViewportState" VkGraphicsPipelineCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pViewportState" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, pViewportState}
-        type FieldIsArray "pViewportState" VkGraphicsPipelineCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pViewportState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pViewportState" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pViewportState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pViewportState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pViewportState" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pViewportState}
-
-instance {-# OVERLAPPING #-}
-         HasField "pRasterizationState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pRasterizationState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineRasterizationStateCreateInfo
-        type FieldOptional "pRasterizationState"
-               VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pRasterizationState" VkGraphicsPipelineCreateInfo
-             =
-             #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
-        type FieldIsArray "pRasterizationState"
-               VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pRasterizationState" VkGraphicsPipelineCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pRasterizationState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pRasterizationState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
-
-instance {-# OVERLAPPING #-}
-         HasField "pMultisampleState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pMultisampleState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineMultisampleStateCreateInfo
-        type FieldOptional "pMultisampleState" VkGraphicsPipelineCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pMultisampleState" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
-        type FieldIsArray "pMultisampleState" VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pMultisampleState" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pMultisampleState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pMultisampleState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDepthStencilState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pDepthStencilState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineDepthStencilStateCreateInfo
-        type FieldOptional "pDepthStencilState"
-               VkGraphicsPipelineCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pDepthStencilState" VkGraphicsPipelineCreateInfo
-             =
-             #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
-        type FieldIsArray "pDepthStencilState" VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDepthStencilState" VkGraphicsPipelineCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDepthStencilState" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
-
-instance {-# OVERLAPPING #-}
-         HasField "pColorBlendState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pColorBlendState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineColorBlendStateCreateInfo
-        type FieldOptional "pColorBlendState" VkGraphicsPipelineCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pColorBlendState" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
-        type FieldIsArray "pColorBlendState" VkGraphicsPipelineCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pColorBlendState" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pColorBlendState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pColorBlendState" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDynamicState" VkGraphicsPipelineCreateInfo where
-        type FieldType "pDynamicState" VkGraphicsPipelineCreateInfo =
-             Ptr VkPipelineDynamicStateCreateInfo
-        type FieldOptional "pDynamicState" VkGraphicsPipelineCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pDynamicState" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
-        type FieldIsArray "pDynamicState" VkGraphicsPipelineCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDynamicState" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, pDynamicState})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDynamicState" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
-
-instance {-# OVERLAPPING #-}
-         HasField "layout" VkGraphicsPipelineCreateInfo where
-        type FieldType "layout" VkGraphicsPipelineCreateInfo =
-             VkPipelineLayout
-        type FieldOptional "layout" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layout" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, layout}
-        type FieldIsArray "layout" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, layout}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "layout" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, layout})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, layout}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "layout" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, layout}
-
-instance {-# OVERLAPPING #-}
-         HasField "renderPass" VkGraphicsPipelineCreateInfo where
-        type FieldType "renderPass" VkGraphicsPipelineCreateInfo =
-             VkRenderPass
-        type FieldOptional "renderPass" VkGraphicsPipelineCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "renderPass" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, renderPass}
-        type FieldIsArray "renderPass" VkGraphicsPipelineCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "renderPass" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, renderPass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "renderPass" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         HasField "subpass" VkGraphicsPipelineCreateInfo where
-        type FieldType "subpass" VkGraphicsPipelineCreateInfo = Word32
-        type FieldOptional "subpass" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "subpass" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, subpass}
-        type FieldIsArray "subpass" VkGraphicsPipelineCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, subpass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subpass" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, subpass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, subpass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subpass" VkGraphicsPipelineCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, subpass}
-
-instance {-# OVERLAPPING #-}
-         HasField "basePipelineHandle" VkGraphicsPipelineCreateInfo where
-        type FieldType "basePipelineHandle" VkGraphicsPipelineCreateInfo =
-             VkPipeline
-        type FieldOptional "basePipelineHandle"
-               VkGraphicsPipelineCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "basePipelineHandle" VkGraphicsPipelineCreateInfo
-             =
-             #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
-        type FieldIsArray "basePipelineHandle" VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "basePipelineHandle" VkGraphicsPipelineCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "basePipelineHandle" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
-
-instance {-# OVERLAPPING #-}
-         HasField "basePipelineIndex" VkGraphicsPipelineCreateInfo where
-        type FieldType "basePipelineIndex" VkGraphicsPipelineCreateInfo =
-             Int32
-        type FieldOptional "basePipelineIndex" VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "basePipelineIndex" VkGraphicsPipelineCreateInfo =
-             #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
-        type FieldIsArray "basePipelineIndex" VkGraphicsPipelineCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "basePipelineIndex" VkGraphicsPipelineCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "basePipelineIndex" VkGraphicsPipelineCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
-
-instance Show VkGraphicsPipelineCreateInfo where
-        showsPrec d x
-          = showString "VkGraphicsPipelineCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "stageCount = " .
-                                  showsPrec d (getField @"stageCount" x) .
-                                    showString ", " .
-                                      showString "pStages = " .
-                                        showsPrec d (getField @"pStages" x) .
-                                          showString ", " .
-                                            showString "pVertexInputState = " .
-                                              showsPrec d (getField @"pVertexInputState" x) .
-                                                showString ", " .
-                                                  showString "pInputAssemblyState = " .
-                                                    showsPrec d (getField @"pInputAssemblyState" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "pTessellationState = " .
-                                                          showsPrec d
-                                                            (getField @"pTessellationState" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "pViewportState = " .
-                                                                showsPrec d
-                                                                  (getField @"pViewportState" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "pRasterizationState = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"pRasterizationState"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "pMultisampleState = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"pMultisampleState"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "pDepthStencilState = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"pDepthStencilState"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "pColorBlendState = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"pColorBlendState"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "pDynamicState = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"pDynamicState"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "layout = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"layout"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "renderPass = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (getField
-                                                                                                               @"renderPass"
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "subpass = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (getField
-                                                                                                                     @"subpass"
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "basePipelineHandle = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (getField
-                                                                                                                           @"basePipelineHandle"
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showString
-                                                                                                                          ", "
-                                                                                                                          .
-                                                                                                                          showString
-                                                                                                                            "basePipelineIndex = "
-                                                                                                                            .
-                                                                                                                            showsPrec
-                                                                                                                              d
-                                                                                                                              (getField
-                                                                                                                                 @"basePipelineIndex"
-                                                                                                                                 x)
-                                                                                                                              .
-                                                                                                                              showChar
-                                                                                                                                '}'
-
--- | > typedef struct VkPipelineCacheCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineCacheCreateFlags    flags;
---   >     size_t                 initialDataSize;
---   >     const void*            pInitialData;
---   > } VkPipelineCacheCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCacheCreateInfo VkPipelineCacheCreateInfo registry at www.khronos.org>
-type VkPipelineCacheCreateInfo =
-     VulkanStruct VkPipelineCacheCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineCacheCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineCacheCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineCacheCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineCacheCreateInfo where
-        sizeOf ~_ = #{size VkPipelineCacheCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPipelineCacheCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineCacheCreateInfo where
-        type StructFields VkPipelineCacheCreateInfo =
-             '["sType", "pNext", "flags", "initialDataSize", "pInitialData"] -- ' closing tick for hsc2hs
-        type CUnionType VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineCacheCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineCacheCreateInfo where
-        type FieldType "sType" VkPipelineCacheCreateInfo = VkStructureType
-        type FieldOptional "sType" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineCacheCreateInfo =
-             #{offset VkPipelineCacheCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCacheCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineCacheCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineCacheCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineCacheCreateInfo where
-        type FieldType "pNext" VkPipelineCacheCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineCacheCreateInfo =
-             #{offset VkPipelineCacheCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCacheCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineCacheCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineCacheCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineCacheCreateInfo where
-        type FieldType "flags" VkPipelineCacheCreateInfo =
-             VkPipelineCacheCreateFlags
-        type FieldOptional "flags" VkPipelineCacheCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineCacheCreateInfo =
-             #{offset VkPipelineCacheCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCacheCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineCacheCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineCacheCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "initialDataSize" VkPipelineCacheCreateInfo where
-        type FieldType "initialDataSize" VkPipelineCacheCreateInfo = CSize
-        type FieldOptional "initialDataSize" VkPipelineCacheCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "initialDataSize" VkPipelineCacheCreateInfo =
-             #{offset VkPipelineCacheCreateInfo, initialDataSize}
-        type FieldIsArray "initialDataSize" VkPipelineCacheCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCacheCreateInfo, initialDataSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "initialDataSize" VkPipelineCacheCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, initialDataSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, initialDataSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "initialDataSize" VkPipelineCacheCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, initialDataSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "pInitialData" VkPipelineCacheCreateInfo where
-        type FieldType "pInitialData" VkPipelineCacheCreateInfo = Ptr Void
-        type FieldOptional "pInitialData" VkPipelineCacheCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pInitialData" VkPipelineCacheCreateInfo =
-             #{offset VkPipelineCacheCreateInfo, pInitialData}
-        type FieldIsArray "pInitialData" VkPipelineCacheCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCacheCreateInfo, pInitialData}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pInitialData" VkPipelineCacheCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCacheCreateInfo, pInitialData})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCacheCreateInfo, pInitialData}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pInitialData" VkPipelineCacheCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCacheCreateInfo, pInitialData}
-
-instance Show VkPipelineCacheCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineCacheCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "initialDataSize = " .
-                                  showsPrec d (getField @"initialDataSize" x) .
-                                    showString ", " .
-                                      showString "pInitialData = " .
-                                        showsPrec d (getField @"pInitialData" x) . showChar '}'
-
--- | > typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkBool32               srcPremultiplied;
---   >     VkBool32               dstPremultiplied;
---   >     VkBlendOverlapEXT      blendOverlap;
---   > } VkPipelineColorBlendAdvancedStateCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendAdvancedStateCreateInfoEXT VkPipelineColorBlendAdvancedStateCreateInfoEXT registry at www.khronos.org>
-type VkPipelineColorBlendAdvancedStateCreateInfoEXT =
-     VulkanStruct VkPipelineColorBlendAdvancedStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkPipelineColorBlendAdvancedStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineColorBlendAdvancedStateCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineColorBlendAdvancedStateCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        sizeOf ~_
-          = #{size VkPipelineColorBlendAdvancedStateCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineColorBlendAdvancedStateCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        type StructFields VkPipelineColorBlendAdvancedStateCreateInfoEXT =
-             '["sType", "pNext", "srcPremultiplied", "dstPremultiplied", -- ' closing tick for hsc2hs
-               "blendOverlap"]
-        type CUnionType VkPipelineColorBlendAdvancedStateCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineColorBlendAdvancedStateCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineColorBlendAdvancedStateCreateInfoEXT =
-             '[VkPipelineColorBlendStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        type FieldType "sType"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             =
-             #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
-        type FieldIsArray "sType"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        type FieldType "pNext"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             =
-             #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcPremultiplied"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        type FieldType "srcPremultiplied"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = VkBool32
-        type FieldOptional "srcPremultiplied"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcPremultiplied"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             =
-             #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
-        type FieldIsArray "srcPremultiplied"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcPremultiplied"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcPremultiplied"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstPremultiplied"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        type FieldType "dstPremultiplied"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = VkBool32
-        type FieldOptional "dstPremultiplied"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstPremultiplied"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             =
-             #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
-        type FieldIsArray "dstPremultiplied"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstPremultiplied"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstPremultiplied"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
-
-instance {-# OVERLAPPING #-}
-         HasField "blendOverlap"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        type FieldType "blendOverlap"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = VkBlendOverlapEXT
-        type FieldOptional "blendOverlap"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "blendOverlap"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             =
-             #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
-        type FieldIsArray "blendOverlap"
-               VkPipelineColorBlendAdvancedStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "blendOverlap"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "blendOverlap"
-           VkPipelineColorBlendAdvancedStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
-
-instance Show VkPipelineColorBlendAdvancedStateCreateInfoEXT where
-        showsPrec d x
-          = showString "VkPipelineColorBlendAdvancedStateCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "srcPremultiplied = " .
-                            showsPrec d (getField @"srcPremultiplied" x) .
-                              showString ", " .
-                                showString "dstPremultiplied = " .
-                                  showsPrec d (getField @"dstPremultiplied" x) .
-                                    showString ", " .
-                                      showString "blendOverlap = " .
-                                        showsPrec d (getField @"blendOverlap" x) . showChar '}'
-
--- | > typedef struct VkPipelineColorBlendAttachmentState {
---   >     VkBool32               blendEnable;
---   >     VkBlendFactor          srcColorBlendFactor;
---   >     VkBlendFactor          dstColorBlendFactor;
---   >     VkBlendOp              colorBlendOp;
---   >     VkBlendFactor          srcAlphaBlendFactor;
---   >     VkBlendFactor          dstAlphaBlendFactor;
---   >     VkBlendOp              alphaBlendOp;
---   >     VkColorComponentFlags  colorWriteMask;
---   > } VkPipelineColorBlendAttachmentState;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendAttachmentState VkPipelineColorBlendAttachmentState registry at www.khronos.org>
-type VkPipelineColorBlendAttachmentState =
-     VulkanStruct VkPipelineColorBlendAttachmentState' -- ' closing tick for hsc2hs
-
-data VkPipelineColorBlendAttachmentState' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineColorBlendAttachmentState where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineColorBlendAttachmentState where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineColorBlendAttachmentState where
-        sizeOf ~_ = #{size VkPipelineColorBlendAttachmentState}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineColorBlendAttachmentState}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineColorBlendAttachmentState where
-        type StructFields VkPipelineColorBlendAttachmentState =
-             '["blendEnable", "srcColorBlendFactor", "dstColorBlendFactor", -- ' closing tick for hsc2hs
-               "colorBlendOp", "srcAlphaBlendFactor", "dstAlphaBlendFactor",
-               "alphaBlendOp", "colorWriteMask"]
-        type CUnionType VkPipelineColorBlendAttachmentState = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineColorBlendAttachmentState = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineColorBlendAttachmentState = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "blendEnable" VkPipelineColorBlendAttachmentState where
-        type FieldType "blendEnable" VkPipelineColorBlendAttachmentState =
-             VkBool32
-        type FieldOptional "blendEnable"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "blendEnable" VkPipelineColorBlendAttachmentState
-             =
-             #{offset VkPipelineColorBlendAttachmentState, blendEnable}
-        type FieldIsArray "blendEnable" VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAttachmentState, blendEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "blendEnable" VkPipelineColorBlendAttachmentState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, blendEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, blendEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "blendEnable" VkPipelineColorBlendAttachmentState
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, blendEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcColorBlendFactor" VkPipelineColorBlendAttachmentState
-         where
-        type FieldType "srcColorBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = VkBlendFactor
-        type FieldOptional "srcColorBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcColorBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             =
-             #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
-        type FieldIsArray "srcColorBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcColorBlendFactor"
-           VkPipelineColorBlendAttachmentState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcColorBlendFactor"
-           VkPipelineColorBlendAttachmentState
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstColorBlendFactor" VkPipelineColorBlendAttachmentState
-         where
-        type FieldType "dstColorBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = VkBlendFactor
-        type FieldOptional "dstColorBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstColorBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             =
-             #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
-        type FieldIsArray "dstColorBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstColorBlendFactor"
-           VkPipelineColorBlendAttachmentState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstColorBlendFactor"
-           VkPipelineColorBlendAttachmentState
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         HasField "colorBlendOp" VkPipelineColorBlendAttachmentState where
-        type FieldType "colorBlendOp" VkPipelineColorBlendAttachmentState =
-             VkBlendOp
-        type FieldOptional "colorBlendOp"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "colorBlendOp" VkPipelineColorBlendAttachmentState
-             =
-             #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
-        type FieldIsArray "colorBlendOp"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "colorBlendOp" VkPipelineColorBlendAttachmentState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, colorBlendOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "colorBlendOp" VkPipelineColorBlendAttachmentState
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcAlphaBlendFactor" VkPipelineColorBlendAttachmentState
-         where
-        type FieldType "srcAlphaBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = VkBlendFactor
-        type FieldOptional "srcAlphaBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcAlphaBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             =
-             #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
-        type FieldIsArray "srcAlphaBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcAlphaBlendFactor"
-           VkPipelineColorBlendAttachmentState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcAlphaBlendFactor"
-           VkPipelineColorBlendAttachmentState
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstAlphaBlendFactor" VkPipelineColorBlendAttachmentState
-         where
-        type FieldType "dstAlphaBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = VkBlendFactor
-        type FieldOptional "dstAlphaBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstAlphaBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             =
-             #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
-        type FieldIsArray "dstAlphaBlendFactor"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstAlphaBlendFactor"
-           VkPipelineColorBlendAttachmentState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstAlphaBlendFactor"
-           VkPipelineColorBlendAttachmentState
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
-
-instance {-# OVERLAPPING #-}
-         HasField "alphaBlendOp" VkPipelineColorBlendAttachmentState where
-        type FieldType "alphaBlendOp" VkPipelineColorBlendAttachmentState =
-             VkBlendOp
-        type FieldOptional "alphaBlendOp"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "alphaBlendOp" VkPipelineColorBlendAttachmentState
-             =
-             #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
-        type FieldIsArray "alphaBlendOp"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "alphaBlendOp" VkPipelineColorBlendAttachmentState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "alphaBlendOp" VkPipelineColorBlendAttachmentState
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "colorWriteMask" VkPipelineColorBlendAttachmentState where
-        type FieldType "colorWriteMask" VkPipelineColorBlendAttachmentState
-             = VkColorComponentFlags
-        type FieldOptional "colorWriteMask"
-               VkPipelineColorBlendAttachmentState
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "colorWriteMask"
-               VkPipelineColorBlendAttachmentState
-             =
-             #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
-        type FieldIsArray "colorWriteMask"
-               VkPipelineColorBlendAttachmentState
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "colorWriteMask" VkPipelineColorBlendAttachmentState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendAttachmentState, colorWriteMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "colorWriteMask" VkPipelineColorBlendAttachmentState
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
-
-instance Show VkPipelineColorBlendAttachmentState where
-        showsPrec d x
-          = showString "VkPipelineColorBlendAttachmentState {" .
-              showString "blendEnable = " .
-                showsPrec d (getField @"blendEnable" x) .
-                  showString ", " .
-                    showString "srcColorBlendFactor = " .
-                      showsPrec d (getField @"srcColorBlendFactor" x) .
-                        showString ", " .
-                          showString "dstColorBlendFactor = " .
-                            showsPrec d (getField @"dstColorBlendFactor" x) .
-                              showString ", " .
-                                showString "colorBlendOp = " .
-                                  showsPrec d (getField @"colorBlendOp" x) .
-                                    showString ", " .
-                                      showString "srcAlphaBlendFactor = " .
-                                        showsPrec d (getField @"srcAlphaBlendFactor" x) .
-                                          showString ", " .
-                                            showString "dstAlphaBlendFactor = " .
-                                              showsPrec d (getField @"dstAlphaBlendFactor" x) .
-                                                showString ", " .
-                                                  showString "alphaBlendOp = " .
-                                                    showsPrec d (getField @"alphaBlendOp" x) .
-                                                      showString ", " .
-                                                        showString "colorWriteMask = " .
-                                                          showsPrec d (getField @"colorWriteMask" x)
-                                                            . showChar '}'
-
--- | > typedef struct VkPipelineColorBlendStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineColorBlendStateCreateFlags    flags;
---   >     VkBool32               logicOpEnable;
---   >     VkLogicOp              logicOp;
---   >     uint32_t               attachmentCount;
---   >     const VkPipelineColorBlendAttachmentState* pAttachments;
---   >     float                  blendConstants[4];
---   > } VkPipelineColorBlendStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendStateCreateInfo VkPipelineColorBlendStateCreateInfo registry at www.khronos.org>
-type VkPipelineColorBlendStateCreateInfo =
-     VulkanStruct VkPipelineColorBlendStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineColorBlendStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineColorBlendStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineColorBlendStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineColorBlendStateCreateInfo where
-        sizeOf ~_ = #{size VkPipelineColorBlendStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineColorBlendStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineColorBlendStateCreateInfo where
-        type StructFields VkPipelineColorBlendStateCreateInfo =
-             '["sType", "pNext", "flags", "logicOpEnable", "logicOp", -- ' closing tick for hsc2hs
-               "attachmentCount", "pAttachments", "blendConstants"]
-        type CUnionType VkPipelineColorBlendStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineColorBlendStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineColorBlendStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineColorBlendStateCreateInfo where
-        type FieldType "sType" VkPipelineColorBlendStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineColorBlendStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineColorBlendStateCreateInfo =
-             #{offset VkPipelineColorBlendStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineColorBlendStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineColorBlendStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineColorBlendStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineColorBlendStateCreateInfo where
-        type FieldType "pNext" VkPipelineColorBlendStateCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPipelineColorBlendStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineColorBlendStateCreateInfo =
-             #{offset VkPipelineColorBlendStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineColorBlendStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineColorBlendStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineColorBlendStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineColorBlendStateCreateInfo where
-        type FieldType "flags" VkPipelineColorBlendStateCreateInfo =
-             VkPipelineColorBlendStateCreateFlags
-        type FieldOptional "flags" VkPipelineColorBlendStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineColorBlendStateCreateInfo =
-             #{offset VkPipelineColorBlendStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineColorBlendStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineColorBlendStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineColorBlendStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "logicOpEnable" VkPipelineColorBlendStateCreateInfo where
-        type FieldType "logicOpEnable" VkPipelineColorBlendStateCreateInfo
-             = VkBool32
-        type FieldOptional "logicOpEnable"
-               VkPipelineColorBlendStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "logicOpEnable"
-               VkPipelineColorBlendStateCreateInfo
-             =
-             #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
-        type FieldIsArray "logicOpEnable"
-               VkPipelineColorBlendStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "logicOpEnable" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "logicOpEnable" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "logicOp" VkPipelineColorBlendStateCreateInfo where
-        type FieldType "logicOp" VkPipelineColorBlendStateCreateInfo =
-             VkLogicOp
-        type FieldOptional "logicOp" VkPipelineColorBlendStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "logicOp" VkPipelineColorBlendStateCreateInfo =
-             #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
-        type FieldIsArray "logicOp" VkPipelineColorBlendStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "logicOp" VkPipelineColorBlendStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, logicOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "logicOp" VkPipelineColorBlendStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "attachmentCount" VkPipelineColorBlendStateCreateInfo
-         where
-        type FieldType "attachmentCount"
-               VkPipelineColorBlendStateCreateInfo
-             = Word32
-        type FieldOptional "attachmentCount"
-               VkPipelineColorBlendStateCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "attachmentCount"
-               VkPipelineColorBlendStateCreateInfo
-             =
-             #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
-        type FieldIsArray "attachmentCount"
-               VkPipelineColorBlendStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "attachmentCount" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "attachmentCount" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAttachments" VkPipelineColorBlendStateCreateInfo where
-        type FieldType "pAttachments" VkPipelineColorBlendStateCreateInfo =
-             Ptr VkPipelineColorBlendAttachmentState
-        type FieldOptional "pAttachments"
-               VkPipelineColorBlendStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAttachments" VkPipelineColorBlendStateCreateInfo
-             =
-             #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
-        type FieldIsArray "pAttachments"
-               VkPipelineColorBlendStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAttachments" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineColorBlendStateCreateInfo, pAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAttachments" VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "blendConstants" VkPipelineColorBlendStateCreateInfo where
-        type FieldType "blendConstants" VkPipelineColorBlendStateCreateInfo
-             = #{type float}
-        type FieldOptional "blendConstants"
-               VkPipelineColorBlendStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "blendConstants"
-               VkPipelineColorBlendStateCreateInfo
-             =
-             #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
-        type FieldIsArray "blendConstants"
-               VkPipelineColorBlendStateCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "blendConstants"
-           VkPipelineColorBlendStateCreateInfo
-         where
-        type FieldArrayLength "blendConstants"
-               VkPipelineColorBlendStateCreateInfo
-             = 4
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 4
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
-                      + sizeOf (undefined :: #{type float}) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
-                 + sizeOf (undefined :: #{type float}) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "blendConstants"
-           VkPipelineColorBlendStateCreateInfo
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
-                 + sizeOf (undefined :: #{type float}) * i)
-
-instance Show VkPipelineColorBlendStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineColorBlendStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "logicOpEnable = " .
-                                  showsPrec d (getField @"logicOpEnable" x) .
-                                    showString ", " .
-                                      showString "logicOp = " .
-                                        showsPrec d (getField @"logicOp" x) .
-                                          showString ", " .
-                                            showString "attachmentCount = " .
-                                              showsPrec d (getField @"attachmentCount" x) .
-                                                showString ", " .
-                                                  showString "pAttachments = " .
-                                                    showsPrec d (getField @"pAttachments" x) .
-                                                      showString ", " .
-                                                        (showString "blendConstants = [" .
-                                                           showsPrec d
-                                                             (let s = sizeOf
-                                                                        (undefined ::
-                                                                           FieldType
-                                                                             "blendConstants"
-                                                                             VkPipelineColorBlendStateCreateInfo)
-                                                                  o = fieldOffset @"blendConstants"
-                                                                        @VkPipelineColorBlendStateCreateInfo
-                                                                  f i
-                                                                    = peekByteOff (unsafePtr x) i ::
-                                                                        IO
-                                                                          (FieldType
-                                                                             "blendConstants"
-                                                                             VkPipelineColorBlendStateCreateInfo)
-                                                                in
-                                                                unsafeDupablePerformIO . mapM f $
-                                                                  map (\ i -> o + i * s)
-                                                                    [0 .. 4 - 1])
-                                                             . showChar ']')
-                                                          . showChar '}'
-
--- | > typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
---   >     VkStructureType sType;
---   >     const void*                                                                      pNext;
---   >     VkPipelineCoverageModulationStateCreateFlagsNV                   flags;
---   >     VkCoverageModulationModeNV                                                       coverageModulationMode;
---   >     VkBool32                                                                         coverageModulationTableEnable;
---   >     uint32_t                                                                         coverageModulationTableCount;
---   >     const float* pCoverageModulationTable;
---   > } VkPipelineCoverageModulationStateCreateInfoNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCoverageModulationStateCreateInfoNV VkPipelineCoverageModulationStateCreateInfoNV registry at www.khronos.org>
-type VkPipelineCoverageModulationStateCreateInfoNV =
-     VulkanStruct VkPipelineCoverageModulationStateCreateInfoNV' -- ' closing tick for hsc2hs
-
-data VkPipelineCoverageModulationStateCreateInfoNV' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineCoverageModulationStateCreateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineCoverageModulationStateCreateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        sizeOf ~_
-          = #{size VkPipelineCoverageModulationStateCreateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineCoverageModulationStateCreateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        type StructFields VkPipelineCoverageModulationStateCreateInfoNV =
-             '["sType", "pNext", "flags", "coverageModulationMode", -- ' closing tick for hsc2hs
-               "coverageModulationTableEnable", "coverageModulationTableCount",
-               "pCoverageModulationTable"]
-        type CUnionType VkPipelineCoverageModulationStateCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineCoverageModulationStateCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineCoverageModulationStateCreateInfoNV =
-             '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        type FieldType "sType"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
-        type FieldIsArray "sType"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        type FieldType "pNext"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        type FieldType "flags"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = VkPipelineCoverageModulationStateCreateFlagsNV
-        type FieldOptional "flags"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
-        type FieldIsArray "flags"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "coverageModulationMode"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        type FieldType "coverageModulationMode"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = VkCoverageModulationModeNV
-        type FieldOptional "coverageModulationMode"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "coverageModulationMode"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
-        type FieldIsArray "coverageModulationMode"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "coverageModulationMode"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "coverageModulationMode"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "coverageModulationTableEnable"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        type FieldType "coverageModulationTableEnable"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = VkBool32
-        type FieldOptional "coverageModulationTableEnable"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "coverageModulationTableEnable"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
-        type FieldIsArray "coverageModulationTableEnable"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "coverageModulationTableEnable"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "coverageModulationTableEnable"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "coverageModulationTableCount"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        type FieldType "coverageModulationTableCount"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = Word32
-        type FieldOptional "coverageModulationTableCount"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "coverageModulationTableCount"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
-        type FieldIsArray "coverageModulationTableCount"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "coverageModulationTableCount"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "coverageModulationTableCount"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pCoverageModulationTable"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        type FieldType "pCoverageModulationTable"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = Ptr #{type float}
-        type FieldOptional "pCoverageModulationTable"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pCoverageModulationTable"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
-        type FieldIsArray "pCoverageModulationTable"
-               VkPipelineCoverageModulationStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pCoverageModulationTable"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pCoverageModulationTable"
-           VkPipelineCoverageModulationStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
-
-instance Show VkPipelineCoverageModulationStateCreateInfoNV where
-        showsPrec d x
-          = showString "VkPipelineCoverageModulationStateCreateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "coverageModulationMode = " .
-                                  showsPrec d (getField @"coverageModulationMode" x) .
-                                    showString ", " .
-                                      showString "coverageModulationTableEnable = " .
-                                        showsPrec d (getField @"coverageModulationTableEnable" x) .
-                                          showString ", " .
-                                            showString "coverageModulationTableCount = " .
-                                              showsPrec d
-                                                (getField @"coverageModulationTableCount" x)
-                                                .
-                                                showString ", " .
-                                                  showString "pCoverageModulationTable = " .
-                                                    showsPrec d
-                                                      (getField @"pCoverageModulationTable" x)
-                                                      . showChar '}'
-
--- | > typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
---   >     VkStructureType sType;
---   >     const void*                                                                      pNext;
---   >     VkPipelineCoverageToColorStateCreateFlagsNV                    flags;
---   >     VkBool32                         coverageToColorEnable;
---   >     uint32_t         coverageToColorLocation;
---   > } VkPipelineCoverageToColorStateCreateInfoNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCoverageToColorStateCreateInfoNV VkPipelineCoverageToColorStateCreateInfoNV registry at www.khronos.org>
-type VkPipelineCoverageToColorStateCreateInfoNV =
-     VulkanStruct VkPipelineCoverageToColorStateCreateInfoNV' -- ' closing tick for hsc2hs
-
-data VkPipelineCoverageToColorStateCreateInfoNV' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineCoverageToColorStateCreateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineCoverageToColorStateCreateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineCoverageToColorStateCreateInfoNV where
-        sizeOf ~_
-          = #{size VkPipelineCoverageToColorStateCreateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineCoverageToColorStateCreateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        type StructFields VkPipelineCoverageToColorStateCreateInfoNV =
-             '["sType", "pNext", "flags", "coverageToColorEnable", -- ' closing tick for hsc2hs
-               "coverageToColorLocation"]
-        type CUnionType VkPipelineCoverageToColorStateCreateInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineCoverageToColorStateCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineCoverageToColorStateCreateInfoNV =
-             '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineCoverageToColorStateCreateInfoNV where
-        type FieldType "sType" VkPipelineCoverageToColorStateCreateInfoNV =
-             VkStructureType
-        type FieldOptional "sType"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineCoverageToColorStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
-        type FieldIsArray "sType"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineCoverageToColorStateCreateInfoNV where
-        type FieldType "pNext" VkPipelineCoverageToColorStateCreateInfoNV =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineCoverageToColorStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineCoverageToColorStateCreateInfoNV where
-        type FieldType "flags" VkPipelineCoverageToColorStateCreateInfoNV =
-             VkPipelineCoverageToColorStateCreateFlagsNV
-        type FieldOptional "flags"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineCoverageToColorStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
-        type FieldIsArray "flags"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "coverageToColorEnable"
-           VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        type FieldType "coverageToColorEnable"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = VkBool32
-        type FieldOptional "coverageToColorEnable"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "coverageToColorEnable"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
-        type FieldIsArray "coverageToColorEnable"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "coverageToColorEnable"
-           VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "coverageToColorEnable"
-           VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "coverageToColorLocation"
-           VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        type FieldType "coverageToColorLocation"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = Word32
-        type FieldOptional "coverageToColorLocation"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "coverageToColorLocation"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             =
-             #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
-        type FieldIsArray "coverageToColorLocation"
-               VkPipelineCoverageToColorStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "coverageToColorLocation"
-           VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "coverageToColorLocation"
-           VkPipelineCoverageToColorStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
-
-instance Show VkPipelineCoverageToColorStateCreateInfoNV where
-        showsPrec d x
-          = showString "VkPipelineCoverageToColorStateCreateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "coverageToColorEnable = " .
-                                  showsPrec d (getField @"coverageToColorEnable" x) .
-                                    showString ", " .
-                                      showString "coverageToColorLocation = " .
-                                        showsPrec d (getField @"coverageToColorLocation" x) .
-                                          showChar '}'
-
--- | > typedef struct VkPipelineDepthStencilStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineDepthStencilStateCreateFlags    flags;
---   >     VkBool32               depthTestEnable;
---   >     VkBool32               depthWriteEnable;
---   >     VkCompareOp            depthCompareOp;
---   >     VkBool32               depthBoundsTestEnable;
---   >     VkBool32               stencilTestEnable;
---   >     VkStencilOpState       front;
---   >     VkStencilOpState       back;
---   >     float                  minDepthBounds;
---   >     float                  maxDepthBounds;
---   > } VkPipelineDepthStencilStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDepthStencilStateCreateInfo VkPipelineDepthStencilStateCreateInfo registry at www.khronos.org>
-type VkPipelineDepthStencilStateCreateInfo =
-     VulkanStruct VkPipelineDepthStencilStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineDepthStencilStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineDepthStencilStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineDepthStencilStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineDepthStencilStateCreateInfo where
-        sizeOf ~_
-          = #{size VkPipelineDepthStencilStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineDepthStencilStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineDepthStencilStateCreateInfo where
-        type StructFields VkPipelineDepthStencilStateCreateInfo =
-             '["sType", "pNext", "flags", "depthTestEnable", "depthWriteEnable", -- ' closing tick for hsc2hs
-               "depthCompareOp", "depthBoundsTestEnable", "stencilTestEnable",
-               "front", "back", "minDepthBounds", "maxDepthBounds"]
-        type CUnionType VkPipelineDepthStencilStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineDepthStencilStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineDepthStencilStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineDepthStencilStateCreateInfo where
-        type FieldType "sType" VkPipelineDepthStencilStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineDepthStencilStateCreateInfo =
-             #{offset VkPipelineDepthStencilStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineDepthStencilStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineDepthStencilStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineDepthStencilStateCreateInfo where
-        type FieldType "pNext" VkPipelineDepthStencilStateCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineDepthStencilStateCreateInfo =
-             #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineDepthStencilStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineDepthStencilStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineDepthStencilStateCreateInfo where
-        type FieldType "flags" VkPipelineDepthStencilStateCreateInfo =
-             VkPipelineDepthStencilStateCreateFlags
-        type FieldOptional "flags" VkPipelineDepthStencilStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineDepthStencilStateCreateInfo =
-             #{offset VkPipelineDepthStencilStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineDepthStencilStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineDepthStencilStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthTestEnable" VkPipelineDepthStencilStateCreateInfo
-         where
-        type FieldType "depthTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = VkBool32
-        type FieldOptional "depthTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             =
-             #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
-        type FieldIsArray "depthTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthTestEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthTestEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthWriteEnable" VkPipelineDepthStencilStateCreateInfo
-         where
-        type FieldType "depthWriteEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = VkBool32
-        type FieldOptional "depthWriteEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthWriteEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             =
-             #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
-        type FieldIsArray "depthWriteEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthWriteEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthWriteEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthCompareOp" VkPipelineDepthStencilStateCreateInfo
-         where
-        type FieldType "depthCompareOp"
-               VkPipelineDepthStencilStateCreateInfo
-             = VkCompareOp
-        type FieldOptional "depthCompareOp"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthCompareOp"
-               VkPipelineDepthStencilStateCreateInfo
-             =
-             #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
-        type FieldIsArray "depthCompareOp"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthCompareOp" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthCompareOp"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthBoundsTestEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        type FieldType "depthBoundsTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = VkBool32
-        type FieldOptional "depthBoundsTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthBoundsTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             =
-             #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
-        type FieldIsArray "depthBoundsTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthBoundsTestEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthBoundsTestEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "stencilTestEnable" VkPipelineDepthStencilStateCreateInfo
-         where
-        type FieldType "stencilTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = VkBool32
-        type FieldOptional "stencilTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "stencilTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             =
-             #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
-        type FieldIsArray "stencilTestEnable"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stencilTestEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stencilTestEnable"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "front" VkPipelineDepthStencilStateCreateInfo where
-        type FieldType "front" VkPipelineDepthStencilStateCreateInfo =
-             VkStencilOpState
-        type FieldOptional "front" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "front" VkPipelineDepthStencilStateCreateInfo =
-             #{offset VkPipelineDepthStencilStateCreateInfo, front}
-        type FieldIsArray "front" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, front}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "front" VkPipelineDepthStencilStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, front})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, front}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "front" VkPipelineDepthStencilStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, front}
-
-instance {-# OVERLAPPING #-}
-         HasField "back" VkPipelineDepthStencilStateCreateInfo where
-        type FieldType "back" VkPipelineDepthStencilStateCreateInfo =
-             VkStencilOpState
-        type FieldOptional "back" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "back" VkPipelineDepthStencilStateCreateInfo =
-             #{offset VkPipelineDepthStencilStateCreateInfo, back}
-        type FieldIsArray "back" VkPipelineDepthStencilStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, back}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "back" VkPipelineDepthStencilStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, back})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, back}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "back" VkPipelineDepthStencilStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, back}
-
-instance {-# OVERLAPPING #-}
-         HasField "minDepthBounds" VkPipelineDepthStencilStateCreateInfo
-         where
-        type FieldType "minDepthBounds"
-               VkPipelineDepthStencilStateCreateInfo
-             = #{type float}
-        type FieldOptional "minDepthBounds"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minDepthBounds"
-               VkPipelineDepthStencilStateCreateInfo
-             =
-             #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
-        type FieldIsArray "minDepthBounds"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minDepthBounds" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minDepthBounds"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxDepthBounds" VkPipelineDepthStencilStateCreateInfo
-         where
-        type FieldType "maxDepthBounds"
-               VkPipelineDepthStencilStateCreateInfo
-             = #{type float}
-        type FieldOptional "maxDepthBounds"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDepthBounds"
-               VkPipelineDepthStencilStateCreateInfo
-             =
-             #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
-        type FieldIsArray "maxDepthBounds"
-               VkPipelineDepthStencilStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxDepthBounds" VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxDepthBounds"
-           VkPipelineDepthStencilStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
-
-instance Show VkPipelineDepthStencilStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineDepthStencilStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "depthTestEnable = " .
-                                  showsPrec d (getField @"depthTestEnable" x) .
-                                    showString ", " .
-                                      showString "depthWriteEnable = " .
-                                        showsPrec d (getField @"depthWriteEnable" x) .
-                                          showString ", " .
-                                            showString "depthCompareOp = " .
-                                              showsPrec d (getField @"depthCompareOp" x) .
-                                                showString ", " .
-                                                  showString "depthBoundsTestEnable = " .
-                                                    showsPrec d
-                                                      (getField @"depthBoundsTestEnable" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "stencilTestEnable = " .
-                                                          showsPrec d
-                                                            (getField @"stencilTestEnable" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "front = " .
-                                                                showsPrec d (getField @"front" x) .
-                                                                  showString ", " .
-                                                                    showString "back = " .
-                                                                      showsPrec d
-                                                                        (getField @"back" x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "minDepthBounds = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"minDepthBounds"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "maxDepthBounds = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"maxDepthBounds"
-                                                                                       x)
-                                                                                    . showChar '}'
-
--- | > typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                                                                      pNext;
---   >     VkPipelineDiscardRectangleStateCreateFlagsEXT                    flags;
---   >     VkDiscardRectangleModeEXT                                                        discardRectangleMode;
---   >     uint32_t                                                         discardRectangleCount;
---   >     const VkRect2D* pDiscardRectangles;
---   > } VkPipelineDiscardRectangleStateCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT VkPipelineDiscardRectangleStateCreateInfoEXT registry at www.khronos.org>
-type VkPipelineDiscardRectangleStateCreateInfoEXT =
-     VulkanStruct VkPipelineDiscardRectangleStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkPipelineDiscardRectangleStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineDiscardRectangleStateCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineDiscardRectangleStateCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        sizeOf ~_
-          = #{size VkPipelineDiscardRectangleStateCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineDiscardRectangleStateCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        type StructFields VkPipelineDiscardRectangleStateCreateInfoEXT =
-             '["sType", "pNext", "flags", "discardRectangleMode", -- ' closing tick for hsc2hs
-               "discardRectangleCount", "pDiscardRectangles"]
-        type CUnionType VkPipelineDiscardRectangleStateCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineDiscardRectangleStateCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineDiscardRectangleStateCreateInfoEXT =
-             '[VkGraphicsPipelineCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT where
-        type FieldType "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             =
-             #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
-        type FieldIsArray "sType"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT where
-        type FieldType "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             =
-             #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT where
-        type FieldType "flags" VkPipelineDiscardRectangleStateCreateInfoEXT
-             = VkPipelineDiscardRectangleStateCreateFlagsEXT
-        type FieldOptional "flags"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             =
-             #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
-        type FieldIsArray "flags"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "discardRectangleMode"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        type FieldType "discardRectangleMode"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = VkDiscardRectangleModeEXT
-        type FieldOptional "discardRectangleMode"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "discardRectangleMode"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             =
-             #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
-        type FieldIsArray "discardRectangleMode"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "discardRectangleMode"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "discardRectangleMode"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "discardRectangleCount"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        type FieldType "discardRectangleCount"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = Word32
-        type FieldOptional "discardRectangleCount"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "discardRectangleCount"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             =
-             #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
-        type FieldIsArray "discardRectangleCount"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "discardRectangleCount"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "discardRectangleCount"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDiscardRectangles"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        type FieldType "pDiscardRectangles"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = Ptr VkRect2D
-        type FieldOptional "pDiscardRectangles"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pDiscardRectangles"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             =
-             #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
-        type FieldIsArray "pDiscardRectangles"
-               VkPipelineDiscardRectangleStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDiscardRectangles"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDiscardRectangles"
-           VkPipelineDiscardRectangleStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
-
-instance Show VkPipelineDiscardRectangleStateCreateInfoEXT where
-        showsPrec d x
-          = showString "VkPipelineDiscardRectangleStateCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "discardRectangleMode = " .
-                                  showsPrec d (getField @"discardRectangleMode" x) .
-                                    showString ", " .
-                                      showString "discardRectangleCount = " .
-                                        showsPrec d (getField @"discardRectangleCount" x) .
-                                          showString ", " .
-                                            showString "pDiscardRectangles = " .
-                                              showsPrec d (getField @"pDiscardRectangles" x) .
-                                                showChar '}'
-
--- | > typedef struct VkPipelineDynamicStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineDynamicStateCreateFlags    flags;
---   >     uint32_t               dynamicStateCount;
---   >     const VkDynamicState*  pDynamicStates;
---   > } VkPipelineDynamicStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDynamicStateCreateInfo VkPipelineDynamicStateCreateInfo registry at www.khronos.org>
-type VkPipelineDynamicStateCreateInfo =
-     VulkanStruct VkPipelineDynamicStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineDynamicStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineDynamicStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineDynamicStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineDynamicStateCreateInfo where
-        sizeOf ~_ = #{size VkPipelineDynamicStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineDynamicStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineDynamicStateCreateInfo where
-        type StructFields VkPipelineDynamicStateCreateInfo =
-             '["sType", "pNext", "flags", "dynamicStateCount", "pDynamicStates"] -- ' closing tick for hsc2hs
-        type CUnionType VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineDynamicStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineDynamicStateCreateInfo where
-        type FieldType "sType" VkPipelineDynamicStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineDynamicStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineDynamicStateCreateInfo =
-             #{offset VkPipelineDynamicStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDynamicStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineDynamicStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineDynamicStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineDynamicStateCreateInfo where
-        type FieldType "pNext" VkPipelineDynamicStateCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkPipelineDynamicStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineDynamicStateCreateInfo =
-             #{offset VkPipelineDynamicStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDynamicStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineDynamicStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineDynamicStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineDynamicStateCreateInfo where
-        type FieldType "flags" VkPipelineDynamicStateCreateInfo =
-             VkPipelineDynamicStateCreateFlags
-        type FieldOptional "flags" VkPipelineDynamicStateCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineDynamicStateCreateInfo =
-             #{offset VkPipelineDynamicStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineDynamicStateCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDynamicStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineDynamicStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineDynamicStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "dynamicStateCount" VkPipelineDynamicStateCreateInfo where
-        type FieldType "dynamicStateCount" VkPipelineDynamicStateCreateInfo
-             = Word32
-        type FieldOptional "dynamicStateCount"
-               VkPipelineDynamicStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dynamicStateCount"
-               VkPipelineDynamicStateCreateInfo
-             =
-             #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
-        type FieldIsArray "dynamicStateCount"
-               VkPipelineDynamicStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dynamicStateCount" VkPipelineDynamicStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dynamicStateCount" VkPipelineDynamicStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDynamicStates" VkPipelineDynamicStateCreateInfo where
-        type FieldType "pDynamicStates" VkPipelineDynamicStateCreateInfo =
-             Ptr VkDynamicState
-        type FieldOptional "pDynamicStates"
-               VkPipelineDynamicStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDynamicStates" VkPipelineDynamicStateCreateInfo
-             =
-             #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
-        type FieldIsArray "pDynamicStates" VkPipelineDynamicStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDynamicStates" VkPipelineDynamicStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDynamicStates" VkPipelineDynamicStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
-
-instance Show VkPipelineDynamicStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineDynamicStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "dynamicStateCount = " .
-                                  showsPrec d (getField @"dynamicStateCount" x) .
-                                    showString ", " .
-                                      showString "pDynamicStates = " .
-                                        showsPrec d (getField @"pDynamicStates" x) . showChar '}'
-
--- | > typedef struct VkPipelineInputAssemblyStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineInputAssemblyStateCreateFlags    flags;
---   >     VkPrimitiveTopology    topology;
---   >     VkBool32               primitiveRestartEnable;
---   > } VkPipelineInputAssemblyStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineInputAssemblyStateCreateInfo VkPipelineInputAssemblyStateCreateInfo registry at www.khronos.org>
-type VkPipelineInputAssemblyStateCreateInfo =
-     VulkanStruct VkPipelineInputAssemblyStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineInputAssemblyStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineInputAssemblyStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineInputAssemblyStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineInputAssemblyStateCreateInfo where
-        sizeOf ~_
-          = #{size VkPipelineInputAssemblyStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineInputAssemblyStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineInputAssemblyStateCreateInfo where
-        type StructFields VkPipelineInputAssemblyStateCreateInfo =
-             '["sType", "pNext", "flags", "topology", "primitiveRestartEnable"] -- ' closing tick for hsc2hs
-        type CUnionType VkPipelineInputAssemblyStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineInputAssemblyStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineInputAssemblyStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineInputAssemblyStateCreateInfo where
-        type FieldType "sType" VkPipelineInputAssemblyStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineInputAssemblyStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineInputAssemblyStateCreateInfo =
-             #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineInputAssemblyStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineInputAssemblyStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineInputAssemblyStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineInputAssemblyStateCreateInfo where
-        type FieldType "pNext" VkPipelineInputAssemblyStateCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPipelineInputAssemblyStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineInputAssemblyStateCreateInfo =
-             #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineInputAssemblyStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineInputAssemblyStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineInputAssemblyStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineInputAssemblyStateCreateInfo where
-        type FieldType "flags" VkPipelineInputAssemblyStateCreateInfo =
-             VkPipelineInputAssemblyStateCreateFlags
-        type FieldOptional "flags" VkPipelineInputAssemblyStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineInputAssemblyStateCreateInfo =
-             #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineInputAssemblyStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineInputAssemblyStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineInputAssemblyStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "topology" VkPipelineInputAssemblyStateCreateInfo where
-        type FieldType "topology" VkPipelineInputAssemblyStateCreateInfo =
-             VkPrimitiveTopology
-        type FieldOptional "topology"
-               VkPipelineInputAssemblyStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "topology" VkPipelineInputAssemblyStateCreateInfo
-             =
-             #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
-        type FieldIsArray "topology" VkPipelineInputAssemblyStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "topology" VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, topology})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "topology" VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
-
-instance {-# OVERLAPPING #-}
-         HasField "primitiveRestartEnable"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        type FieldType "primitiveRestartEnable"
-               VkPipelineInputAssemblyStateCreateInfo
-             = VkBool32
-        type FieldOptional "primitiveRestartEnable"
-               VkPipelineInputAssemblyStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "primitiveRestartEnable"
-               VkPipelineInputAssemblyStateCreateInfo
-             =
-             #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
-        type FieldIsArray "primitiveRestartEnable"
-               VkPipelineInputAssemblyStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "primitiveRestartEnable"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "primitiveRestartEnable"
-           VkPipelineInputAssemblyStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
-
-instance Show VkPipelineInputAssemblyStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineInputAssemblyStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "topology = " .
-                                  showsPrec d (getField @"topology" x) .
-                                    showString ", " .
-                                      showString "primitiveRestartEnable = " .
-                                        showsPrec d (getField @"primitiveRestartEnable" x) .
-                                          showChar '}'
-
--- | > typedef struct VkPipelineLayoutCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineLayoutCreateFlags    flags;
---   >     uint32_t               setLayoutCount;
---   >     const VkDescriptorSetLayout* pSetLayouts;
---   >     uint32_t               pushConstantRangeCount;
---   >     const VkPushConstantRange* pPushConstantRanges;
---   > } VkPipelineLayoutCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineLayoutCreateInfo VkPipelineLayoutCreateInfo registry at www.khronos.org>
-type VkPipelineLayoutCreateInfo =
-     VulkanStruct VkPipelineLayoutCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineLayoutCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineLayoutCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineLayoutCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineLayoutCreateInfo where
-        sizeOf ~_ = #{size VkPipelineLayoutCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPipelineLayoutCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineLayoutCreateInfo where
-        type StructFields VkPipelineLayoutCreateInfo =
-             '["sType", "pNext", "flags", "setLayoutCount", "pSetLayouts", -- ' closing tick for hsc2hs
-               "pushConstantRangeCount", "pPushConstantRanges"]
-        type CUnionType VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineLayoutCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineLayoutCreateInfo where
-        type FieldType "sType" VkPipelineLayoutCreateInfo = VkStructureType
-        type FieldOptional "sType" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineLayoutCreateInfo =
-             #{offset VkPipelineLayoutCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineLayoutCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineLayoutCreateInfo where
-        type FieldType "pNext" VkPipelineLayoutCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineLayoutCreateInfo =
-             #{offset VkPipelineLayoutCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineLayoutCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineLayoutCreateInfo where
-        type FieldType "flags" VkPipelineLayoutCreateInfo =
-             VkPipelineLayoutCreateFlags
-        type FieldOptional "flags" VkPipelineLayoutCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineLayoutCreateInfo =
-             #{offset VkPipelineLayoutCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineLayoutCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "setLayoutCount" VkPipelineLayoutCreateInfo where
-        type FieldType "setLayoutCount" VkPipelineLayoutCreateInfo = Word32
-        type FieldOptional "setLayoutCount" VkPipelineLayoutCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "setLayoutCount" VkPipelineLayoutCreateInfo =
-             #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
-        type FieldIsArray "setLayoutCount" VkPipelineLayoutCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "setLayoutCount" VkPipelineLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, setLayoutCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "setLayoutCount" VkPipelineLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSetLayouts" VkPipelineLayoutCreateInfo where
-        type FieldType "pSetLayouts" VkPipelineLayoutCreateInfo =
-             Ptr VkDescriptorSetLayout
-        type FieldOptional "pSetLayouts" VkPipelineLayoutCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSetLayouts" VkPipelineLayoutCreateInfo =
-             #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
-        type FieldIsArray "pSetLayouts" VkPipelineLayoutCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSetLayouts" VkPipelineLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pSetLayouts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSetLayouts" VkPipelineLayoutCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
-
-instance {-# OVERLAPPING #-}
-         HasField "pushConstantRangeCount" VkPipelineLayoutCreateInfo where
-        type FieldType "pushConstantRangeCount" VkPipelineLayoutCreateInfo
-             = Word32
-        type FieldOptional "pushConstantRangeCount"
-               VkPipelineLayoutCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pushConstantRangeCount"
-               VkPipelineLayoutCreateInfo
-             =
-             #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
-        type FieldIsArray "pushConstantRangeCount"
-               VkPipelineLayoutCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pushConstantRangeCount" VkPipelineLayoutCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pushConstantRangeCount" VkPipelineLayoutCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pPushConstantRanges" VkPipelineLayoutCreateInfo where
-        type FieldType "pPushConstantRanges" VkPipelineLayoutCreateInfo =
-             Ptr VkPushConstantRange
-        type FieldOptional "pPushConstantRanges" VkPipelineLayoutCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pPushConstantRanges" VkPipelineLayoutCreateInfo =
-             #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
-        type FieldIsArray "pPushConstantRanges" VkPipelineLayoutCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pPushConstantRanges" VkPipelineLayoutCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pPushConstantRanges" VkPipelineLayoutCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
-
-instance Show VkPipelineLayoutCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineLayoutCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "setLayoutCount = " .
-                                  showsPrec d (getField @"setLayoutCount" x) .
-                                    showString ", " .
-                                      showString "pSetLayouts = " .
-                                        showsPrec d (getField @"pSetLayouts" x) .
-                                          showString ", " .
-                                            showString "pushConstantRangeCount = " .
-                                              showsPrec d (getField @"pushConstantRangeCount" x) .
-                                                showString ", " .
-                                                  showString "pPushConstantRanges = " .
-                                                    showsPrec d (getField @"pPushConstantRanges" x)
-                                                      . showChar '}'
-
--- | > typedef struct VkPipelineMultisampleStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineMultisampleStateCreateFlags    flags;
---   >     VkSampleCountFlagBits  rasterizationSamples;
---   >     VkBool32               sampleShadingEnable;
---   >     float                  minSampleShading;
---   >     const VkSampleMask*    pSampleMask;
---   >     VkBool32               alphaToCoverageEnable;
---   >     VkBool32               alphaToOneEnable;
---   > } VkPipelineMultisampleStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineMultisampleStateCreateInfo VkPipelineMultisampleStateCreateInfo registry at www.khronos.org>
-type VkPipelineMultisampleStateCreateInfo =
-     VulkanStruct VkPipelineMultisampleStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineMultisampleStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineMultisampleStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineMultisampleStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineMultisampleStateCreateInfo where
-        sizeOf ~_
-          = #{size VkPipelineMultisampleStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineMultisampleStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineMultisampleStateCreateInfo where
-        type StructFields VkPipelineMultisampleStateCreateInfo =
-             '["sType", "pNext", "flags", "rasterizationSamples", -- ' closing tick for hsc2hs
-               "sampleShadingEnable", "minSampleShading", "pSampleMask",
-               "alphaToCoverageEnable", "alphaToOneEnable"]
-        type CUnionType VkPipelineMultisampleStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineMultisampleStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineMultisampleStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineMultisampleStateCreateInfo where
-        type FieldType "sType" VkPipelineMultisampleStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineMultisampleStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineMultisampleStateCreateInfo =
-             #{offset VkPipelineMultisampleStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineMultisampleStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineMultisampleStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineMultisampleStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineMultisampleStateCreateInfo where
-        type FieldType "pNext" VkPipelineMultisampleStateCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPipelineMultisampleStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineMultisampleStateCreateInfo =
-             #{offset VkPipelineMultisampleStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineMultisampleStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineMultisampleStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineMultisampleStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineMultisampleStateCreateInfo where
-        type FieldType "flags" VkPipelineMultisampleStateCreateInfo =
-             VkPipelineMultisampleStateCreateFlags
-        type FieldOptional "flags" VkPipelineMultisampleStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineMultisampleStateCreateInfo =
-             #{offset VkPipelineMultisampleStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineMultisampleStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineMultisampleStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineMultisampleStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "rasterizationSamples"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        type FieldType "rasterizationSamples"
-               VkPipelineMultisampleStateCreateInfo
-             = VkSampleCountFlagBits
-        type FieldOptional "rasterizationSamples"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "rasterizationSamples"
-               VkPipelineMultisampleStateCreateInfo
-             =
-             #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
-        type FieldIsArray "rasterizationSamples"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "rasterizationSamples"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "rasterizationSamples"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleShadingEnable" VkPipelineMultisampleStateCreateInfo
-         where
-        type FieldType "sampleShadingEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = VkBool32
-        type FieldOptional "sampleShadingEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleShadingEnable"
-               VkPipelineMultisampleStateCreateInfo
-             =
-             #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
-        type FieldIsArray "sampleShadingEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleShadingEnable"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleShadingEnable"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "minSampleShading" VkPipelineMultisampleStateCreateInfo
-         where
-        type FieldType "minSampleShading"
-               VkPipelineMultisampleStateCreateInfo
-             = #{type float}
-        type FieldOptional "minSampleShading"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minSampleShading"
-               VkPipelineMultisampleStateCreateInfo
-             =
-             #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
-        type FieldIsArray "minSampleShading"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minSampleShading"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minSampleShading"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSampleMask" VkPipelineMultisampleStateCreateInfo where
-        type FieldType "pSampleMask" VkPipelineMultisampleStateCreateInfo =
-             Ptr VkSampleMask
-        type FieldOptional "pSampleMask"
-               VkPipelineMultisampleStateCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pSampleMask" VkPipelineMultisampleStateCreateInfo
-             =
-             #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
-        type FieldIsArray "pSampleMask"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSampleMask" VkPipelineMultisampleStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSampleMask" VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "alphaToCoverageEnable"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        type FieldType "alphaToCoverageEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = VkBool32
-        type FieldOptional "alphaToCoverageEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "alphaToCoverageEnable"
-               VkPipelineMultisampleStateCreateInfo
-             =
-             #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
-        type FieldIsArray "alphaToCoverageEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "alphaToCoverageEnable"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "alphaToCoverageEnable"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "alphaToOneEnable" VkPipelineMultisampleStateCreateInfo
-         where
-        type FieldType "alphaToOneEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = VkBool32
-        type FieldOptional "alphaToOneEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "alphaToOneEnable"
-               VkPipelineMultisampleStateCreateInfo
-             =
-             #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
-        type FieldIsArray "alphaToOneEnable"
-               VkPipelineMultisampleStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "alphaToOneEnable"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "alphaToOneEnable"
-           VkPipelineMultisampleStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
-
-instance Show VkPipelineMultisampleStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineMultisampleStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "rasterizationSamples = " .
-                                  showsPrec d (getField @"rasterizationSamples" x) .
-                                    showString ", " .
-                                      showString "sampleShadingEnable = " .
-                                        showsPrec d (getField @"sampleShadingEnable" x) .
-                                          showString ", " .
-                                            showString "minSampleShading = " .
-                                              showsPrec d (getField @"minSampleShading" x) .
-                                                showString ", " .
-                                                  showString "pSampleMask = " .
-                                                    showsPrec d (getField @"pSampleMask" x) .
-                                                      showString ", " .
-                                                        showString "alphaToCoverageEnable = " .
-                                                          showsPrec d
-                                                            (getField @"alphaToCoverageEnable" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "alphaToOneEnable = " .
-                                                                showsPrec d
-                                                                  (getField @"alphaToOneEnable" x)
-                                                                  . showChar '}'
-
--- | > typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                                                                      pNext;
---   >     VkPipelineRasterizationConservativeStateCreateFlagsEXT           flags;
---   >     VkConservativeRasterizationModeEXT                                               conservativeRasterizationMode;
---   >     float                                                                            extraPrimitiveOverestimationSize;
---   > } VkPipelineRasterizationConservativeStateCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationConservativeStateCreateInfoEXT VkPipelineRasterizationConservativeStateCreateInfoEXT registry at www.khronos.org>
-type VkPipelineRasterizationConservativeStateCreateInfoEXT =
-     VulkanStruct VkPipelineRasterizationConservativeStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkPipelineRasterizationConservativeStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        sizeOf ~_
-          = #{size VkPipelineRasterizationConservativeStateCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineRasterizationConservativeStateCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type StructFields
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             =
-             '["sType", "pNext", "flags", "conservativeRasterizationMode", -- ' closing tick for hsc2hs
-               "extraPrimitiveOverestimationSize"]
-        type CUnionType
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = '[VkPipelineRasterizationStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type FieldType "sType"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             =
-             #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
-        type FieldIsArray "sType"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type FieldType "pNext"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             =
-             #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type FieldType "flags"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = VkPipelineRasterizationConservativeStateCreateFlagsEXT
-        type FieldOptional "flags"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             =
-             #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
-        type FieldIsArray "flags"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "conservativeRasterizationMode"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type FieldType "conservativeRasterizationMode"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = VkConservativeRasterizationModeEXT
-        type FieldOptional "conservativeRasterizationMode"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "conservativeRasterizationMode"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             =
-             #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
-        type FieldIsArray "conservativeRasterizationMode"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "conservativeRasterizationMode"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "conservativeRasterizationMode"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "extraPrimitiveOverestimationSize"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        type FieldType "extraPrimitiveOverestimationSize"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = #{type float}
-        type FieldOptional "extraPrimitiveOverestimationSize"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extraPrimitiveOverestimationSize"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             =
-             #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
-        type FieldIsArray "extraPrimitiveOverestimationSize"
-               VkPipelineRasterizationConservativeStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "extraPrimitiveOverestimationSize"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "extraPrimitiveOverestimationSize"
-           VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
-
-instance Show VkPipelineRasterizationConservativeStateCreateInfoEXT
-         where
-        showsPrec d x
-          = showString
-              "VkPipelineRasterizationConservativeStateCreateInfoEXT {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "conservativeRasterizationMode = " .
-                                  showsPrec d (getField @"conservativeRasterizationMode" x) .
-                                    showString ", " .
-                                      showString "extraPrimitiveOverestimationSize = " .
-                                        showsPrec d (getField @"extraPrimitiveOverestimationSize" x)
-                                          . showChar '}'
-
--- | > typedef struct VkPipelineRasterizationStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void* pNext;
---   >     VkPipelineRasterizationStateCreateFlags    flags;
---   >     VkBool32               depthClampEnable;
---   >     VkBool32               rasterizerDiscardEnable;
---   >     VkPolygonMode          polygonMode;
---   >     VkCullModeFlags        cullMode;
---   >     VkFrontFace            frontFace;
---   >     VkBool32               depthBiasEnable;
---   >     float                  depthBiasConstantFactor;
---   >     float                  depthBiasClamp;
---   >     float                  depthBiasSlopeFactor;
---   >     float                  lineWidth;
---   > } VkPipelineRasterizationStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationStateCreateInfo VkPipelineRasterizationStateCreateInfo registry at www.khronos.org>
-type VkPipelineRasterizationStateCreateInfo =
-     VulkanStruct VkPipelineRasterizationStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineRasterizationStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineRasterizationStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineRasterizationStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineRasterizationStateCreateInfo where
-        sizeOf ~_
-          = #{size VkPipelineRasterizationStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineRasterizationStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineRasterizationStateCreateInfo where
-        type StructFields VkPipelineRasterizationStateCreateInfo =
-             '["sType", "pNext", "flags", "depthClampEnable", -- ' closing tick for hsc2hs
-               "rasterizerDiscardEnable", "polygonMode", "cullMode", "frontFace",
-               "depthBiasEnable", "depthBiasConstantFactor", "depthBiasClamp",
-               "depthBiasSlopeFactor", "lineWidth"]
-        type CUnionType VkPipelineRasterizationStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineRasterizationStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineRasterizationStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineRasterizationStateCreateInfo where
-        type FieldType "sType" VkPipelineRasterizationStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineRasterizationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineRasterizationStateCreateInfo =
-             #{offset VkPipelineRasterizationStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineRasterizationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineRasterizationStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineRasterizationStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineRasterizationStateCreateInfo where
-        type FieldType "pNext" VkPipelineRasterizationStateCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPipelineRasterizationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineRasterizationStateCreateInfo =
-             #{offset VkPipelineRasterizationStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineRasterizationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineRasterizationStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineRasterizationStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineRasterizationStateCreateInfo where
-        type FieldType "flags" VkPipelineRasterizationStateCreateInfo =
-             VkPipelineRasterizationStateCreateFlags
-        type FieldOptional "flags" VkPipelineRasterizationStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineRasterizationStateCreateInfo =
-             #{offset VkPipelineRasterizationStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineRasterizationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineRasterizationStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineRasterizationStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthClampEnable" VkPipelineRasterizationStateCreateInfo
-         where
-        type FieldType "depthClampEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = VkBool32
-        type FieldOptional "depthClampEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthClampEnable"
-               VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
-        type FieldIsArray "depthClampEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthClampEnable"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthClampEnable"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "rasterizerDiscardEnable"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        type FieldType "rasterizerDiscardEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = VkBool32
-        type FieldOptional "rasterizerDiscardEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "rasterizerDiscardEnable"
-               VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
-        type FieldIsArray "rasterizerDiscardEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "rasterizerDiscardEnable"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "rasterizerDiscardEnable"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "polygonMode" VkPipelineRasterizationStateCreateInfo where
-        type FieldType "polygonMode" VkPipelineRasterizationStateCreateInfo
-             = VkPolygonMode
-        type FieldOptional "polygonMode"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "polygonMode"
-               VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
-        type FieldIsArray "polygonMode"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "polygonMode" VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, polygonMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "polygonMode" VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "cullMode" VkPipelineRasterizationStateCreateInfo where
-        type FieldType "cullMode" VkPipelineRasterizationStateCreateInfo =
-             VkCullModeFlags
-        type FieldOptional "cullMode"
-               VkPipelineRasterizationStateCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "cullMode" VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
-        type FieldIsArray "cullMode" VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "cullMode" VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, cullMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "cullMode" VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "frontFace" VkPipelineRasterizationStateCreateInfo where
-        type FieldType "frontFace" VkPipelineRasterizationStateCreateInfo =
-             VkFrontFace
-        type FieldOptional "frontFace"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "frontFace" VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
-        type FieldIsArray "frontFace"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "frontFace" VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, frontFace})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "frontFace" VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthBiasEnable" VkPipelineRasterizationStateCreateInfo
-         where
-        type FieldType "depthBiasEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = VkBool32
-        type FieldOptional "depthBiasEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthBiasEnable"
-               VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
-        type FieldIsArray "depthBiasEnable"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthBiasEnable"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthBiasEnable"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthBiasConstantFactor"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        type FieldType "depthBiasConstantFactor"
-               VkPipelineRasterizationStateCreateInfo
-             = #{type float}
-        type FieldOptional "depthBiasConstantFactor"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthBiasConstantFactor"
-               VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
-        type FieldIsArray "depthBiasConstantFactor"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthBiasConstantFactor"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthBiasConstantFactor"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthBiasClamp" VkPipelineRasterizationStateCreateInfo
-         where
-        type FieldType "depthBiasClamp"
-               VkPipelineRasterizationStateCreateInfo
-             = #{type float}
-        type FieldOptional "depthBiasClamp"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthBiasClamp"
-               VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
-        type FieldIsArray "depthBiasClamp"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthBiasClamp"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthBiasClamp"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthBiasSlopeFactor"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        type FieldType "depthBiasSlopeFactor"
-               VkPipelineRasterizationStateCreateInfo
-             = #{type float}
-        type FieldOptional "depthBiasSlopeFactor"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthBiasSlopeFactor"
-               VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
-        type FieldIsArray "depthBiasSlopeFactor"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthBiasSlopeFactor"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthBiasSlopeFactor"
-           VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
-
-instance {-# OVERLAPPING #-}
-         HasField "lineWidth" VkPipelineRasterizationStateCreateInfo where
-        type FieldType "lineWidth" VkPipelineRasterizationStateCreateInfo =
-             #{type float}
-        type FieldOptional "lineWidth"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "lineWidth" VkPipelineRasterizationStateCreateInfo
-             =
-             #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
-        type FieldIsArray "lineWidth"
-               VkPipelineRasterizationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "lineWidth" VkPipelineRasterizationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateCreateInfo, lineWidth})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "lineWidth" VkPipelineRasterizationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
-
-instance Show VkPipelineRasterizationStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineRasterizationStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "depthClampEnable = " .
-                                  showsPrec d (getField @"depthClampEnable" x) .
-                                    showString ", " .
-                                      showString "rasterizerDiscardEnable = " .
-                                        showsPrec d (getField @"rasterizerDiscardEnable" x) .
-                                          showString ", " .
-                                            showString "polygonMode = " .
-                                              showsPrec d (getField @"polygonMode" x) .
-                                                showString ", " .
-                                                  showString "cullMode = " .
-                                                    showsPrec d (getField @"cullMode" x) .
-                                                      showString ", " .
-                                                        showString "frontFace = " .
-                                                          showsPrec d (getField @"frontFace" x) .
-                                                            showString ", " .
-                                                              showString "depthBiasEnable = " .
-                                                                showsPrec d
-                                                                  (getField @"depthBiasEnable" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "depthBiasConstantFactor = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"depthBiasConstantFactor"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "depthBiasClamp = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"depthBiasClamp"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "depthBiasSlopeFactor = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"depthBiasSlopeFactor"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "lineWidth = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"lineWidth"
-                                                                                             x)
-                                                                                          .
-                                                                                          showChar
-                                                                                            '}'
-
--- | > typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkRasterizationOrderAMD          rasterizationOrder;
---   > } VkPipelineRasterizationStateRasterizationOrderAMD;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationStateRasterizationOrderAMD VkPipelineRasterizationStateRasterizationOrderAMD registry at www.khronos.org>
-type VkPipelineRasterizationStateRasterizationOrderAMD =
-     VulkanStruct VkPipelineRasterizationStateRasterizationOrderAMD' -- ' closing tick for hsc2hs
-
-data VkPipelineRasterizationStateRasterizationOrderAMD' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineRasterizationStateRasterizationOrderAMD where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        sizeOf ~_
-          = #{size VkPipelineRasterizationStateRasterizationOrderAMD}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineRasterizationStateRasterizationOrderAMD}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        type StructFields VkPipelineRasterizationStateRasterizationOrderAMD
-             = '["sType", "pNext", "rasterizationOrder"] -- ' closing tick for hsc2hs
-        type CUnionType VkPipelineRasterizationStateRasterizationOrderAMD =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineRasterizationStateRasterizationOrderAMD
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = '[VkPipelineRasterizationStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        type FieldType "sType"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             =
-             #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
-        type FieldIsArray "sType"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        type FieldType "pNext"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             =
-             #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "rasterizationOrder"
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        type FieldType "rasterizationOrder"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = VkRasterizationOrderAMD
-        type FieldOptional "rasterizationOrder"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "rasterizationOrder"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             =
-             #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
-        type FieldIsArray "rasterizationOrder"
-               VkPipelineRasterizationStateRasterizationOrderAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "rasterizationOrder"
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "rasterizationOrder"
-           VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
-
-instance Show VkPipelineRasterizationStateRasterizationOrderAMD
-         where
-        showsPrec d x
-          = showString "VkPipelineRasterizationStateRasterizationOrderAMD {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "rasterizationOrder = " .
-                            showsPrec d (getField @"rasterizationOrder" x) . showChar '}'
-
--- | > typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkBool32                         sampleLocationsEnable;
---   >     VkSampleLocationsInfoEXT         sampleLocationsInfo;
---   > } VkPipelineSampleLocationsStateCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineSampleLocationsStateCreateInfoEXT VkPipelineSampleLocationsStateCreateInfoEXT registry at www.khronos.org>
-type VkPipelineSampleLocationsStateCreateInfoEXT =
-     VulkanStruct VkPipelineSampleLocationsStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkPipelineSampleLocationsStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineSampleLocationsStateCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineSampleLocationsStateCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineSampleLocationsStateCreateInfoEXT where
-        sizeOf ~_
-          = #{size VkPipelineSampleLocationsStateCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineSampleLocationsStateCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        type StructFields VkPipelineSampleLocationsStateCreateInfoEXT =
-             '["sType", "pNext", "sampleLocationsEnable", "sampleLocationsInfo"] -- ' closing tick for hsc2hs
-        type CUnionType VkPipelineSampleLocationsStateCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineSampleLocationsStateCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineSampleLocationsStateCreateInfoEXT =
-             '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineSampleLocationsStateCreateInfoEXT where
-        type FieldType "sType" VkPipelineSampleLocationsStateCreateInfoEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             =
-             #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
-        type FieldIsArray "sType"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT where
-        type FieldType "pNext" VkPipelineSampleLocationsStateCreateInfoEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             =
-             #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationsEnable"
-           VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        type FieldType "sampleLocationsEnable"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = VkBool32
-        type FieldOptional "sampleLocationsEnable"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationsEnable"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             =
-             #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
-        type FieldIsArray "sampleLocationsEnable"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationsEnable"
-           VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationsEnable"
-           VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationsInfo"
-           VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        type FieldType "sampleLocationsInfo"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = VkSampleLocationsInfoEXT
-        type FieldOptional "sampleLocationsInfo"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationsInfo"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             =
-             #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
-        type FieldIsArray "sampleLocationsInfo"
-               VkPipelineSampleLocationsStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationsInfo"
-           VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationsInfo"
-           VkPipelineSampleLocationsStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
-
-instance Show VkPipelineSampleLocationsStateCreateInfoEXT where
-        showsPrec d x
-          = showString "VkPipelineSampleLocationsStateCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "sampleLocationsEnable = " .
-                            showsPrec d (getField @"sampleLocationsEnable" x) .
-                              showString ", " .
-                                showString "sampleLocationsInfo = " .
-                                  showsPrec d (getField @"sampleLocationsInfo" x) . showChar '}'
-
--- | > typedef struct VkPipelineShaderStageCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineShaderStageCreateFlags    flags;
---   >     VkShaderStageFlagBits  stage;
---   >     VkShaderModule         module;
---   >     const char*            pName;
---   >     const VkSpecializationInfo* pSpecializationInfo;
---   > } VkPipelineShaderStageCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineShaderStageCreateInfo VkPipelineShaderStageCreateInfo registry at www.khronos.org>
-type VkPipelineShaderStageCreateInfo =
-     VulkanStruct VkPipelineShaderStageCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineShaderStageCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineShaderStageCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineShaderStageCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineShaderStageCreateInfo where
-        sizeOf ~_ = #{size VkPipelineShaderStageCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineShaderStageCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineShaderStageCreateInfo where
-        type StructFields VkPipelineShaderStageCreateInfo =
-             '["sType", "pNext", "flags", "stage", "module", "pName", -- ' closing tick for hsc2hs
-               "pSpecializationInfo"]
-        type CUnionType VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineShaderStageCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineShaderStageCreateInfo where
-        type FieldType "sType" VkPipelineShaderStageCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineShaderStageCreateInfo =
-             #{offset VkPipelineShaderStageCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineShaderStageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineShaderStageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineShaderStageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineShaderStageCreateInfo where
-        type FieldType "pNext" VkPipelineShaderStageCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineShaderStageCreateInfo =
-             #{offset VkPipelineShaderStageCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineShaderStageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineShaderStageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineShaderStageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineShaderStageCreateInfo where
-        type FieldType "flags" VkPipelineShaderStageCreateInfo =
-             VkPipelineShaderStageCreateFlags
-        type FieldOptional "flags" VkPipelineShaderStageCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineShaderStageCreateInfo =
-             #{offset VkPipelineShaderStageCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineShaderStageCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineShaderStageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineShaderStageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "stage" VkPipelineShaderStageCreateInfo where
-        type FieldType "stage" VkPipelineShaderStageCreateInfo =
-             VkShaderStageFlagBits
-        type FieldOptional "stage" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "stage" VkPipelineShaderStageCreateInfo =
-             #{offset VkPipelineShaderStageCreateInfo, stage}
-        type FieldIsArray "stage" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineShaderStageCreateInfo, stage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stage" VkPipelineShaderStageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, stage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, stage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stage" VkPipelineShaderStageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, stage}
-
-instance {-# OVERLAPPING #-}
-         HasField "module" VkPipelineShaderStageCreateInfo where
-        type FieldType "module" VkPipelineShaderStageCreateInfo =
-             VkShaderModule
-        type FieldOptional "module" VkPipelineShaderStageCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "module" VkPipelineShaderStageCreateInfo =
-             #{offset VkPipelineShaderStageCreateInfo, module}
-        type FieldIsArray "module" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineShaderStageCreateInfo, module}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "module" VkPipelineShaderStageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, module})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, module}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "module" VkPipelineShaderStageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, module}
-
-instance {-# OVERLAPPING #-}
-         HasField "pName" VkPipelineShaderStageCreateInfo where
-        type FieldType "pName" VkPipelineShaderStageCreateInfo = CString
-        type FieldOptional "pName" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pName" VkPipelineShaderStageCreateInfo =
-             #{offset VkPipelineShaderStageCreateInfo, pName}
-        type FieldIsArray "pName" VkPipelineShaderStageCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineShaderStageCreateInfo, pName}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pName" VkPipelineShaderStageCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pName})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pName}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pName" VkPipelineShaderStageCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pName}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
-         where
-        type FieldType "pSpecializationInfo"
-               VkPipelineShaderStageCreateInfo
-             = Ptr VkSpecializationInfo
-        type FieldOptional "pSpecializationInfo"
-               VkPipelineShaderStageCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pSpecializationInfo"
-               VkPipelineShaderStageCreateInfo
-             =
-             #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
-        type FieldIsArray "pSpecializationInfo"
-               VkPipelineShaderStageCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSpecializationInfo" VkPipelineShaderStageCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
-
-instance Show VkPipelineShaderStageCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineShaderStageCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "stage = " .
-                                  showsPrec d (getField @"stage" x) .
-                                    showString ", " .
-                                      showString "module = " .
-                                        showsPrec d (getField @"module" x) .
-                                          showString ", " .
-                                            showString "pName = " .
-                                              showsPrec d (getField @"pName" x) .
-                                                showString ", " .
-                                                  showString "pSpecializationInfo = " .
-                                                    showsPrec d (getField @"pSpecializationInfo" x)
-                                                      . showChar '}'
-
--- | > typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkTessellationDomainOrigin    domainOrigin;
---   > } VkPipelineTessellationDomainOriginStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfo registry at www.khronos.org>
-type VkPipelineTessellationDomainOriginStateCreateInfo =
-     VulkanStruct VkPipelineTessellationDomainOriginStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineTessellationDomainOriginStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineTessellationDomainOriginStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        sizeOf ~_
-          = #{size VkPipelineTessellationDomainOriginStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineTessellationDomainOriginStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        type StructFields VkPipelineTessellationDomainOriginStateCreateInfo
-             = '["sType", "pNext", "domainOrigin"] -- ' closing tick for hsc2hs
-        type CUnionType VkPipelineTessellationDomainOriginStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineTessellationDomainOriginStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type StructExtends
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = '[VkPipelineTessellationStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        type FieldType "sType"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             =
-             #{offset VkPipelineTessellationDomainOriginStateCreateInfo, sType}
-        type FieldIsArray "sType"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType"
-           VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationDomainOriginStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        type FieldType "pNext"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             =
-             #{offset VkPipelineTessellationDomainOriginStateCreateInfo, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext"
-           VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationDomainOriginStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "domainOrigin"
-           VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        type FieldType "domainOrigin"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = VkTessellationDomainOrigin
-        type FieldOptional "domainOrigin"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "domainOrigin"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             =
-             #{offset VkPipelineTessellationDomainOriginStateCreateInfo, domainOrigin}
-        type FieldIsArray "domainOrigin"
-               VkPipelineTessellationDomainOriginStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationDomainOriginStateCreateInfo, domainOrigin}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "domainOrigin"
-           VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationDomainOriginStateCreateInfo, domainOrigin})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfo, domainOrigin}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "domainOrigin"
-           VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineTessellationDomainOriginStateCreateInfo, domainOrigin}
-
-instance Show VkPipelineTessellationDomainOriginStateCreateInfo
-         where
-        showsPrec d x
-          = showString "VkPipelineTessellationDomainOriginStateCreateInfo {"
-              .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "domainOrigin = " .
-                            showsPrec d (getField @"domainOrigin" x) . showChar '}'
-
--- | Alias for `VkPipelineTessellationDomainOriginStateCreateInfo`
-type VkPipelineTessellationDomainOriginStateCreateInfoKHR =
-     VkPipelineTessellationDomainOriginStateCreateInfo
-
--- | > typedef struct VkPipelineTessellationStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineTessellationStateCreateFlags    flags;
---   >     uint32_t               patchControlPoints;
---   > } VkPipelineTessellationStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineTessellationStateCreateInfo VkPipelineTessellationStateCreateInfo registry at www.khronos.org>
-type VkPipelineTessellationStateCreateInfo =
-     VulkanStruct VkPipelineTessellationStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineTessellationStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineTessellationStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineTessellationStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineTessellationStateCreateInfo where
-        sizeOf ~_
-          = #{size VkPipelineTessellationStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineTessellationStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineTessellationStateCreateInfo where
-        type StructFields VkPipelineTessellationStateCreateInfo =
-             '["sType", "pNext", "flags", "patchControlPoints"] -- ' closing tick for hsc2hs
-        type CUnionType VkPipelineTessellationStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineTessellationStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineTessellationStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineTessellationStateCreateInfo where
-        type FieldType "sType" VkPipelineTessellationStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineTessellationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineTessellationStateCreateInfo =
-             #{offset VkPipelineTessellationStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineTessellationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineTessellationStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineTessellationStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineTessellationStateCreateInfo where
-        type FieldType "pNext" VkPipelineTessellationStateCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPipelineTessellationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineTessellationStateCreateInfo =
-             #{offset VkPipelineTessellationStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineTessellationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineTessellationStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineTessellationStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineTessellationStateCreateInfo where
-        type FieldType "flags" VkPipelineTessellationStateCreateInfo =
-             VkPipelineTessellationStateCreateFlags
-        type FieldOptional "flags" VkPipelineTessellationStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineTessellationStateCreateInfo =
-             #{offset VkPipelineTessellationStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineTessellationStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineTessellationStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineTessellationStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "patchControlPoints" VkPipelineTessellationStateCreateInfo
-         where
-        type FieldType "patchControlPoints"
-               VkPipelineTessellationStateCreateInfo
-             = Word32
-        type FieldOptional "patchControlPoints"
-               VkPipelineTessellationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "patchControlPoints"
-               VkPipelineTessellationStateCreateInfo
-             =
-             #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
-        type FieldIsArray "patchControlPoints"
-               VkPipelineTessellationStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "patchControlPoints"
-           VkPipelineTessellationStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "patchControlPoints"
-           VkPipelineTessellationStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
-
-instance Show VkPipelineTessellationStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineTessellationStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "patchControlPoints = " .
-                                  showsPrec d (getField @"patchControlPoints" x) . showChar '}'
-
--- | > typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                         pNext;
---   >     uint32_t                            vertexBindingDivisorCount;
---   >     const VkVertexInputBindingDivisorDescriptionEXT*      pVertexBindingDivisors;
---   > } VkPipelineVertexInputDivisorStateCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineVertexInputDivisorStateCreateInfoEXT VkPipelineVertexInputDivisorStateCreateInfoEXT registry at www.khronos.org>
-type VkPipelineVertexInputDivisorStateCreateInfoEXT =
-     VulkanStruct VkPipelineVertexInputDivisorStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkPipelineVertexInputDivisorStateCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineVertexInputDivisorStateCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineVertexInputDivisorStateCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        sizeOf ~_
-          = #{size VkPipelineVertexInputDivisorStateCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineVertexInputDivisorStateCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        type StructFields VkPipelineVertexInputDivisorStateCreateInfoEXT =
-             '["sType", "pNext", "vertexBindingDivisorCount", -- ' closing tick for hsc2hs
-               "pVertexBindingDivisors"]
-        type CUnionType VkPipelineVertexInputDivisorStateCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineVertexInputDivisorStateCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineVertexInputDivisorStateCreateInfoEXT =
-             '[VkPipelineVertexInputStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        type FieldType "sType"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             =
-             #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, sType}
-        type FieldIsArray "sType"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        type FieldType "pNext"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             =
-             #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "vertexBindingDivisorCount"
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        type FieldType "vertexBindingDivisorCount"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = Word32
-        type FieldOptional "vertexBindingDivisorCount"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "vertexBindingDivisorCount"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             =
-             #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, vertexBindingDivisorCount}
-        type FieldIsArray "vertexBindingDivisorCount"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, vertexBindingDivisorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vertexBindingDivisorCount"
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, vertexBindingDivisorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, vertexBindingDivisorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vertexBindingDivisorCount"
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, vertexBindingDivisorCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pVertexBindingDivisors"
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        type FieldType "pVertexBindingDivisors"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = Ptr VkVertexInputBindingDivisorDescriptionEXT
-        type FieldOptional "pVertexBindingDivisors"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pVertexBindingDivisors"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             =
-             #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pVertexBindingDivisors}
-        type FieldIsArray "pVertexBindingDivisors"
-               VkPipelineVertexInputDivisorStateCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pVertexBindingDivisors}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pVertexBindingDivisors"
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pVertexBindingDivisors})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pVertexBindingDivisors}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pVertexBindingDivisors"
-           VkPipelineVertexInputDivisorStateCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pVertexBindingDivisors}
-
-instance Show VkPipelineVertexInputDivisorStateCreateInfoEXT where
-        showsPrec d x
-          = showString "VkPipelineVertexInputDivisorStateCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "vertexBindingDivisorCount = " .
-                            showsPrec d (getField @"vertexBindingDivisorCount" x) .
-                              showString ", " .
-                                showString "pVertexBindingDivisors = " .
-                                  showsPrec d (getField @"pVertexBindingDivisors" x) . showChar '}'
-
--- | > typedef struct VkPipelineVertexInputStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineVertexInputStateCreateFlags    flags;
---   >     uint32_t               vertexBindingDescriptionCount;
---   >     const VkVertexInputBindingDescription* pVertexBindingDescriptions;
---   >     uint32_t               vertexAttributeDescriptionCount;
---   >     const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
---   > } VkPipelineVertexInputStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineVertexInputStateCreateInfo VkPipelineVertexInputStateCreateInfo registry at www.khronos.org>
-type VkPipelineVertexInputStateCreateInfo =
-     VulkanStruct VkPipelineVertexInputStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineVertexInputStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineVertexInputStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineVertexInputStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineVertexInputStateCreateInfo where
-        sizeOf ~_
-          = #{size VkPipelineVertexInputStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineVertexInputStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineVertexInputStateCreateInfo where
-        type StructFields VkPipelineVertexInputStateCreateInfo =
-             '["sType", "pNext", "flags", "vertexBindingDescriptionCount", -- ' closing tick for hsc2hs
-               "pVertexBindingDescriptions", "vertexAttributeDescriptionCount",
-               "pVertexAttributeDescriptions"]
-        type CUnionType VkPipelineVertexInputStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineVertexInputStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineVertexInputStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineVertexInputStateCreateInfo where
-        type FieldType "sType" VkPipelineVertexInputStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineVertexInputStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineVertexInputStateCreateInfo =
-             #{offset VkPipelineVertexInputStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineVertexInputStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineVertexInputStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineVertexInputStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineVertexInputStateCreateInfo where
-        type FieldType "pNext" VkPipelineVertexInputStateCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkPipelineVertexInputStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineVertexInputStateCreateInfo =
-             #{offset VkPipelineVertexInputStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineVertexInputStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineVertexInputStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineVertexInputStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineVertexInputStateCreateInfo where
-        type FieldType "flags" VkPipelineVertexInputStateCreateInfo =
-             VkPipelineVertexInputStateCreateFlags
-        type FieldOptional "flags" VkPipelineVertexInputStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineVertexInputStateCreateInfo =
-             #{offset VkPipelineVertexInputStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineVertexInputStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineVertexInputStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineVertexInputStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "vertexBindingDescriptionCount"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        type FieldType "vertexBindingDescriptionCount"
-               VkPipelineVertexInputStateCreateInfo
-             = Word32
-        type FieldOptional "vertexBindingDescriptionCount"
-               VkPipelineVertexInputStateCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "vertexBindingDescriptionCount"
-               VkPipelineVertexInputStateCreateInfo
-             =
-             #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
-        type FieldIsArray "vertexBindingDescriptionCount"
-               VkPipelineVertexInputStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vertexBindingDescriptionCount"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vertexBindingDescriptionCount"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pVertexBindingDescriptions"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        type FieldType "pVertexBindingDescriptions"
-               VkPipelineVertexInputStateCreateInfo
-             = Ptr VkVertexInputBindingDescription
-        type FieldOptional "pVertexBindingDescriptions"
-               VkPipelineVertexInputStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pVertexBindingDescriptions"
-               VkPipelineVertexInputStateCreateInfo
-             =
-             #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
-        type FieldIsArray "pVertexBindingDescriptions"
-               VkPipelineVertexInputStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pVertexBindingDescriptions"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pVertexBindingDescriptions"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
-
-instance {-# OVERLAPPING #-}
-         HasField "vertexAttributeDescriptionCount"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        type FieldType "vertexAttributeDescriptionCount"
-               VkPipelineVertexInputStateCreateInfo
-             = Word32
-        type FieldOptional "vertexAttributeDescriptionCount"
-               VkPipelineVertexInputStateCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "vertexAttributeDescriptionCount"
-               VkPipelineVertexInputStateCreateInfo
-             =
-             #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
-        type FieldIsArray "vertexAttributeDescriptionCount"
-               VkPipelineVertexInputStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "vertexAttributeDescriptionCount"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "vertexAttributeDescriptionCount"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pVertexAttributeDescriptions"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        type FieldType "pVertexAttributeDescriptions"
-               VkPipelineVertexInputStateCreateInfo
-             = Ptr VkVertexInputAttributeDescription
-        type FieldOptional "pVertexAttributeDescriptions"
-               VkPipelineVertexInputStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pVertexAttributeDescriptions"
-               VkPipelineVertexInputStateCreateInfo
-             =
-             #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
-        type FieldIsArray "pVertexAttributeDescriptions"
-               VkPipelineVertexInputStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pVertexAttributeDescriptions"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pVertexAttributeDescriptions"
-           VkPipelineVertexInputStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
-
-instance Show VkPipelineVertexInputStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineVertexInputStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "vertexBindingDescriptionCount = " .
-                                  showsPrec d (getField @"vertexBindingDescriptionCount" x) .
-                                    showString ", " .
-                                      showString "pVertexBindingDescriptions = " .
-                                        showsPrec d (getField @"pVertexBindingDescriptions" x) .
-                                          showString ", " .
-                                            showString "vertexAttributeDescriptionCount = " .
-                                              showsPrec d
-                                                (getField @"vertexAttributeDescriptionCount" x)
-                                                .
-                                                showString ", " .
-                                                  showString "pVertexAttributeDescriptions = " .
-                                                    showsPrec d
-                                                      (getField @"pVertexAttributeDescriptions" x)
-                                                      . showChar '}'
-
--- | > typedef struct VkPipelineViewportStateCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineViewportStateCreateFlags    flags;
---   >     uint32_t               viewportCount;
---   >     const VkViewport*      pViewports;
---   >     uint32_t               scissorCount;
---   >     const VkRect2D*        pScissors;
---   > } VkPipelineViewportStateCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportStateCreateInfo VkPipelineViewportStateCreateInfo registry at www.khronos.org>
-type VkPipelineViewportStateCreateInfo =
-     VulkanStruct VkPipelineViewportStateCreateInfo' -- ' closing tick for hsc2hs
-
-data VkPipelineViewportStateCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineViewportStateCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineViewportStateCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineViewportStateCreateInfo where
-        sizeOf ~_ = #{size VkPipelineViewportStateCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineViewportStateCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineViewportStateCreateInfo where
-        type StructFields VkPipelineViewportStateCreateInfo =
-             '["sType", "pNext", "flags", "viewportCount", "pViewports", -- ' closing tick for hsc2hs
-               "scissorCount", "pScissors"]
-        type CUnionType VkPipelineViewportStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineViewportStateCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineViewportStateCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineViewportStateCreateInfo where
-        type FieldType "sType" VkPipelineViewportStateCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkPipelineViewportStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineViewportStateCreateInfo =
-             #{offset VkPipelineViewportStateCreateInfo, sType}
-        type FieldIsArray "sType" VkPipelineViewportStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineViewportStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineViewportStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineViewportStateCreateInfo where
-        type FieldType "pNext" VkPipelineViewportStateCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkPipelineViewportStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineViewportStateCreateInfo =
-             #{offset VkPipelineViewportStateCreateInfo, pNext}
-        type FieldIsArray "pNext" VkPipelineViewportStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineViewportStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineViewportStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineViewportStateCreateInfo where
-        type FieldType "flags" VkPipelineViewportStateCreateInfo =
-             VkPipelineViewportStateCreateFlags
-        type FieldOptional "flags" VkPipelineViewportStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineViewportStateCreateInfo =
-             #{offset VkPipelineViewportStateCreateInfo, flags}
-        type FieldIsArray "flags" VkPipelineViewportStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineViewportStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineViewportStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "viewportCount" VkPipelineViewportStateCreateInfo where
-        type FieldType "viewportCount" VkPipelineViewportStateCreateInfo =
-             Word32
-        type FieldOptional "viewportCount"
-               VkPipelineViewportStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "viewportCount" VkPipelineViewportStateCreateInfo
-             =
-             #{offset VkPipelineViewportStateCreateInfo, viewportCount}
-        type FieldIsArray "viewportCount" VkPipelineViewportStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportStateCreateInfo, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "viewportCount" VkPipelineViewportStateCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, viewportCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "viewportCount" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewports" VkPipelineViewportStateCreateInfo where
-        type FieldType "pViewports" VkPipelineViewportStateCreateInfo =
-             Ptr VkViewport
-        type FieldOptional "pViewports" VkPipelineViewportStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pViewports" VkPipelineViewportStateCreateInfo =
-             #{offset VkPipelineViewportStateCreateInfo, pViewports}
-        type FieldIsArray "pViewports" VkPipelineViewportStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportStateCreateInfo, pViewports}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pViewports" VkPipelineViewportStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pViewports})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pViewports}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pViewports" VkPipelineViewportStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pViewports}
-
-instance {-# OVERLAPPING #-}
-         HasField "scissorCount" VkPipelineViewportStateCreateInfo where
-        type FieldType "scissorCount" VkPipelineViewportStateCreateInfo =
-             Word32
-        type FieldOptional "scissorCount" VkPipelineViewportStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "scissorCount" VkPipelineViewportStateCreateInfo =
-             #{offset VkPipelineViewportStateCreateInfo, scissorCount}
-        type FieldIsArray "scissorCount" VkPipelineViewportStateCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportStateCreateInfo, scissorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "scissorCount" VkPipelineViewportStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, scissorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, scissorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "scissorCount" VkPipelineViewportStateCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, scissorCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pScissors" VkPipelineViewportStateCreateInfo where
-        type FieldType "pScissors" VkPipelineViewportStateCreateInfo =
-             Ptr VkRect2D
-        type FieldOptional "pScissors" VkPipelineViewportStateCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pScissors" VkPipelineViewportStateCreateInfo =
-             #{offset VkPipelineViewportStateCreateInfo, pScissors}
-        type FieldIsArray "pScissors" VkPipelineViewportStateCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportStateCreateInfo, pScissors}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pScissors" VkPipelineViewportStateCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportStateCreateInfo, pScissors})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportStateCreateInfo, pScissors}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pScissors" VkPipelineViewportStateCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportStateCreateInfo, pScissors}
-
-instance Show VkPipelineViewportStateCreateInfo where
-        showsPrec d x
-          = showString "VkPipelineViewportStateCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "viewportCount = " .
-                                  showsPrec d (getField @"viewportCount" x) .
-                                    showString ", " .
-                                      showString "pViewports = " .
-                                        showsPrec d (getField @"pViewports" x) .
-                                          showString ", " .
-                                            showString "scissorCount = " .
-                                              showsPrec d (getField @"scissorCount" x) .
-                                                showString ", " .
-                                                  showString "pScissors = " .
-                                                    showsPrec d (getField @"pScissors" x) .
-                                                      showChar '}'
-
--- | > typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
---   >     uint32_t               viewportCount;
---   >     const VkViewportSwizzleNV*      pViewportSwizzles;
---   > } VkPipelineViewportSwizzleStateCreateInfoNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportSwizzleStateCreateInfoNV VkPipelineViewportSwizzleStateCreateInfoNV registry at www.khronos.org>
-type VkPipelineViewportSwizzleStateCreateInfoNV =
-     VulkanStruct VkPipelineViewportSwizzleStateCreateInfoNV' -- ' closing tick for hsc2hs
-
-data VkPipelineViewportSwizzleStateCreateInfoNV' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineViewportSwizzleStateCreateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineViewportSwizzleStateCreateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineViewportSwizzleStateCreateInfoNV where
-        sizeOf ~_
-          = #{size VkPipelineViewportSwizzleStateCreateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineViewportSwizzleStateCreateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        type StructFields VkPipelineViewportSwizzleStateCreateInfoNV =
-             '["sType", "pNext", "flags", "viewportCount", "pViewportSwizzles"] -- ' closing tick for hsc2hs
-        type CUnionType VkPipelineViewportSwizzleStateCreateInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineViewportSwizzleStateCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineViewportSwizzleStateCreateInfoNV =
-             '[VkPipelineViewportStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineViewportSwizzleStateCreateInfoNV where
-        type FieldType "sType" VkPipelineViewportSwizzleStateCreateInfoNV =
-             VkStructureType
-        type FieldOptional "sType"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPipelineViewportSwizzleStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
-        type FieldIsArray "sType"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV where
-        type FieldType "pNext" VkPipelineViewportSwizzleStateCreateInfoNV =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPipelineViewportSwizzleStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkPipelineViewportSwizzleStateCreateInfoNV where
-        type FieldType "flags" VkPipelineViewportSwizzleStateCreateInfoNV =
-             VkPipelineViewportSwizzleStateCreateFlagsNV
-        type FieldOptional "flags"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkPipelineViewportSwizzleStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
-        type FieldIsArray "flags"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "viewportCount" VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        type FieldType "viewportCount"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = Word32
-        type FieldOptional "viewportCount"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "viewportCount"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
-        type FieldIsArray "viewportCount"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "viewportCount"
-           VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "viewportCount"
-           VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewportSwizzles"
-           VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        type FieldType "pViewportSwizzles"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = Ptr VkViewportSwizzleNV
-        type FieldOptional "pViewportSwizzles"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pViewportSwizzles"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
-        type FieldIsArray "pViewportSwizzles"
-               VkPipelineViewportSwizzleStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pViewportSwizzles"
-           VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pViewportSwizzles"
-           VkPipelineViewportSwizzleStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
-
-instance Show VkPipelineViewportSwizzleStateCreateInfoNV where
-        showsPrec d x
-          = showString "VkPipelineViewportSwizzleStateCreateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "viewportCount = " .
-                                  showsPrec d (getField @"viewportCount" x) .
-                                    showString ", " .
-                                      showString "pViewportSwizzles = " .
-                                        showsPrec d (getField @"pViewportSwizzles" x) . showChar '}'
-
--- | > typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkBool32               viewportWScalingEnable;
---   >     uint32_t               viewportCount;
---   >     const VkViewportWScalingNV*      pViewportWScalings;
---   > } VkPipelineViewportWScalingStateCreateInfoNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportWScalingStateCreateInfoNV VkPipelineViewportWScalingStateCreateInfoNV registry at www.khronos.org>
-type VkPipelineViewportWScalingStateCreateInfoNV =
-     VulkanStruct VkPipelineViewportWScalingStateCreateInfoNV' -- ' closing tick for hsc2hs
-
-data VkPipelineViewportWScalingStateCreateInfoNV' -- ' closing tick for hsc2hs
-
-instance Eq VkPipelineViewportWScalingStateCreateInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPipelineViewportWScalingStateCreateInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPipelineViewportWScalingStateCreateInfoNV where
-        sizeOf ~_
-          = #{size VkPipelineViewportWScalingStateCreateInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkPipelineViewportWScalingStateCreateInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        type StructFields VkPipelineViewportWScalingStateCreateInfoNV =
-             '["sType", "pNext", "viewportWScalingEnable", "viewportCount", -- ' closing tick for hsc2hs
-               "pViewportWScalings"]
-        type CUnionType VkPipelineViewportWScalingStateCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPipelineViewportWScalingStateCreateInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkPipelineViewportWScalingStateCreateInfoNV =
-             '[VkPipelineViewportStateCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPipelineViewportWScalingStateCreateInfoNV where
-        type FieldType "sType" VkPipelineViewportWScalingStateCreateInfoNV
-             = VkStructureType
-        type FieldOptional "sType"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
-        type FieldIsArray "sType"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPipelineViewportWScalingStateCreateInfoNV where
-        type FieldType "pNext" VkPipelineViewportWScalingStateCreateInfoNV
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
-        type FieldIsArray "pNext"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "viewportWScalingEnable"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        type FieldType "viewportWScalingEnable"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = VkBool32
-        type FieldOptional "viewportWScalingEnable"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "viewportWScalingEnable"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
-        type FieldIsArray "viewportWScalingEnable"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "viewportWScalingEnable"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "viewportWScalingEnable"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "viewportCount"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        type FieldType "viewportCount"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = Word32
-        type FieldOptional "viewportCount"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "viewportCount"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
-        type FieldIsArray "viewportCount"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "viewportCount"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "viewportCount"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewportWScalings"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        type FieldType "pViewportWScalings"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = Ptr VkViewportWScalingNV
-        type FieldOptional "pViewportWScalings"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pViewportWScalings"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             =
-             #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
-        type FieldIsArray "pViewportWScalings"
-               VkPipelineViewportWScalingStateCreateInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pViewportWScalings"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pViewportWScalings"
-           VkPipelineViewportWScalingStateCreateInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
-
-instance Show VkPipelineViewportWScalingStateCreateInfoNV where
-        showsPrec d x
-          = showString "VkPipelineViewportWScalingStateCreateInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "viewportWScalingEnable = " .
-                            showsPrec d (getField @"viewportWScalingEnable" x) .
-                              showString ", " .
-                                showString "viewportCount = " .
-                                  showsPrec d (getField @"viewportCount" x) .
-                                    showString ", " .
-                                      showString "pViewportWScalings = " .
-                                        showsPrec d (getField @"pViewportWScalings" x) .
-                                          showChar '}'
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Pipeline
+       (VkGraphicsPipelineCreateInfo, VkPipelineCacheCreateInfo,
+        VkPipelineColorBlendAdvancedStateCreateInfoEXT,
+        VkPipelineColorBlendAttachmentState,
+        VkPipelineColorBlendStateCreateInfo,
+        VkPipelineCoverageModulationStateCreateInfoNV,
+        VkPipelineCoverageToColorStateCreateInfoNV,
+        VkPipelineDepthStencilStateCreateInfo,
+        VkPipelineDiscardRectangleStateCreateInfoEXT,
+        VkPipelineDynamicStateCreateInfo,
+        VkPipelineInputAssemblyStateCreateInfo, VkPipelineLayoutCreateInfo,
+        VkPipelineMultisampleStateCreateInfo,
+        VkPipelineRasterizationConservativeStateCreateInfoEXT,
+        VkPipelineRasterizationStateCreateInfo,
+        VkPipelineRasterizationStateRasterizationOrderAMD,
+        VkPipelineSampleLocationsStateCreateInfoEXT,
+        VkPipelineShaderStageCreateInfo,
+        VkPipelineTessellationDomainOriginStateCreateInfo,
+        VkPipelineTessellationDomainOriginStateCreateInfoKHR,
+        VkPipelineTessellationStateCreateInfo,
+        VkPipelineVertexInputDivisorStateCreateInfoEXT,
+        VkPipelineVertexInputStateCreateInfo,
+        VkPipelineViewportStateCreateInfo,
+        VkPipelineViewportSwizzleStateCreateInfoNV,
+        VkPipelineViewportWScalingStateCreateInfoNV)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes                             (VkBool32,
+                                                                    VkSampleMask)
+import Graphics.Vulkan.Types.Bitmasks                              (VkPipelineCacheCreateFlags,
+                                                                    VkPipelineColorBlendStateCreateFlags,
+                                                                    VkPipelineCoverageModulationStateCreateFlagsNV,
+                                                                    VkPipelineCoverageToColorStateCreateFlagsNV,
+                                                                    VkPipelineDepthStencilStateCreateFlags,
+                                                                    VkPipelineDiscardRectangleStateCreateFlagsEXT,
+                                                                    VkPipelineDynamicStateCreateFlags,
+                                                                    VkPipelineInputAssemblyStateCreateFlags,
+                                                                    VkPipelineLayoutCreateFlags,
+                                                                    VkPipelineMultisampleStateCreateFlags,
+                                                                    VkPipelineRasterizationConservativeStateCreateFlagsEXT,
+                                                                    VkPipelineRasterizationStateCreateFlags,
+                                                                    VkPipelineShaderStageCreateFlags,
+                                                                    VkPipelineTessellationStateCreateFlags,
+                                                                    VkPipelineVertexInputStateCreateFlags,
+                                                                    VkPipelineViewportStateCreateFlags,
+                                                                    VkPipelineViewportSwizzleStateCreateFlagsNV)
+import Graphics.Vulkan.Types.Enum.Blend                            (VkBlendFactor,
+                                                                    VkBlendOp,
+                                                                    VkBlendOverlapEXT)
+import Graphics.Vulkan.Types.Enum.Color                            (VkColorComponentFlags)
+import Graphics.Vulkan.Types.Enum.CompareOp                        (VkCompareOp)
+import Graphics.Vulkan.Types.Enum.ConservativeRasterizationModeEXT (VkConservativeRasterizationModeEXT)
+import Graphics.Vulkan.Types.Enum.CoverageModulationModeNV         (VkCoverageModulationModeNV)
+import Graphics.Vulkan.Types.Enum.CullModeFlags                    (VkCullModeFlags)
+import Graphics.Vulkan.Types.Enum.DiscardRectangleModeEXT          (VkDiscardRectangleModeEXT)
+import Graphics.Vulkan.Types.Enum.DynamicState                     (VkDynamicState)
+import Graphics.Vulkan.Types.Enum.FrontFace                        (VkFrontFace)
+import Graphics.Vulkan.Types.Enum.LogicOp                          (VkLogicOp)
+import Graphics.Vulkan.Types.Enum.Pipeline                         (VkPipelineCreateFlags)
+import Graphics.Vulkan.Types.Enum.PolygonMode                      (VkPolygonMode)
+import Graphics.Vulkan.Types.Enum.PrimitiveTopology                (VkPrimitiveTopology)
+import Graphics.Vulkan.Types.Enum.RasterizationOrderAMD            (VkRasterizationOrderAMD)
+import Graphics.Vulkan.Types.Enum.SampleCountFlags                 (VkSampleCountFlagBits)
+import Graphics.Vulkan.Types.Enum.Shader                           (VkShaderStageFlagBits)
+import Graphics.Vulkan.Types.Enum.StructureType                    (VkStructureType)
+import Graphics.Vulkan.Types.Enum.TessellationDomainOrigin         (VkTessellationDomainOrigin)
+import Graphics.Vulkan.Types.Handles                               (VkDescriptorSetLayout,
+                                                                    VkPipeline,
+                                                                    VkPipelineLayout,
+                                                                    VkRenderPass,
+                                                                    VkShaderModule)
+import Graphics.Vulkan.Types.Struct.PushConstantRange              (VkPushConstantRange)
+import Graphics.Vulkan.Types.Struct.Rect                           (VkRect2D)
+import Graphics.Vulkan.Types.Struct.SampleLocation                 (VkSampleLocationsInfoEXT)
+import Graphics.Vulkan.Types.Struct.Specialization                 (VkSpecializationInfo)
+import Graphics.Vulkan.Types.Struct.StencilOpState                 (VkStencilOpState)
+import Graphics.Vulkan.Types.Struct.VertexInput                    (VkVertexInputAttributeDescription,
+                                                                    VkVertexInputBindingDescription,
+                                                                    VkVertexInputBindingDivisorDescriptionEXT)
+import Graphics.Vulkan.Types.Struct.Viewport                       (VkViewport, VkViewportSwizzleNV,
+                                                                    VkViewportWScalingNV)
+
+-- | > typedef struct VkGraphicsPipelineCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineCreateFlags  flags;
+--   >     uint32_t               stageCount;
+--   >     const VkPipelineShaderStageCreateInfo* pStages;
+--   >     const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
+--   >     const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
+--   >     const VkPipelineTessellationStateCreateInfo* pTessellationState;
+--   >     const VkPipelineViewportStateCreateInfo* pViewportState;
+--   >     const VkPipelineRasterizationStateCreateInfo* pRasterizationState;
+--   >     const VkPipelineMultisampleStateCreateInfo* pMultisampleState;
+--   >     const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
+--   >     const VkPipelineColorBlendStateCreateInfo* pColorBlendState;
+--   >     const VkPipelineDynamicStateCreateInfo* pDynamicState;
+--   >     VkPipelineLayout       layout;
+--   >     VkRenderPass           renderPass;
+--   >     uint32_t               subpass;
+--   >     VkPipeline      basePipelineHandle;
+--   >     int32_t                basePipelineIndex;
+--   > } VkGraphicsPipelineCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkGraphicsPipelineCreateInfo VkGraphicsPipelineCreateInfo registry at www.khronos.org>
+type VkGraphicsPipelineCreateInfo =
+     VkStruct VkGraphicsPipelineCreateInfo' -- ' closing tick for hsc2hs
+
+data VkGraphicsPipelineCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkGraphicsPipelineCreateInfo where
+    type StructRep VkGraphicsPipelineCreateInfo =
+         'StructMeta "VkGraphicsPipelineCreateInfo" -- ' closing tick for hsc2hs
+           VkGraphicsPipelineCreateInfo
+           #{size VkGraphicsPipelineCreateInfo}
+           #{alignment VkGraphicsPipelineCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkGraphicsPipelineCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkGraphicsPipelineCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineCreateFlags 'True 
+                                                             #{offset VkGraphicsPipelineCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stageCount" Word32 'False 
+                                                    #{offset VkGraphicsPipelineCreateInfo, stageCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pStages" (Ptr VkPipelineShaderStageCreateInfo) 'False
+                #{offset VkGraphicsPipelineCreateInfo, pStages}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pVertexInputState" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineVertexInputStateCreateInfo)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pVertexInputState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pInputAssemblyState" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineInputAssemblyStateCreateInfo)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pInputAssemblyState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pTessellationState" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineTessellationStateCreateInfo)
+                'True -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pTessellationState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pViewportState" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineViewportStateCreateInfo)
+                'True -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pViewportState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pRasterizationState" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineRasterizationStateCreateInfo)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pRasterizationState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pMultisampleState" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineMultisampleStateCreateInfo)
+                'True -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pMultisampleState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDepthStencilState" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineDepthStencilStateCreateInfo)
+                'True -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pDepthStencilState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pColorBlendState" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineColorBlendStateCreateInfo)
+                'True -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pColorBlendState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDynamicState" (Ptr VkPipelineDynamicStateCreateInfo) -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkGraphicsPipelineCreateInfo, pDynamicState}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "layout" VkPipelineLayout 'False 
+                                                          #{offset VkGraphicsPipelineCreateInfo, layout}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "renderPass" VkRenderPass 'False 
+                                                          #{offset VkGraphicsPipelineCreateInfo, renderPass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subpass" Word32 'False 
+                                                 #{offset VkGraphicsPipelineCreateInfo, subpass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "basePipelineHandle" VkPipeline 'True 
+                                                               #{offset VkGraphicsPipelineCreateInfo, basePipelineHandle}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "basePipelineIndex" Int32 'False 
+                                                          #{offset VkGraphicsPipelineCreateInfo, basePipelineIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineCacheCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineCacheCreateFlags    flags;
+--   >     size_t                 initialDataSize;
+--   >     const void*            pInitialData;
+--   > } VkPipelineCacheCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCacheCreateInfo VkPipelineCacheCreateInfo registry at www.khronos.org>
+type VkPipelineCacheCreateInfo =
+     VkStruct VkPipelineCacheCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineCacheCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineCacheCreateInfo where
+    type StructRep VkPipelineCacheCreateInfo =
+         'StructMeta "VkPipelineCacheCreateInfo" VkPipelineCacheCreateInfo -- ' closing tick for hsc2hs
+           #{size VkPipelineCacheCreateInfo}
+           #{alignment VkPipelineCacheCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineCacheCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineCacheCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineCacheCreateFlags 'True 
+                                                                  #{offset VkPipelineCacheCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "initialDataSize" CSize 'True 
+                                                       #{offset VkPipelineCacheCreateInfo, initialDataSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pInitialData" (Ptr Void) 'False 
+                                                          #{offset VkPipelineCacheCreateInfo, pInitialData}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkBool32               srcPremultiplied;
+--   >     VkBool32               dstPremultiplied;
+--   >     VkBlendOverlapEXT      blendOverlap;
+--   > } VkPipelineColorBlendAdvancedStateCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendAdvancedStateCreateInfoEXT VkPipelineColorBlendAdvancedStateCreateInfoEXT registry at www.khronos.org>
+type VkPipelineColorBlendAdvancedStateCreateInfoEXT =
+     VkStruct VkPipelineColorBlendAdvancedStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkPipelineColorBlendAdvancedStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPipelineColorBlendAdvancedStateCreateInfoEXT
+         where
+    type StructRep VkPipelineColorBlendAdvancedStateCreateInfoEXT =
+         'StructMeta "VkPipelineColorBlendAdvancedStateCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkPipelineColorBlendAdvancedStateCreateInfoEXT
+           #{size VkPipelineColorBlendAdvancedStateCreateInfoEXT}
+           #{alignment VkPipelineColorBlendAdvancedStateCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcPremultiplied" VkBool32 'False 
+                                                            #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, srcPremultiplied}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstPremultiplied" VkBool32 'False 
+                                                            #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, dstPremultiplied}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "blendOverlap" VkBlendOverlapEXT 'False 
+                                                                 #{offset VkPipelineColorBlendAdvancedStateCreateInfoEXT, blendOverlap}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineColorBlendStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineColorBlendAttachmentState {
+--   >     VkBool32               blendEnable;
+--   >     VkBlendFactor          srcColorBlendFactor;
+--   >     VkBlendFactor          dstColorBlendFactor;
+--   >     VkBlendOp              colorBlendOp;
+--   >     VkBlendFactor          srcAlphaBlendFactor;
+--   >     VkBlendFactor          dstAlphaBlendFactor;
+--   >     VkBlendOp              alphaBlendOp;
+--   >     VkColorComponentFlags  colorWriteMask;
+--   > } VkPipelineColorBlendAttachmentState;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendAttachmentState VkPipelineColorBlendAttachmentState registry at www.khronos.org>
+type VkPipelineColorBlendAttachmentState =
+     VkStruct VkPipelineColorBlendAttachmentState' -- ' closing tick for hsc2hs
+
+data VkPipelineColorBlendAttachmentState' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineColorBlendAttachmentState where
+    type StructRep VkPipelineColorBlendAttachmentState =
+         'StructMeta "VkPipelineColorBlendAttachmentState" -- ' closing tick for hsc2hs
+           VkPipelineColorBlendAttachmentState
+           #{size VkPipelineColorBlendAttachmentState}
+           #{alignment VkPipelineColorBlendAttachmentState}
+           '[('FieldMeta "blendEnable" VkBool32 'False  -- ' closing tick for hsc2hs
+                                                       #{offset VkPipelineColorBlendAttachmentState, blendEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcColorBlendFactor" VkBlendFactor 'False 
+                                                                    #{offset VkPipelineColorBlendAttachmentState, srcColorBlendFactor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstColorBlendFactor" VkBlendFactor 'False 
+                                                                    #{offset VkPipelineColorBlendAttachmentState, dstColorBlendFactor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "colorBlendOp" VkBlendOp 'False 
+                                                         #{offset VkPipelineColorBlendAttachmentState, colorBlendOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcAlphaBlendFactor" VkBlendFactor 'False 
+                                                                    #{offset VkPipelineColorBlendAttachmentState, srcAlphaBlendFactor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstAlphaBlendFactor" VkBlendFactor 'False 
+                                                                    #{offset VkPipelineColorBlendAttachmentState, dstAlphaBlendFactor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "alphaBlendOp" VkBlendOp 'False 
+                                                         #{offset VkPipelineColorBlendAttachmentState, alphaBlendOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "colorWriteMask" VkColorComponentFlags 'True 
+                                                                      #{offset VkPipelineColorBlendAttachmentState, colorWriteMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineColorBlendStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineColorBlendStateCreateFlags    flags;
+--   >     VkBool32               logicOpEnable;
+--   >     VkLogicOp              logicOp;
+--   >     uint32_t               attachmentCount;
+--   >     const VkPipelineColorBlendAttachmentState* pAttachments;
+--   >     float                  blendConstants[4];
+--   > } VkPipelineColorBlendStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineColorBlendStateCreateInfo VkPipelineColorBlendStateCreateInfo registry at www.khronos.org>
+type VkPipelineColorBlendStateCreateInfo =
+     VkStruct VkPipelineColorBlendStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineColorBlendStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineColorBlendStateCreateInfo where
+    type StructRep VkPipelineColorBlendStateCreateInfo =
+         'StructMeta "VkPipelineColorBlendStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineColorBlendStateCreateInfo
+           #{size VkPipelineColorBlendStateCreateInfo}
+           #{alignment VkPipelineColorBlendStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineColorBlendStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineColorBlendStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineColorBlendStateCreateFlags 'True
+                #{offset VkPipelineColorBlendStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "logicOpEnable" VkBool32 'False 
+                                                         #{offset VkPipelineColorBlendStateCreateInfo, logicOpEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "logicOp" VkLogicOp 'False 
+                                                    #{offset VkPipelineColorBlendStateCreateInfo, logicOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "attachmentCount" Word32 'True 
+                                                        #{offset VkPipelineColorBlendStateCreateInfo, attachmentCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAttachments" -- ' closing tick for hsc2hs
+                (Ptr VkPipelineColorBlendAttachmentState)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineColorBlendStateCreateInfo, pAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "blendConstants" ( -- ' closing tick for hsc2hs
+                                           #{type float}
+                                           ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineColorBlendStateCreateInfo, blendConstants}
+                4
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
+--   >     VkStructureType sType;
+--   >     const void*                                                                      pNext;
+--   >     VkPipelineCoverageModulationStateCreateFlagsNV                   flags;
+--   >     VkCoverageModulationModeNV                                                       coverageModulationMode;
+--   >     VkBool32                                                                         coverageModulationTableEnable;
+--   >     uint32_t                                                                         coverageModulationTableCount;
+--   >     const float* pCoverageModulationTable;
+--   > } VkPipelineCoverageModulationStateCreateInfoNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCoverageModulationStateCreateInfoNV VkPipelineCoverageModulationStateCreateInfoNV registry at www.khronos.org>
+type VkPipelineCoverageModulationStateCreateInfoNV =
+     VkStruct VkPipelineCoverageModulationStateCreateInfoNV' -- ' closing tick for hsc2hs
+
+data VkPipelineCoverageModulationStateCreateInfoNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPipelineCoverageModulationStateCreateInfoNV
+         where
+    type StructRep VkPipelineCoverageModulationStateCreateInfoNV =
+         'StructMeta "VkPipelineCoverageModulationStateCreateInfoNV" -- ' closing tick for hsc2hs
+           VkPipelineCoverageModulationStateCreateInfoNV
+           #{size VkPipelineCoverageModulationStateCreateInfoNV}
+           #{alignment VkPipelineCoverageModulationStateCreateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineCoverageModulationStateCreateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineCoverageModulationStateCreateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineCoverageModulationStateCreateFlagsNV -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPipelineCoverageModulationStateCreateInfoNV, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "coverageModulationMode" VkCoverageModulationModeNV -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "coverageModulationTableEnable" VkBool32 'False
+                #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "coverageModulationTableCount" Word32 'False 
+                                                                      #{offset VkPipelineCoverageModulationStateCreateInfoNV, coverageModulationTableCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pCoverageModulationTable" -- ' closing tick for hsc2hs
+                (Ptr #{type float})
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPipelineCoverageModulationStateCreateInfoNV, pCoverageModulationTable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
+--   >     VkStructureType sType;
+--   >     const void*                                                                      pNext;
+--   >     VkPipelineCoverageToColorStateCreateFlagsNV                    flags;
+--   >     VkBool32                         coverageToColorEnable;
+--   >     uint32_t         coverageToColorLocation;
+--   > } VkPipelineCoverageToColorStateCreateInfoNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineCoverageToColorStateCreateInfoNV VkPipelineCoverageToColorStateCreateInfoNV registry at www.khronos.org>
+type VkPipelineCoverageToColorStateCreateInfoNV =
+     VkStruct VkPipelineCoverageToColorStateCreateInfoNV' -- ' closing tick for hsc2hs
+
+data VkPipelineCoverageToColorStateCreateInfoNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineCoverageToColorStateCreateInfoNV
+         where
+    type StructRep VkPipelineCoverageToColorStateCreateInfoNV =
+         'StructMeta "VkPipelineCoverageToColorStateCreateInfoNV" -- ' closing tick for hsc2hs
+           VkPipelineCoverageToColorStateCreateInfoNV
+           #{size VkPipelineCoverageToColorStateCreateInfoNV}
+           #{alignment VkPipelineCoverageToColorStateCreateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineCoverageToColorStateCreateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineCoverageToColorStateCreateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineCoverageToColorStateCreateFlagsNV -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPipelineCoverageToColorStateCreateInfoNV, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "coverageToColorEnable" VkBool32 'False 
+                                                                 #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "coverageToColorLocation" Word32 'True 
+                                                                #{offset VkPipelineCoverageToColorStateCreateInfoNV, coverageToColorLocation}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineDepthStencilStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineDepthStencilStateCreateFlags    flags;
+--   >     VkBool32               depthTestEnable;
+--   >     VkBool32               depthWriteEnable;
+--   >     VkCompareOp            depthCompareOp;
+--   >     VkBool32               depthBoundsTestEnable;
+--   >     VkBool32               stencilTestEnable;
+--   >     VkStencilOpState       front;
+--   >     VkStencilOpState       back;
+--   >     float                  minDepthBounds;
+--   >     float                  maxDepthBounds;
+--   > } VkPipelineDepthStencilStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDepthStencilStateCreateInfo VkPipelineDepthStencilStateCreateInfo registry at www.khronos.org>
+type VkPipelineDepthStencilStateCreateInfo =
+     VkStruct VkPipelineDepthStencilStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineDepthStencilStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineDepthStencilStateCreateInfo where
+    type StructRep VkPipelineDepthStencilStateCreateInfo =
+         'StructMeta "VkPipelineDepthStencilStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineDepthStencilStateCreateInfo
+           #{size VkPipelineDepthStencilStateCreateInfo}
+           #{alignment VkPipelineDepthStencilStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineDepthStencilStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineDepthStencilStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineDepthStencilStateCreateFlags 'True
+                #{offset VkPipelineDepthStencilStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthTestEnable" VkBool32 'False 
+                                                           #{offset VkPipelineDepthStencilStateCreateInfo, depthTestEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthWriteEnable" VkBool32 'False 
+                                                            #{offset VkPipelineDepthStencilStateCreateInfo, depthWriteEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthCompareOp" VkCompareOp 'False 
+                                                             #{offset VkPipelineDepthStencilStateCreateInfo, depthCompareOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthBoundsTestEnable" VkBool32 'False 
+                                                                 #{offset VkPipelineDepthStencilStateCreateInfo, depthBoundsTestEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stencilTestEnable" VkBool32 'False 
+                                                             #{offset VkPipelineDepthStencilStateCreateInfo, stencilTestEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "front" VkStencilOpState 'False 
+                                                         #{offset VkPipelineDepthStencilStateCreateInfo, front}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "back" VkStencilOpState 'False 
+                                                        #{offset VkPipelineDepthStencilStateCreateInfo, back}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minDepthBounds" ( -- ' closing tick for hsc2hs
+                                           #{type float}
+                                           ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineDepthStencilStateCreateInfo, minDepthBounds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDepthBounds" ( -- ' closing tick for hsc2hs
+                                           #{type float}
+                                           ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineDepthStencilStateCreateInfo, maxDepthBounds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                                                                      pNext;
+--   >     VkPipelineDiscardRectangleStateCreateFlagsEXT                    flags;
+--   >     VkDiscardRectangleModeEXT                                                        discardRectangleMode;
+--   >     uint32_t                                                         discardRectangleCount;
+--   >     const VkRect2D* pDiscardRectangles;
+--   > } VkPipelineDiscardRectangleStateCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDiscardRectangleStateCreateInfoEXT VkPipelineDiscardRectangleStateCreateInfoEXT registry at www.khronos.org>
+type VkPipelineDiscardRectangleStateCreateInfoEXT =
+     VkStruct VkPipelineDiscardRectangleStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkPipelineDiscardRectangleStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineDiscardRectangleStateCreateInfoEXT
+         where
+    type StructRep VkPipelineDiscardRectangleStateCreateInfoEXT =
+         'StructMeta "VkPipelineDiscardRectangleStateCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkPipelineDiscardRectangleStateCreateInfoEXT
+           #{size VkPipelineDiscardRectangleStateCreateInfoEXT}
+           #{alignment VkPipelineDiscardRectangleStateCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineDiscardRectangleStateCreateFlagsEXT -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "discardRectangleMode" VkDiscardRectangleModeEXT 'False
+                #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "discardRectangleCount" Word32 'True 
+                                                              #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, discardRectangleCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDiscardRectangles" (Ptr VkRect2D) 'True 
+                                                                   #{offset VkPipelineDiscardRectangleStateCreateInfoEXT, pDiscardRectangles}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkGraphicsPipelineCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineDynamicStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineDynamicStateCreateFlags    flags;
+--   >     uint32_t               dynamicStateCount;
+--   >     const VkDynamicState*  pDynamicStates;
+--   > } VkPipelineDynamicStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineDynamicStateCreateInfo VkPipelineDynamicStateCreateInfo registry at www.khronos.org>
+type VkPipelineDynamicStateCreateInfo =
+     VkStruct VkPipelineDynamicStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineDynamicStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineDynamicStateCreateInfo where
+    type StructRep VkPipelineDynamicStateCreateInfo =
+         'StructMeta "VkPipelineDynamicStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineDynamicStateCreateInfo
+           #{size VkPipelineDynamicStateCreateInfo}
+           #{alignment VkPipelineDynamicStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineDynamicStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineDynamicStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineDynamicStateCreateFlags 'True
+                #{offset VkPipelineDynamicStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dynamicStateCount" Word32 'False 
+                                                           #{offset VkPipelineDynamicStateCreateInfo, dynamicStateCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDynamicStates" (Ptr VkDynamicState) 'False 
+                                                                      #{offset VkPipelineDynamicStateCreateInfo, pDynamicStates}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineInputAssemblyStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineInputAssemblyStateCreateFlags    flags;
+--   >     VkPrimitiveTopology    topology;
+--   >     VkBool32               primitiveRestartEnable;
+--   > } VkPipelineInputAssemblyStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineInputAssemblyStateCreateInfo VkPipelineInputAssemblyStateCreateInfo registry at www.khronos.org>
+type VkPipelineInputAssemblyStateCreateInfo =
+     VkStruct VkPipelineInputAssemblyStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineInputAssemblyStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineInputAssemblyStateCreateInfo where
+    type StructRep VkPipelineInputAssemblyStateCreateInfo =
+         'StructMeta "VkPipelineInputAssemblyStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineInputAssemblyStateCreateInfo
+           #{size VkPipelineInputAssemblyStateCreateInfo}
+           #{alignment VkPipelineInputAssemblyStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineInputAssemblyStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineInputAssemblyStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineInputAssemblyStateCreateFlags 'True
+                #{offset VkPipelineInputAssemblyStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "topology" VkPrimitiveTopology 'False 
+                                                               #{offset VkPipelineInputAssemblyStateCreateInfo, topology}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "primitiveRestartEnable" VkBool32 'False 
+                                                                  #{offset VkPipelineInputAssemblyStateCreateInfo, primitiveRestartEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineLayoutCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineLayoutCreateFlags    flags;
+--   >     uint32_t               setLayoutCount;
+--   >     const VkDescriptorSetLayout* pSetLayouts;
+--   >     uint32_t               pushConstantRangeCount;
+--   >     const VkPushConstantRange* pPushConstantRanges;
+--   > } VkPipelineLayoutCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineLayoutCreateInfo VkPipelineLayoutCreateInfo registry at www.khronos.org>
+type VkPipelineLayoutCreateInfo =
+     VkStruct VkPipelineLayoutCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineLayoutCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineLayoutCreateInfo where
+    type StructRep VkPipelineLayoutCreateInfo =
+         'StructMeta "VkPipelineLayoutCreateInfo" VkPipelineLayoutCreateInfo -- ' closing tick for hsc2hs
+           #{size VkPipelineLayoutCreateInfo}
+           #{alignment VkPipelineLayoutCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineLayoutCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineLayoutCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineLayoutCreateFlags 'True 
+                                                                   #{offset VkPipelineLayoutCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "setLayoutCount" Word32 'True 
+                                                       #{offset VkPipelineLayoutCreateInfo, setLayoutCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSetLayouts" (Ptr VkDescriptorSetLayout) 'False
+                #{offset VkPipelineLayoutCreateInfo, pSetLayouts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pushConstantRangeCount" Word32 'True 
+                                                               #{offset VkPipelineLayoutCreateInfo, pushConstantRangeCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pPushConstantRanges" (Ptr VkPushConstantRange) 'False
+                #{offset VkPipelineLayoutCreateInfo, pPushConstantRanges}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineMultisampleStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineMultisampleStateCreateFlags    flags;
+--   >     VkSampleCountFlagBits  rasterizationSamples;
+--   >     VkBool32               sampleShadingEnable;
+--   >     float                  minSampleShading;
+--   >     const VkSampleMask*    pSampleMask;
+--   >     VkBool32               alphaToCoverageEnable;
+--   >     VkBool32               alphaToOneEnable;
+--   > } VkPipelineMultisampleStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineMultisampleStateCreateInfo VkPipelineMultisampleStateCreateInfo registry at www.khronos.org>
+type VkPipelineMultisampleStateCreateInfo =
+     VkStruct VkPipelineMultisampleStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineMultisampleStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineMultisampleStateCreateInfo where
+    type StructRep VkPipelineMultisampleStateCreateInfo =
+         'StructMeta "VkPipelineMultisampleStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineMultisampleStateCreateInfo
+           #{size VkPipelineMultisampleStateCreateInfo}
+           #{alignment VkPipelineMultisampleStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineMultisampleStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineMultisampleStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineMultisampleStateCreateFlags 'True
+                #{offset VkPipelineMultisampleStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "rasterizationSamples" VkSampleCountFlagBits 'False
+                #{offset VkPipelineMultisampleStateCreateInfo, rasterizationSamples}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleShadingEnable" VkBool32 'False 
+                                                               #{offset VkPipelineMultisampleStateCreateInfo, sampleShadingEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minSampleShading" ( -- ' closing tick for hsc2hs
+                                             #{type float}
+                                             ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineMultisampleStateCreateInfo, minSampleShading}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSampleMask" (Ptr VkSampleMask) 'True 
+                                                                #{offset VkPipelineMultisampleStateCreateInfo, pSampleMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "alphaToCoverageEnable" VkBool32 'False 
+                                                                 #{offset VkPipelineMultisampleStateCreateInfo, alphaToCoverageEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "alphaToOneEnable" VkBool32 'False 
+                                                            #{offset VkPipelineMultisampleStateCreateInfo, alphaToOneEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                                                                      pNext;
+--   >     VkPipelineRasterizationConservativeStateCreateFlagsEXT           flags;
+--   >     VkConservativeRasterizationModeEXT                                               conservativeRasterizationMode;
+--   >     float                                                                            extraPrimitiveOverestimationSize;
+--   > } VkPipelineRasterizationConservativeStateCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationConservativeStateCreateInfoEXT VkPipelineRasterizationConservativeStateCreateInfoEXT registry at www.khronos.org>
+type VkPipelineRasterizationConservativeStateCreateInfoEXT =
+     VkStruct VkPipelineRasterizationConservativeStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkPipelineRasterizationConservativeStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPipelineRasterizationConservativeStateCreateInfoEXT
+         where
+    type StructRep
+           VkPipelineRasterizationConservativeStateCreateInfoEXT
+         =
+         'StructMeta "VkPipelineRasterizationConservativeStateCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkPipelineRasterizationConservativeStateCreateInfoEXT
+           #{size VkPipelineRasterizationConservativeStateCreateInfoEXT}
+           #{alignment VkPipelineRasterizationConservativeStateCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" -- ' closing tick for hsc2hs
+                VkPipelineRasterizationConservativeStateCreateFlagsEXT
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "conservativeRasterizationMode" -- ' closing tick for hsc2hs
+                VkConservativeRasterizationModeEXT
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, conservativeRasterizationMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "extraPrimitiveOverestimationSize" -- ' closing tick for hsc2hs
+                (#{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineRasterizationConservativeStateCreateInfoEXT, extraPrimitiveOverestimationSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineRasterizationStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineRasterizationStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void* pNext;
+--   >     VkPipelineRasterizationStateCreateFlags    flags;
+--   >     VkBool32               depthClampEnable;
+--   >     VkBool32               rasterizerDiscardEnable;
+--   >     VkPolygonMode          polygonMode;
+--   >     VkCullModeFlags        cullMode;
+--   >     VkFrontFace            frontFace;
+--   >     VkBool32               depthBiasEnable;
+--   >     float                  depthBiasConstantFactor;
+--   >     float                  depthBiasClamp;
+--   >     float                  depthBiasSlopeFactor;
+--   >     float                  lineWidth;
+--   > } VkPipelineRasterizationStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationStateCreateInfo VkPipelineRasterizationStateCreateInfo registry at www.khronos.org>
+type VkPipelineRasterizationStateCreateInfo =
+     VkStruct VkPipelineRasterizationStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineRasterizationStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineRasterizationStateCreateInfo where
+    type StructRep VkPipelineRasterizationStateCreateInfo =
+         'StructMeta "VkPipelineRasterizationStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineRasterizationStateCreateInfo
+           #{size VkPipelineRasterizationStateCreateInfo}
+           #{alignment VkPipelineRasterizationStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineRasterizationStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineRasterizationStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineRasterizationStateCreateFlags 'True
+                #{offset VkPipelineRasterizationStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthClampEnable" VkBool32 'False 
+                                                            #{offset VkPipelineRasterizationStateCreateInfo, depthClampEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "rasterizerDiscardEnable" VkBool32 'False 
+                                                                   #{offset VkPipelineRasterizationStateCreateInfo, rasterizerDiscardEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "polygonMode" VkPolygonMode 'False 
+                                                            #{offset VkPipelineRasterizationStateCreateInfo, polygonMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "cullMode" VkCullModeFlags 'True 
+                                                          #{offset VkPipelineRasterizationStateCreateInfo, cullMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "frontFace" VkFrontFace 'False 
+                                                        #{offset VkPipelineRasterizationStateCreateInfo, frontFace}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthBiasEnable" VkBool32 'False 
+                                                           #{offset VkPipelineRasterizationStateCreateInfo, depthBiasEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthBiasConstantFactor" ( -- ' closing tick for hsc2hs
+                                                    #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineRasterizationStateCreateInfo, depthBiasConstantFactor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthBiasClamp" ( -- ' closing tick for hsc2hs
+                                           #{type float}
+                                           ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineRasterizationStateCreateInfo, depthBiasClamp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthBiasSlopeFactor" ( -- ' closing tick for hsc2hs
+                                                 #{type float})
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineRasterizationStateCreateInfo, depthBiasSlopeFactor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "lineWidth" ( -- ' closing tick for hsc2hs
+                                      #{type float}
+                                      ) 'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineRasterizationStateCreateInfo, lineWidth}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkRasterizationOrderAMD          rasterizationOrder;
+--   > } VkPipelineRasterizationStateRasterizationOrderAMD;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineRasterizationStateRasterizationOrderAMD VkPipelineRasterizationStateRasterizationOrderAMD registry at www.khronos.org>
+type VkPipelineRasterizationStateRasterizationOrderAMD =
+     VkStruct VkPipelineRasterizationStateRasterizationOrderAMD' -- ' closing tick for hsc2hs
+
+data VkPipelineRasterizationStateRasterizationOrderAMD' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPipelineRasterizationStateRasterizationOrderAMD
+         where
+    type StructRep VkPipelineRasterizationStateRasterizationOrderAMD =
+         'StructMeta "VkPipelineRasterizationStateRasterizationOrderAMD" -- ' closing tick for hsc2hs
+           VkPipelineRasterizationStateRasterizationOrderAMD
+           #{size VkPipelineRasterizationStateRasterizationOrderAMD}
+           #{alignment VkPipelineRasterizationStateRasterizationOrderAMD}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineRasterizationStateRasterizationOrderAMD, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineRasterizationStateRasterizationOrderAMD, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "rasterizationOrder" VkRasterizationOrderAMD 'False
+                #{offset VkPipelineRasterizationStateRasterizationOrderAMD, rasterizationOrder}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineRasterizationStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkBool32                         sampleLocationsEnable;
+--   >     VkSampleLocationsInfoEXT         sampleLocationsInfo;
+--   > } VkPipelineSampleLocationsStateCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineSampleLocationsStateCreateInfoEXT VkPipelineSampleLocationsStateCreateInfoEXT registry at www.khronos.org>
+type VkPipelineSampleLocationsStateCreateInfoEXT =
+     VkStruct VkPipelineSampleLocationsStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkPipelineSampleLocationsStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineSampleLocationsStateCreateInfoEXT
+         where
+    type StructRep VkPipelineSampleLocationsStateCreateInfoEXT =
+         'StructMeta "VkPipelineSampleLocationsStateCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkPipelineSampleLocationsStateCreateInfoEXT
+           #{size VkPipelineSampleLocationsStateCreateInfoEXT}
+           #{alignment VkPipelineSampleLocationsStateCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineSampleLocationsStateCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationsEnable" VkBool32 'False 
+                                                                 #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationsInfo" VkSampleLocationsInfoEXT 'False
+                #{offset VkPipelineSampleLocationsStateCreateInfoEXT, sampleLocationsInfo}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineMultisampleStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineShaderStageCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineShaderStageCreateFlags    flags;
+--   >     VkShaderStageFlagBits  stage;
+--   >     VkShaderModule         module;
+--   >     const char*            pName;
+--   >     const VkSpecializationInfo* pSpecializationInfo;
+--   > } VkPipelineShaderStageCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineShaderStageCreateInfo VkPipelineShaderStageCreateInfo registry at www.khronos.org>
+type VkPipelineShaderStageCreateInfo =
+     VkStruct VkPipelineShaderStageCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineShaderStageCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineShaderStageCreateInfo where
+    type StructRep VkPipelineShaderStageCreateInfo =
+         'StructMeta "VkPipelineShaderStageCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineShaderStageCreateInfo
+           #{size VkPipelineShaderStageCreateInfo}
+           #{alignment VkPipelineShaderStageCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineShaderStageCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineShaderStageCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineShaderStageCreateFlags 'True
+                #{offset VkPipelineShaderStageCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stage" VkShaderStageFlagBits 'False 
+                                                              #{offset VkPipelineShaderStageCreateInfo, stage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "module" VkShaderModule 'False 
+                                                        #{offset VkPipelineShaderStageCreateInfo, module}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pName" CString 'False 
+                                                #{offset VkPipelineShaderStageCreateInfo, pName}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSpecializationInfo" (Ptr VkSpecializationInfo) 'True
+                #{offset VkPipelineShaderStageCreateInfo, pSpecializationInfo}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkTessellationDomainOrigin    domainOrigin;
+--   > } VkPipelineTessellationDomainOriginStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfo registry at www.khronos.org>
+type VkPipelineTessellationDomainOriginStateCreateInfo =
+     VkStruct VkPipelineTessellationDomainOriginStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineTessellationDomainOriginStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPipelineTessellationDomainOriginStateCreateInfo
+         where
+    type StructRep VkPipelineTessellationDomainOriginStateCreateInfo =
+         'StructMeta "VkPipelineTessellationDomainOriginStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineTessellationDomainOriginStateCreateInfo
+           #{size VkPipelineTessellationDomainOriginStateCreateInfo}
+           #{alignment VkPipelineTessellationDomainOriginStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineTessellationDomainOriginStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineTessellationDomainOriginStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "domainOrigin" VkTessellationDomainOrigin 'False
+                #{offset VkPipelineTessellationDomainOriginStateCreateInfo, domainOrigin}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineTessellationStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkPipelineTessellationDomainOriginStateCreateInfo`
+type VkPipelineTessellationDomainOriginStateCreateInfoKHR =
+     VkPipelineTessellationDomainOriginStateCreateInfo
+
+-- | > typedef struct VkPipelineTessellationStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineTessellationStateCreateFlags    flags;
+--   >     uint32_t               patchControlPoints;
+--   > } VkPipelineTessellationStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineTessellationStateCreateInfo VkPipelineTessellationStateCreateInfo registry at www.khronos.org>
+type VkPipelineTessellationStateCreateInfo =
+     VkStruct VkPipelineTessellationStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineTessellationStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineTessellationStateCreateInfo where
+    type StructRep VkPipelineTessellationStateCreateInfo =
+         'StructMeta "VkPipelineTessellationStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineTessellationStateCreateInfo
+           #{size VkPipelineTessellationStateCreateInfo}
+           #{alignment VkPipelineTessellationStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineTessellationStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineTessellationStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineTessellationStateCreateFlags 'True
+                #{offset VkPipelineTessellationStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "patchControlPoints" Word32 'False 
+                                                            #{offset VkPipelineTessellationStateCreateInfo, patchControlPoints}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                         pNext;
+--   >     uint32_t                            vertexBindingDivisorCount;
+--   >     const VkVertexInputBindingDivisorDescriptionEXT*      pVertexBindingDivisors;
+--   > } VkPipelineVertexInputDivisorStateCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineVertexInputDivisorStateCreateInfoEXT VkPipelineVertexInputDivisorStateCreateInfoEXT registry at www.khronos.org>
+type VkPipelineVertexInputDivisorStateCreateInfoEXT =
+     VkStruct VkPipelineVertexInputDivisorStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkPipelineVertexInputDivisorStateCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkPipelineVertexInputDivisorStateCreateInfoEXT
+         where
+    type StructRep VkPipelineVertexInputDivisorStateCreateInfoEXT =
+         'StructMeta "VkPipelineVertexInputDivisorStateCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkPipelineVertexInputDivisorStateCreateInfoEXT
+           #{size VkPipelineVertexInputDivisorStateCreateInfoEXT}
+           #{alignment VkPipelineVertexInputDivisorStateCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "vertexBindingDivisorCount" Word32 'False 
+                                                                   #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, vertexBindingDivisorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pVertexBindingDivisors" -- ' closing tick for hsc2hs
+                (Ptr VkVertexInputBindingDivisorDescriptionEXT)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineVertexInputDivisorStateCreateInfoEXT, pVertexBindingDivisors}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineVertexInputStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineVertexInputStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineVertexInputStateCreateFlags    flags;
+--   >     uint32_t               vertexBindingDescriptionCount;
+--   >     const VkVertexInputBindingDescription* pVertexBindingDescriptions;
+--   >     uint32_t               vertexAttributeDescriptionCount;
+--   >     const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
+--   > } VkPipelineVertexInputStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineVertexInputStateCreateInfo VkPipelineVertexInputStateCreateInfo registry at www.khronos.org>
+type VkPipelineVertexInputStateCreateInfo =
+     VkStruct VkPipelineVertexInputStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineVertexInputStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineVertexInputStateCreateInfo where
+    type StructRep VkPipelineVertexInputStateCreateInfo =
+         'StructMeta "VkPipelineVertexInputStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineVertexInputStateCreateInfo
+           #{size VkPipelineVertexInputStateCreateInfo}
+           #{alignment VkPipelineVertexInputStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineVertexInputStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineVertexInputStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineVertexInputStateCreateFlags 'True
+                #{offset VkPipelineVertexInputStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "vertexBindingDescriptionCount" Word32 'True 
+                                                                      #{offset VkPipelineVertexInputStateCreateInfo, vertexBindingDescriptionCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pVertexBindingDescriptions" -- ' closing tick for hsc2hs
+                (Ptr VkVertexInputBindingDescription)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineVertexInputStateCreateInfo, pVertexBindingDescriptions}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "vertexAttributeDescriptionCount" Word32 'True
+                #{offset VkPipelineVertexInputStateCreateInfo, vertexAttributeDescriptionCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pVertexAttributeDescriptions" -- ' closing tick for hsc2hs
+                (Ptr VkVertexInputAttributeDescription)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkPipelineVertexInputStateCreateInfo, pVertexAttributeDescriptions}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineViewportStateCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineViewportStateCreateFlags    flags;
+--   >     uint32_t               viewportCount;
+--   >     const VkViewport*      pViewports;
+--   >     uint32_t               scissorCount;
+--   >     const VkRect2D*        pScissors;
+--   > } VkPipelineViewportStateCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportStateCreateInfo VkPipelineViewportStateCreateInfo registry at www.khronos.org>
+type VkPipelineViewportStateCreateInfo =
+     VkStruct VkPipelineViewportStateCreateInfo' -- ' closing tick for hsc2hs
+
+data VkPipelineViewportStateCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineViewportStateCreateInfo where
+    type StructRep VkPipelineViewportStateCreateInfo =
+         'StructMeta "VkPipelineViewportStateCreateInfo" -- ' closing tick for hsc2hs
+           VkPipelineViewportStateCreateInfo
+           #{size VkPipelineViewportStateCreateInfo}
+           #{alignment VkPipelineViewportStateCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineViewportStateCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineViewportStateCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineViewportStateCreateFlags 'True
+                #{offset VkPipelineViewportStateCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "viewportCount" Word32 'False 
+                                                       #{offset VkPipelineViewportStateCreateInfo, viewportCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pViewports" (Ptr VkViewport) 'True 
+                                                             #{offset VkPipelineViewportStateCreateInfo, pViewports}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "scissorCount" Word32 'False 
+                                                      #{offset VkPipelineViewportStateCreateInfo, scissorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pScissors" (Ptr VkRect2D) 'True 
+                                                          #{offset VkPipelineViewportStateCreateInfo, pScissors}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
+--   >     uint32_t               viewportCount;
+--   >     const VkViewportSwizzleNV*      pViewportSwizzles;
+--   > } VkPipelineViewportSwizzleStateCreateInfoNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportSwizzleStateCreateInfoNV VkPipelineViewportSwizzleStateCreateInfoNV registry at www.khronos.org>
+type VkPipelineViewportSwizzleStateCreateInfoNV =
+     VkStruct VkPipelineViewportSwizzleStateCreateInfoNV' -- ' closing tick for hsc2hs
+
+data VkPipelineViewportSwizzleStateCreateInfoNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineViewportSwizzleStateCreateInfoNV
+         where
+    type StructRep VkPipelineViewportSwizzleStateCreateInfoNV =
+         'StructMeta "VkPipelineViewportSwizzleStateCreateInfoNV" -- ' closing tick for hsc2hs
+           VkPipelineViewportSwizzleStateCreateInfoNV
+           #{size VkPipelineViewportSwizzleStateCreateInfoNV}
+           #{alignment VkPipelineViewportSwizzleStateCreateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineViewportSwizzleStateCreateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkPipelineViewportSwizzleStateCreateFlagsNV -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkPipelineViewportSwizzleStateCreateInfoNV, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "viewportCount" Word32 'False 
+                                                       #{offset VkPipelineViewportSwizzleStateCreateInfoNV, viewportCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pViewportSwizzles" (Ptr VkViewportSwizzleNV) 'True
+                #{offset VkPipelineViewportSwizzleStateCreateInfoNV, pViewportSwizzles}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineViewportStateCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkBool32               viewportWScalingEnable;
+--   >     uint32_t               viewportCount;
+--   >     const VkViewportWScalingNV*      pViewportWScalings;
+--   > } VkPipelineViewportWScalingStateCreateInfoNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPipelineViewportWScalingStateCreateInfoNV VkPipelineViewportWScalingStateCreateInfoNV registry at www.khronos.org>
+type VkPipelineViewportWScalingStateCreateInfoNV =
+     VkStruct VkPipelineViewportWScalingStateCreateInfoNV' -- ' closing tick for hsc2hs
+
+data VkPipelineViewportWScalingStateCreateInfoNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPipelineViewportWScalingStateCreateInfoNV
+         where
+    type StructRep VkPipelineViewportWScalingStateCreateInfoNV =
+         'StructMeta "VkPipelineViewportWScalingStateCreateInfoNV" -- ' closing tick for hsc2hs
+           VkPipelineViewportWScalingStateCreateInfoNV
+           #{size VkPipelineViewportWScalingStateCreateInfoNV}
+           #{alignment VkPipelineViewportWScalingStateCreateInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPipelineViewportWScalingStateCreateInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPipelineViewportWScalingStateCreateInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "viewportWScalingEnable" VkBool32 'False 
+                                                                  #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportWScalingEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "viewportCount" Word32 'False 
+                                                       #{offset VkPipelineViewportWScalingStateCreateInfoNV, viewportCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pViewportWScalings" (Ptr VkViewportWScalingNV) 'False
+                #{offset VkPipelineViewportWScalingStateCreateInfoNV, pViewportWScalings}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPipelineViewportStateCreateInfo] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformAndroidKhr.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformAndroidKhr.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformAndroidKhr.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformAndroidKhr.hsc
@@ -2,1701 +2,349 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.PlatformAndroidKhr
-       (VkAndroidHardwareBufferFormatPropertiesANDROID,
-        VkAndroidHardwareBufferFormatPropertiesANDROID', -- ' closing tick for hsc2hs
-        VkAndroidHardwareBufferPropertiesANDROID,
-        VkAndroidHardwareBufferPropertiesANDROID', -- ' closing tick for hsc2hs
-        VkAndroidHardwareBufferUsageANDROID,
-        VkAndroidHardwareBufferUsageANDROID', -- ' closing tick for hsc2hs
-        VkAndroidSurfaceCreateInfoKHR, VkAndroidSurfaceCreateInfoKHR', -- ' closing tick for hsc2hs
-        VkExternalFormatANDROID, VkExternalFormatANDROID', -- ' closing tick for hsc2hs
-        VkImportAndroidHardwareBufferInfoANDROID,
-        VkImportAndroidHardwareBufferInfoANDROID', -- ' closing tick for hsc2hs
-        VkMemoryGetAndroidHardwareBufferInfoANDROID,
-        VkMemoryGetAndroidHardwareBufferInfoANDROID') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                              (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes               (VkDeviceSize)
-import Graphics.Vulkan.Types.Bitmasks                (VkAndroidSurfaceCreateFlagsKHR)
-import Graphics.Vulkan.Types.Defines                 (AHardwareBuffer,
-                                                      ANativeWindow)
-import Graphics.Vulkan.Types.Enum.ChromaLocation     (VkChromaLocation)
-import Graphics.Vulkan.Types.Enum.Format             (VkFormat,
-                                                      VkFormatFeatureFlags)
-import Graphics.Vulkan.Types.Enum.Sampler            (VkSamplerYcbcrModelConversion,
-                                                      VkSamplerYcbcrRange)
-import Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
-import Graphics.Vulkan.Types.Handles                 (VkDeviceMemory)
-import Graphics.Vulkan.Types.Struct.ComponentMapping (VkComponentMapping)
-import Graphics.Vulkan.Types.Struct.Image            (VkImageCreateInfo,
-                                                      VkImageFormatProperties2)
-import Graphics.Vulkan.Types.Struct.Memory           (VkMemoryAllocateInfo)
-import Graphics.Vulkan.Types.Struct.Sampler          (VkSamplerYcbcrConversionCreateInfo)
-import System.IO.Unsafe                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID {
---   >     VkStructureType sType;
---   >     void*                              pNext;
---   >     VkFormat                           format;
---   >     uint64_t                           externalFormat;
---   >     VkFormatFeatureFlags               formatFeatures;
---   >     VkComponentMapping                 samplerYcbcrConversionComponents;
---   >     VkSamplerYcbcrModelConversion      suggestedYcbcrModel;
---   >     VkSamplerYcbcrRange                suggestedYcbcrRange;
---   >     VkChromaLocation                   suggestedXChromaOffset;
---   >     VkChromaLocation                   suggestedYChromaOffset;
---   > } VkAndroidHardwareBufferFormatPropertiesANDROID;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAndroidHardwareBufferFormatPropertiesANDROID VkAndroidHardwareBufferFormatPropertiesANDROID registry at www.khronos.org>
-type VkAndroidHardwareBufferFormatPropertiesANDROID =
-     VulkanStruct VkAndroidHardwareBufferFormatPropertiesANDROID' -- ' closing tick for hsc2hs
-
-data VkAndroidHardwareBufferFormatPropertiesANDROID' -- ' closing tick for hsc2hs
-
-instance Eq VkAndroidHardwareBufferFormatPropertiesANDROID where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAndroidHardwareBufferFormatPropertiesANDROID where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        sizeOf ~_
-          = #{size VkAndroidHardwareBufferFormatPropertiesANDROID}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkAndroidHardwareBufferFormatPropertiesANDROID}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type StructFields VkAndroidHardwareBufferFormatPropertiesANDROID =
-             '["sType", "pNext", "format", "externalFormat", "formatFeatures", -- ' closing tick for hsc2hs
-               "samplerYcbcrConversionComponents", "suggestedYcbcrModel",
-               "suggestedYcbcrRange", "suggestedXChromaOffset",
-               "suggestedYChromaOffset"]
-        type CUnionType VkAndroidHardwareBufferFormatPropertiesANDROID =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAndroidHardwareBufferFormatPropertiesANDROID =
-             'True -- ' closing tick for hsc2hs
-        type StructExtends VkAndroidHardwareBufferFormatPropertiesANDROID =
-             '[VkAndroidHardwareBufferPropertiesANDROID] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "sType"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = VkStructureType
-        type FieldOptional "sType"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, sType}
-        type FieldIsArray "sType"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "pNext"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, pNext}
-        type FieldIsArray "pNext"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "format"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = VkFormat
-        type FieldOptional "format"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "format"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, format}
-        type FieldIsArray "format"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalFormat"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "externalFormat"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = Word64
-        type FieldOptional "externalFormat"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "externalFormat"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, externalFormat}
-        type FieldIsArray "externalFormat"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, externalFormat}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "externalFormat"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, externalFormat})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, externalFormat}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "externalFormat"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, externalFormat}
-
-instance {-# OVERLAPPING #-}
-         HasField "formatFeatures"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "formatFeatures"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = VkFormatFeatureFlags
-        type FieldOptional "formatFeatures"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "formatFeatures"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, formatFeatures}
-        type FieldIsArray "formatFeatures"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, formatFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "formatFeatures"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, formatFeatures})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, formatFeatures}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "formatFeatures"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, formatFeatures}
-
-instance {-# OVERLAPPING #-}
-         HasField "samplerYcbcrConversionComponents"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "samplerYcbcrConversionComponents"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = VkComponentMapping
-        type FieldOptional "samplerYcbcrConversionComponents"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "samplerYcbcrConversionComponents"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, samplerYcbcrConversionComponents}
-        type FieldIsArray "samplerYcbcrConversionComponents"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, samplerYcbcrConversionComponents}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "samplerYcbcrConversionComponents"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, samplerYcbcrConversionComponents})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, samplerYcbcrConversionComponents}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "samplerYcbcrConversionComponents"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, samplerYcbcrConversionComponents}
-
-instance {-# OVERLAPPING #-}
-         HasField "suggestedYcbcrModel"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "suggestedYcbcrModel"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = VkSamplerYcbcrModelConversion
-        type FieldOptional "suggestedYcbcrModel"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "suggestedYcbcrModel"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrModel}
-        type FieldIsArray "suggestedYcbcrModel"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrModel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "suggestedYcbcrModel"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrModel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrModel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "suggestedYcbcrModel"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrModel}
-
-instance {-# OVERLAPPING #-}
-         HasField "suggestedYcbcrRange"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "suggestedYcbcrRange"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = VkSamplerYcbcrRange
-        type FieldOptional "suggestedYcbcrRange"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "suggestedYcbcrRange"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrRange}
-        type FieldIsArray "suggestedYcbcrRange"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "suggestedYcbcrRange"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrRange})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrRange}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "suggestedYcbcrRange"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrRange}
-
-instance {-# OVERLAPPING #-}
-         HasField "suggestedXChromaOffset"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "suggestedXChromaOffset"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = VkChromaLocation
-        type FieldOptional "suggestedXChromaOffset"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "suggestedXChromaOffset"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedXChromaOffset}
-        type FieldIsArray "suggestedXChromaOffset"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedXChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "suggestedXChromaOffset"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedXChromaOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedXChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "suggestedXChromaOffset"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedXChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "suggestedYChromaOffset"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        type FieldType "suggestedYChromaOffset"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = VkChromaLocation
-        type FieldOptional "suggestedYChromaOffset"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "suggestedYChromaOffset"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYChromaOffset}
-        type FieldIsArray "suggestedYChromaOffset"
-               VkAndroidHardwareBufferFormatPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "suggestedYChromaOffset"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYChromaOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "suggestedYChromaOffset"
-           VkAndroidHardwareBufferFormatPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYChromaOffset}
-
-instance Show VkAndroidHardwareBufferFormatPropertiesANDROID where
-        showsPrec d x
-          = showString "VkAndroidHardwareBufferFormatPropertiesANDROID {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "format = " .
-                            showsPrec d (getField @"format" x) .
-                              showString ", " .
-                                showString "externalFormat = " .
-                                  showsPrec d (getField @"externalFormat" x) .
-                                    showString ", " .
-                                      showString "formatFeatures = " .
-                                        showsPrec d (getField @"formatFeatures" x) .
-                                          showString ", " .
-                                            showString "samplerYcbcrConversionComponents = " .
-                                              showsPrec d
-                                                (getField @"samplerYcbcrConversionComponents" x)
-                                                .
-                                                showString ", " .
-                                                  showString "suggestedYcbcrModel = " .
-                                                    showsPrec d (getField @"suggestedYcbcrModel" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "suggestedYcbcrRange = " .
-                                                          showsPrec d
-                                                            (getField @"suggestedYcbcrRange" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "suggestedXChromaOffset = "
-                                                                .
-                                                                showsPrec d
-                                                                  (getField
-                                                                     @"suggestedXChromaOffset"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "suggestedYChromaOffset = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"suggestedYChromaOffset"
-                                                                           x)
-                                                                        . showChar '}'
-
--- | > typedef struct VkAndroidHardwareBufferPropertiesANDROID {
---   >     VkStructureType sType;
---   >     void*                              pNext;
---   >     VkDeviceSize                       allocationSize;
---   >     uint32_t                           memoryTypeBits;
---   > } VkAndroidHardwareBufferPropertiesANDROID;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAndroidHardwareBufferPropertiesANDROID VkAndroidHardwareBufferPropertiesANDROID registry at www.khronos.org>
-type VkAndroidHardwareBufferPropertiesANDROID =
-     VulkanStruct VkAndroidHardwareBufferPropertiesANDROID' -- ' closing tick for hsc2hs
-
-data VkAndroidHardwareBufferPropertiesANDROID' -- ' closing tick for hsc2hs
-
-instance Eq VkAndroidHardwareBufferPropertiesANDROID where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAndroidHardwareBufferPropertiesANDROID where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAndroidHardwareBufferPropertiesANDROID where
-        sizeOf ~_
-          = #{size VkAndroidHardwareBufferPropertiesANDROID}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkAndroidHardwareBufferPropertiesANDROID}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkAndroidHardwareBufferPropertiesANDROID
-         where
-        type StructFields VkAndroidHardwareBufferPropertiesANDROID =
-             '["sType", "pNext", "allocationSize", "memoryTypeBits"] -- ' closing tick for hsc2hs
-        type CUnionType VkAndroidHardwareBufferPropertiesANDROID = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAndroidHardwareBufferPropertiesANDROID = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkAndroidHardwareBufferPropertiesANDROID = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkAndroidHardwareBufferPropertiesANDROID where
-        type FieldType "sType" VkAndroidHardwareBufferPropertiesANDROID =
-             VkStructureType
-        type FieldOptional "sType" VkAndroidHardwareBufferPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkAndroidHardwareBufferPropertiesANDROID =
-             #{offset VkAndroidHardwareBufferPropertiesANDROID, sType}
-        type FieldIsArray "sType" VkAndroidHardwareBufferPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferPropertiesANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkAndroidHardwareBufferPropertiesANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferPropertiesANDROID, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferPropertiesANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkAndroidHardwareBufferPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferPropertiesANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkAndroidHardwareBufferPropertiesANDROID where
-        type FieldType "pNext" VkAndroidHardwareBufferPropertiesANDROID =
-             Ptr Void
-        type FieldOptional "pNext" VkAndroidHardwareBufferPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkAndroidHardwareBufferPropertiesANDROID =
-             #{offset VkAndroidHardwareBufferPropertiesANDROID, pNext}
-        type FieldIsArray "pNext" VkAndroidHardwareBufferPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferPropertiesANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkAndroidHardwareBufferPropertiesANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferPropertiesANDROID, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferPropertiesANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkAndroidHardwareBufferPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferPropertiesANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "allocationSize" VkAndroidHardwareBufferPropertiesANDROID
-         where
-        type FieldType "allocationSize"
-               VkAndroidHardwareBufferPropertiesANDROID
-             = VkDeviceSize
-        type FieldOptional "allocationSize"
-               VkAndroidHardwareBufferPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "allocationSize"
-               VkAndroidHardwareBufferPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferPropertiesANDROID, allocationSize}
-        type FieldIsArray "allocationSize"
-               VkAndroidHardwareBufferPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferPropertiesANDROID, allocationSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "allocationSize"
-           VkAndroidHardwareBufferPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferPropertiesANDROID, allocationSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferPropertiesANDROID, allocationSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "allocationSize"
-           VkAndroidHardwareBufferPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferPropertiesANDROID, allocationSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryTypeBits" VkAndroidHardwareBufferPropertiesANDROID
-         where
-        type FieldType "memoryTypeBits"
-               VkAndroidHardwareBufferPropertiesANDROID
-             = Word32
-        type FieldOptional "memoryTypeBits"
-               VkAndroidHardwareBufferPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryTypeBits"
-               VkAndroidHardwareBufferPropertiesANDROID
-             =
-             #{offset VkAndroidHardwareBufferPropertiesANDROID, memoryTypeBits}
-        type FieldIsArray "memoryTypeBits"
-               VkAndroidHardwareBufferPropertiesANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferPropertiesANDROID, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryTypeBits"
-           VkAndroidHardwareBufferPropertiesANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferPropertiesANDROID, memoryTypeBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferPropertiesANDROID, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryTypeBits"
-           VkAndroidHardwareBufferPropertiesANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferPropertiesANDROID, memoryTypeBits}
-
-instance Show VkAndroidHardwareBufferPropertiesANDROID where
-        showsPrec d x
-          = showString "VkAndroidHardwareBufferPropertiesANDROID {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "allocationSize = " .
-                            showsPrec d (getField @"allocationSize" x) .
-                              showString ", " .
-                                showString "memoryTypeBits = " .
-                                  showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
-
--- | > typedef struct VkAndroidHardwareBufferUsageANDROID {
---   >     VkStructureType sType;
---   >     void*                              pNext;
---   >     uint64_t                           androidHardwareBufferUsage;
---   > } VkAndroidHardwareBufferUsageANDROID;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAndroidHardwareBufferUsageANDROID VkAndroidHardwareBufferUsageANDROID registry at www.khronos.org>
-type VkAndroidHardwareBufferUsageANDROID =
-     VulkanStruct VkAndroidHardwareBufferUsageANDROID' -- ' closing tick for hsc2hs
-
-data VkAndroidHardwareBufferUsageANDROID' -- ' closing tick for hsc2hs
-
-instance Eq VkAndroidHardwareBufferUsageANDROID where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAndroidHardwareBufferUsageANDROID where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAndroidHardwareBufferUsageANDROID where
-        sizeOf ~_ = #{size VkAndroidHardwareBufferUsageANDROID}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkAndroidHardwareBufferUsageANDROID}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkAndroidHardwareBufferUsageANDROID where
-        type StructFields VkAndroidHardwareBufferUsageANDROID =
-             '["sType", "pNext", "androidHardwareBufferUsage"] -- ' closing tick for hsc2hs
-        type CUnionType VkAndroidHardwareBufferUsageANDROID = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAndroidHardwareBufferUsageANDROID = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkAndroidHardwareBufferUsageANDROID =
-             '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkAndroidHardwareBufferUsageANDROID where
-        type FieldType "sType" VkAndroidHardwareBufferUsageANDROID =
-             VkStructureType
-        type FieldOptional "sType" VkAndroidHardwareBufferUsageANDROID =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkAndroidHardwareBufferUsageANDROID =
-             #{offset VkAndroidHardwareBufferUsageANDROID, sType}
-        type FieldIsArray "sType" VkAndroidHardwareBufferUsageANDROID =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferUsageANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkAndroidHardwareBufferUsageANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferUsageANDROID, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferUsageANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkAndroidHardwareBufferUsageANDROID where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferUsageANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkAndroidHardwareBufferUsageANDROID where
-        type FieldType "pNext" VkAndroidHardwareBufferUsageANDROID =
-             Ptr Void
-        type FieldOptional "pNext" VkAndroidHardwareBufferUsageANDROID =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkAndroidHardwareBufferUsageANDROID =
-             #{offset VkAndroidHardwareBufferUsageANDROID, pNext}
-        type FieldIsArray "pNext" VkAndroidHardwareBufferUsageANDROID =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferUsageANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkAndroidHardwareBufferUsageANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferUsageANDROID, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferUsageANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkAndroidHardwareBufferUsageANDROID where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferUsageANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "androidHardwareBufferUsage"
-           VkAndroidHardwareBufferUsageANDROID
-         where
-        type FieldType "androidHardwareBufferUsage"
-               VkAndroidHardwareBufferUsageANDROID
-             = Word64
-        type FieldOptional "androidHardwareBufferUsage"
-               VkAndroidHardwareBufferUsageANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "androidHardwareBufferUsage"
-               VkAndroidHardwareBufferUsageANDROID
-             =
-             #{offset VkAndroidHardwareBufferUsageANDROID, androidHardwareBufferUsage}
-        type FieldIsArray "androidHardwareBufferUsage"
-               VkAndroidHardwareBufferUsageANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidHardwareBufferUsageANDROID, androidHardwareBufferUsage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "androidHardwareBufferUsage"
-           VkAndroidHardwareBufferUsageANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidHardwareBufferUsageANDROID, androidHardwareBufferUsage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidHardwareBufferUsageANDROID, androidHardwareBufferUsage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "androidHardwareBufferUsage"
-           VkAndroidHardwareBufferUsageANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidHardwareBufferUsageANDROID, androidHardwareBufferUsage}
-
-instance Show VkAndroidHardwareBufferUsageANDROID where
-        showsPrec d x
-          = showString "VkAndroidHardwareBufferUsageANDROID {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "androidHardwareBufferUsage = " .
-                            showsPrec d (getField @"androidHardwareBufferUsage" x) .
-                              showChar '}'
-
--- | > typedef struct VkAndroidSurfaceCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                                    pNext;
---   >     VkAndroidSurfaceCreateFlagsKHR flags;
---   >     struct ANativeWindow*    window;
---   > } VkAndroidSurfaceCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAndroidSurfaceCreateInfoKHR VkAndroidSurfaceCreateInfoKHR registry at www.khronos.org>
-type VkAndroidSurfaceCreateInfoKHR =
-     VulkanStruct VkAndroidSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
-
-data VkAndroidSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkAndroidSurfaceCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkAndroidSurfaceCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkAndroidSurfaceCreateInfoKHR where
-        sizeOf ~_ = #{size VkAndroidSurfaceCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkAndroidSurfaceCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkAndroidSurfaceCreateInfoKHR where
-        type StructFields VkAndroidSurfaceCreateInfoKHR =
-             '["sType", "pNext", "flags", "window"] -- ' closing tick for hsc2hs
-        type CUnionType VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkAndroidSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkAndroidSurfaceCreateInfoKHR where
-        type FieldType "sType" VkAndroidSurfaceCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkAndroidSurfaceCreateInfoKHR =
-             #{offset VkAndroidSurfaceCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkAndroidSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkAndroidSurfaceCreateInfoKHR where
-        type FieldType "pNext" VkAndroidSurfaceCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkAndroidSurfaceCreateInfoKHR =
-             #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkAndroidSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkAndroidSurfaceCreateInfoKHR where
-        type FieldType "flags" VkAndroidSurfaceCreateInfoKHR =
-             VkAndroidSurfaceCreateFlagsKHR
-        type FieldOptional "flags" VkAndroidSurfaceCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkAndroidSurfaceCreateInfoKHR =
-             #{offset VkAndroidSurfaceCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkAndroidSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "window" VkAndroidSurfaceCreateInfoKHR where
-        type FieldType "window" VkAndroidSurfaceCreateInfoKHR =
-             Ptr ANativeWindow
-        type FieldOptional "window" VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "window" VkAndroidSurfaceCreateInfoKHR =
-             #{offset VkAndroidSurfaceCreateInfoKHR, window}
-        type FieldIsArray "window" VkAndroidSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkAndroidSurfaceCreateInfoKHR, window}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "window" VkAndroidSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkAndroidSurfaceCreateInfoKHR, window})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, window}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "window" VkAndroidSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkAndroidSurfaceCreateInfoKHR, window}
-
-instance Show VkAndroidSurfaceCreateInfoKHR where
-        showsPrec d x
-          = showString "VkAndroidSurfaceCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "window = " .
-                                  showsPrec d (getField @"window" x) . showChar '}'
-
--- | > typedef struct VkExternalFormatANDROID {
---   >     VkStructureType sType;
---   >     void*                              pNext;
---   >     uint64_t                           externalFormat;
---   > } VkExternalFormatANDROID;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalFormatANDROID VkExternalFormatANDROID registry at www.khronos.org>
-type VkExternalFormatANDROID =
-     VulkanStruct VkExternalFormatANDROID' -- ' closing tick for hsc2hs
-
-data VkExternalFormatANDROID' -- ' closing tick for hsc2hs
-
-instance Eq VkExternalFormatANDROID where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExternalFormatANDROID where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExternalFormatANDROID where
-        sizeOf ~_ = #{size VkExternalFormatANDROID}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkExternalFormatANDROID}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExternalFormatANDROID where
-        type StructFields VkExternalFormatANDROID =
-             '["sType", "pNext", "externalFormat"] -- ' closing tick for hsc2hs
-        type CUnionType VkExternalFormatANDROID = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExternalFormatANDROID = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExternalFormatANDROID =
-             '[VkImageCreateInfo, VkSamplerYcbcrConversionCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExternalFormatANDROID where
-        type FieldType "sType" VkExternalFormatANDROID = VkStructureType
-        type FieldOptional "sType" VkExternalFormatANDROID = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExternalFormatANDROID =
-             #{offset VkExternalFormatANDROID, sType}
-        type FieldIsArray "sType" VkExternalFormatANDROID = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExternalFormatANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExternalFormatANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFormatANDROID, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalFormatANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExternalFormatANDROID where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalFormatANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExternalFormatANDROID where
-        type FieldType "pNext" VkExternalFormatANDROID = Ptr Void
-        type FieldOptional "pNext" VkExternalFormatANDROID = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExternalFormatANDROID =
-             #{offset VkExternalFormatANDROID, pNext}
-        type FieldIsArray "pNext" VkExternalFormatANDROID = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkExternalFormatANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExternalFormatANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFormatANDROID, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalFormatANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExternalFormatANDROID where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalFormatANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "externalFormat" VkExternalFormatANDROID where
-        type FieldType "externalFormat" VkExternalFormatANDROID = Word64
-        type FieldOptional "externalFormat" VkExternalFormatANDROID =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "externalFormat" VkExternalFormatANDROID =
-             #{offset VkExternalFormatANDROID, externalFormat}
-        type FieldIsArray "externalFormat" VkExternalFormatANDROID = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExternalFormatANDROID, externalFormat}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "externalFormat" VkExternalFormatANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExternalFormatANDROID, externalFormat})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExternalFormatANDROID, externalFormat}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "externalFormat" VkExternalFormatANDROID where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExternalFormatANDROID, externalFormat}
-
-instance Show VkExternalFormatANDROID where
-        showsPrec d x
-          = showString "VkExternalFormatANDROID {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "externalFormat = " .
-                            showsPrec d (getField @"externalFormat" x) . showChar '}'
-
--- | > typedef struct VkImportAndroidHardwareBufferInfoANDROID {
---   >     VkStructureType sType;
---   >     const void*                        pNext;
---   >     struct AHardwareBuffer*            buffer;
---   > } VkImportAndroidHardwareBufferInfoANDROID;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportAndroidHardwareBufferInfoANDROID VkImportAndroidHardwareBufferInfoANDROID registry at www.khronos.org>
-type VkImportAndroidHardwareBufferInfoANDROID =
-     VulkanStruct VkImportAndroidHardwareBufferInfoANDROID' -- ' closing tick for hsc2hs
-
-data VkImportAndroidHardwareBufferInfoANDROID' -- ' closing tick for hsc2hs
-
-instance Eq VkImportAndroidHardwareBufferInfoANDROID where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportAndroidHardwareBufferInfoANDROID where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportAndroidHardwareBufferInfoANDROID where
-        sizeOf ~_
-          = #{size VkImportAndroidHardwareBufferInfoANDROID}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImportAndroidHardwareBufferInfoANDROID}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImportAndroidHardwareBufferInfoANDROID
-         where
-        type StructFields VkImportAndroidHardwareBufferInfoANDROID =
-             '["sType", "pNext", "buffer"] -- ' closing tick for hsc2hs
-        type CUnionType VkImportAndroidHardwareBufferInfoANDROID = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportAndroidHardwareBufferInfoANDROID = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportAndroidHardwareBufferInfoANDROID =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportAndroidHardwareBufferInfoANDROID where
-        type FieldType "sType" VkImportAndroidHardwareBufferInfoANDROID =
-             VkStructureType
-        type FieldOptional "sType" VkImportAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportAndroidHardwareBufferInfoANDROID =
-             #{offset VkImportAndroidHardwareBufferInfoANDROID, sType}
-        type FieldIsArray "sType" VkImportAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportAndroidHardwareBufferInfoANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportAndroidHardwareBufferInfoANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportAndroidHardwareBufferInfoANDROID, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportAndroidHardwareBufferInfoANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportAndroidHardwareBufferInfoANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportAndroidHardwareBufferInfoANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportAndroidHardwareBufferInfoANDROID where
-        type FieldType "pNext" VkImportAndroidHardwareBufferInfoANDROID =
-             Ptr Void
-        type FieldOptional "pNext" VkImportAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportAndroidHardwareBufferInfoANDROID =
-             #{offset VkImportAndroidHardwareBufferInfoANDROID, pNext}
-        type FieldIsArray "pNext" VkImportAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportAndroidHardwareBufferInfoANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportAndroidHardwareBufferInfoANDROID where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportAndroidHardwareBufferInfoANDROID, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportAndroidHardwareBufferInfoANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportAndroidHardwareBufferInfoANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportAndroidHardwareBufferInfoANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkImportAndroidHardwareBufferInfoANDROID where
-        type FieldType "buffer" VkImportAndroidHardwareBufferInfoANDROID =
-             Ptr AHardwareBuffer
-        type FieldOptional "buffer"
-               VkImportAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkImportAndroidHardwareBufferInfoANDROID
-             =
-             #{offset VkImportAndroidHardwareBufferInfoANDROID, buffer}
-        type FieldIsArray "buffer" VkImportAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportAndroidHardwareBufferInfoANDROID, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkImportAndroidHardwareBufferInfoANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportAndroidHardwareBufferInfoANDROID, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportAndroidHardwareBufferInfoANDROID, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkImportAndroidHardwareBufferInfoANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportAndroidHardwareBufferInfoANDROID, buffer}
-
-instance Show VkImportAndroidHardwareBufferInfoANDROID where
-        showsPrec d x
-          = showString "VkImportAndroidHardwareBufferInfoANDROID {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "buffer = " .
-                            showsPrec d (getField @"buffer" x) . showChar '}'
-
--- | > typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
---   >     VkStructureType sType;
---   >     const void*                        pNext;
---   >     VkDeviceMemory                     memory;
---   > } VkMemoryGetAndroidHardwareBufferInfoANDROID;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryGetAndroidHardwareBufferInfoANDROID VkMemoryGetAndroidHardwareBufferInfoANDROID registry at www.khronos.org>
-type VkMemoryGetAndroidHardwareBufferInfoANDROID =
-     VulkanStruct VkMemoryGetAndroidHardwareBufferInfoANDROID' -- ' closing tick for hsc2hs
-
-data VkMemoryGetAndroidHardwareBufferInfoANDROID' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryGetAndroidHardwareBufferInfoANDROID where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryGetAndroidHardwareBufferInfoANDROID where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryGetAndroidHardwareBufferInfoANDROID where
-        sizeOf ~_
-          = #{size VkMemoryGetAndroidHardwareBufferInfoANDROID}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryGetAndroidHardwareBufferInfoANDROID}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryGetAndroidHardwareBufferInfoANDROID
-         where
-        type StructFields VkMemoryGetAndroidHardwareBufferInfoANDROID =
-             '["sType", "pNext", "memory"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryGetAndroidHardwareBufferInfoANDROID =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryGetAndroidHardwareBufferInfoANDROID =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryGetAndroidHardwareBufferInfoANDROID =
-             '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryGetAndroidHardwareBufferInfoANDROID where
-        type FieldType "sType" VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = VkStructureType
-        type FieldOptional "sType"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             =
-             #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, sType}
-        type FieldIsArray "sType"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryGetAndroidHardwareBufferInfoANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryGetAndroidHardwareBufferInfoANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryGetAndroidHardwareBufferInfoANDROID where
-        type FieldType "pNext" VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             =
-             #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, pNext}
-        type FieldIsArray "pNext"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryGetAndroidHardwareBufferInfoANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryGetAndroidHardwareBufferInfoANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "memory" VkMemoryGetAndroidHardwareBufferInfoANDROID where
-        type FieldType "memory" VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = VkDeviceMemory
-        type FieldOptional "memory"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memory"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             =
-             #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, memory}
-        type FieldIsArray "memory"
-               VkMemoryGetAndroidHardwareBufferInfoANDROID
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, memory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memory" VkMemoryGetAndroidHardwareBufferInfoANDROID
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, memory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, memory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memory" VkMemoryGetAndroidHardwareBufferInfoANDROID
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, memory}
-
-instance Show VkMemoryGetAndroidHardwareBufferInfoANDROID where
-        showsPrec d x
-          = showString "VkMemoryGetAndroidHardwareBufferInfoANDROID {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memory = " .
-                            showsPrec d (getField @"memory" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.PlatformAndroidKhr
+       (VkAndroidHardwareBufferFormatPropertiesANDROID,
+        VkAndroidHardwareBufferPropertiesANDROID,
+        VkAndroidHardwareBufferUsageANDROID, VkAndroidSurfaceCreateInfoKHR,
+        VkExternalFormatANDROID, VkImportAndroidHardwareBufferInfoANDROID,
+        VkMemoryGetAndroidHardwareBufferInfoANDROID)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes               (VkDeviceSize)
+import Graphics.Vulkan.Types.Bitmasks                (VkAndroidSurfaceCreateFlagsKHR)
+import Graphics.Vulkan.Types.Defines                 (AHardwareBuffer,
+                                                      ANativeWindow)
+import Graphics.Vulkan.Types.Enum.ChromaLocation     (VkChromaLocation)
+import Graphics.Vulkan.Types.Enum.Format             (VkFormat,
+                                                      VkFormatFeatureFlags)
+import Graphics.Vulkan.Types.Enum.Sampler            (VkSamplerYcbcrModelConversion,
+                                                      VkSamplerYcbcrRange)
+import Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
+import Graphics.Vulkan.Types.Handles                 (VkDeviceMemory)
+import Graphics.Vulkan.Types.Struct.ComponentMapping (VkComponentMapping)
+import Graphics.Vulkan.Types.Struct.Image            (VkImageCreateInfo,
+                                                      VkImageFormatProperties2)
+import Graphics.Vulkan.Types.Struct.Memory           (VkMemoryAllocateInfo)
+import Graphics.Vulkan.Types.Struct.Sampler          (VkSamplerYcbcrConversionCreateInfo)
+
+-- | > typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID {
+--   >     VkStructureType sType;
+--   >     void*                              pNext;
+--   >     VkFormat                           format;
+--   >     uint64_t                           externalFormat;
+--   >     VkFormatFeatureFlags               formatFeatures;
+--   >     VkComponentMapping                 samplerYcbcrConversionComponents;
+--   >     VkSamplerYcbcrModelConversion      suggestedYcbcrModel;
+--   >     VkSamplerYcbcrRange                suggestedYcbcrRange;
+--   >     VkChromaLocation                   suggestedXChromaOffset;
+--   >     VkChromaLocation                   suggestedYChromaOffset;
+--   > } VkAndroidHardwareBufferFormatPropertiesANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAndroidHardwareBufferFormatPropertiesANDROID VkAndroidHardwareBufferFormatPropertiesANDROID registry at www.khronos.org>
+type VkAndroidHardwareBufferFormatPropertiesANDROID =
+     VkStruct VkAndroidHardwareBufferFormatPropertiesANDROID' -- ' closing tick for hsc2hs
+
+data VkAndroidHardwareBufferFormatPropertiesANDROID' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkAndroidHardwareBufferFormatPropertiesANDROID
+         where
+    type StructRep VkAndroidHardwareBufferFormatPropertiesANDROID =
+         'StructMeta "VkAndroidHardwareBufferFormatPropertiesANDROID" -- ' closing tick for hsc2hs
+           VkAndroidHardwareBufferFormatPropertiesANDROID
+           #{size VkAndroidHardwareBufferFormatPropertiesANDROID}
+           #{alignment VkAndroidHardwareBufferFormatPropertiesANDROID}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "externalFormat" Word64 'False 
+                                                        #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, externalFormat}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "formatFeatures" VkFormatFeatureFlags 'False 
+                                                                      #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, formatFeatures}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "samplerYcbcrConversionComponents" VkComponentMapping -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, samplerYcbcrConversionComponents}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "suggestedYcbcrModel" VkSamplerYcbcrModelConversion -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrModel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "suggestedYcbcrRange" VkSamplerYcbcrRange 'False
+                #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYcbcrRange}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "suggestedXChromaOffset" VkChromaLocation 'False
+                #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedXChromaOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "suggestedYChromaOffset" VkChromaLocation 'False
+                #{offset VkAndroidHardwareBufferFormatPropertiesANDROID, suggestedYChromaOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkAndroidHardwareBufferPropertiesANDROID] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkAndroidHardwareBufferPropertiesANDROID {
+--   >     VkStructureType sType;
+--   >     void*                              pNext;
+--   >     VkDeviceSize                       allocationSize;
+--   >     uint32_t                           memoryTypeBits;
+--   > } VkAndroidHardwareBufferPropertiesANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAndroidHardwareBufferPropertiesANDROID VkAndroidHardwareBufferPropertiesANDROID registry at www.khronos.org>
+type VkAndroidHardwareBufferPropertiesANDROID =
+     VkStruct VkAndroidHardwareBufferPropertiesANDROID' -- ' closing tick for hsc2hs
+
+data VkAndroidHardwareBufferPropertiesANDROID' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkAndroidHardwareBufferPropertiesANDROID
+         where
+    type StructRep VkAndroidHardwareBufferPropertiesANDROID =
+         'StructMeta "VkAndroidHardwareBufferPropertiesANDROID" -- ' closing tick for hsc2hs
+           VkAndroidHardwareBufferPropertiesANDROID
+           #{size VkAndroidHardwareBufferPropertiesANDROID}
+           #{alignment VkAndroidHardwareBufferPropertiesANDROID}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkAndroidHardwareBufferPropertiesANDROID, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkAndroidHardwareBufferPropertiesANDROID, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "allocationSize" VkDeviceSize 'False 
+                                                              #{offset VkAndroidHardwareBufferPropertiesANDROID, allocationSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryTypeBits" Word32 'False 
+                                                        #{offset VkAndroidHardwareBufferPropertiesANDROID, memoryTypeBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkAndroidHardwareBufferUsageANDROID {
+--   >     VkStructureType sType;
+--   >     void*                              pNext;
+--   >     uint64_t                           androidHardwareBufferUsage;
+--   > } VkAndroidHardwareBufferUsageANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAndroidHardwareBufferUsageANDROID VkAndroidHardwareBufferUsageANDROID registry at www.khronos.org>
+type VkAndroidHardwareBufferUsageANDROID =
+     VkStruct VkAndroidHardwareBufferUsageANDROID' -- ' closing tick for hsc2hs
+
+data VkAndroidHardwareBufferUsageANDROID' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkAndroidHardwareBufferUsageANDROID where
+    type StructRep VkAndroidHardwareBufferUsageANDROID =
+         'StructMeta "VkAndroidHardwareBufferUsageANDROID" -- ' closing tick for hsc2hs
+           VkAndroidHardwareBufferUsageANDROID
+           #{size VkAndroidHardwareBufferUsageANDROID}
+           #{alignment VkAndroidHardwareBufferUsageANDROID}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkAndroidHardwareBufferUsageANDROID, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkAndroidHardwareBufferUsageANDROID, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "androidHardwareBufferUsage" Word64 'False 
+                                                                    #{offset VkAndroidHardwareBufferUsageANDROID, androidHardwareBufferUsage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkAndroidSurfaceCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                                    pNext;
+--   >     VkAndroidSurfaceCreateFlagsKHR flags;
+--   >     struct ANativeWindow*    window;
+--   > } VkAndroidSurfaceCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkAndroidSurfaceCreateInfoKHR VkAndroidSurfaceCreateInfoKHR registry at www.khronos.org>
+type VkAndroidSurfaceCreateInfoKHR =
+     VkStruct VkAndroidSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+
+data VkAndroidSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkAndroidSurfaceCreateInfoKHR where
+    type StructRep VkAndroidSurfaceCreateInfoKHR =
+         'StructMeta "VkAndroidSurfaceCreateInfoKHR" -- ' closing tick for hsc2hs
+           VkAndroidSurfaceCreateInfoKHR
+           #{size VkAndroidSurfaceCreateInfoKHR}
+           #{alignment VkAndroidSurfaceCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkAndroidSurfaceCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkAndroidSurfaceCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkAndroidSurfaceCreateFlagsKHR 'True 
+                                                                      #{offset VkAndroidSurfaceCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "window" (Ptr ANativeWindow) 'False 
+                                                             #{offset VkAndroidSurfaceCreateInfoKHR, window}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkExternalFormatANDROID {
+--   >     VkStructureType sType;
+--   >     void*                              pNext;
+--   >     uint64_t                           externalFormat;
+--   > } VkExternalFormatANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExternalFormatANDROID VkExternalFormatANDROID registry at www.khronos.org>
+type VkExternalFormatANDROID = VkStruct VkExternalFormatANDROID' -- ' closing tick for hsc2hs
+
+data VkExternalFormatANDROID' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExternalFormatANDROID where
+    type StructRep VkExternalFormatANDROID =
+         'StructMeta "VkExternalFormatANDROID" VkExternalFormatANDROID -- ' closing tick for hsc2hs
+           #{size VkExternalFormatANDROID}
+           #{alignment VkExternalFormatANDROID}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExternalFormatANDROID, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExternalFormatANDROID, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "externalFormat" Word64 'False 
+                                                        #{offset VkExternalFormatANDROID, externalFormat}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageCreateInfo, VkSamplerYcbcrConversionCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImportAndroidHardwareBufferInfoANDROID {
+--   >     VkStructureType sType;
+--   >     const void*                        pNext;
+--   >     struct AHardwareBuffer*            buffer;
+--   > } VkImportAndroidHardwareBufferInfoANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportAndroidHardwareBufferInfoANDROID VkImportAndroidHardwareBufferInfoANDROID registry at www.khronos.org>
+type VkImportAndroidHardwareBufferInfoANDROID =
+     VkStruct VkImportAndroidHardwareBufferInfoANDROID' -- ' closing tick for hsc2hs
+
+data VkImportAndroidHardwareBufferInfoANDROID' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImportAndroidHardwareBufferInfoANDROID
+         where
+    type StructRep VkImportAndroidHardwareBufferInfoANDROID =
+         'StructMeta "VkImportAndroidHardwareBufferInfoANDROID" -- ' closing tick for hsc2hs
+           VkImportAndroidHardwareBufferInfoANDROID
+           #{size VkImportAndroidHardwareBufferInfoANDROID}
+           #{alignment VkImportAndroidHardwareBufferInfoANDROID}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportAndroidHardwareBufferInfoANDROID, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportAndroidHardwareBufferInfoANDROID, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "buffer" (Ptr AHardwareBuffer) 'False 
+                                                               #{offset VkImportAndroidHardwareBufferInfoANDROID, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID {
+--   >     VkStructureType sType;
+--   >     const void*                        pNext;
+--   >     VkDeviceMemory                     memory;
+--   > } VkMemoryGetAndroidHardwareBufferInfoANDROID;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryGetAndroidHardwareBufferInfoANDROID VkMemoryGetAndroidHardwareBufferInfoANDROID registry at www.khronos.org>
+type VkMemoryGetAndroidHardwareBufferInfoANDROID =
+     VkStruct VkMemoryGetAndroidHardwareBufferInfoANDROID' -- ' closing tick for hsc2hs
+
+data VkMemoryGetAndroidHardwareBufferInfoANDROID' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryGetAndroidHardwareBufferInfoANDROID
+         where
+    type StructRep VkMemoryGetAndroidHardwareBufferInfoANDROID =
+         'StructMeta "VkMemoryGetAndroidHardwareBufferInfoANDROID" -- ' closing tick for hsc2hs
+           VkMemoryGetAndroidHardwareBufferInfoANDROID
+           #{size VkMemoryGetAndroidHardwareBufferInfoANDROID}
+           #{alignment VkMemoryGetAndroidHardwareBufferInfoANDROID}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memory" VkDeviceMemory 'False 
+                                                        #{offset VkMemoryGetAndroidHardwareBufferInfoANDROID, memory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformIosMvk.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformIosMvk.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformIosMvk.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformIosMvk.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PlatformIosMvk
-       (VkIOSSurfaceCreateInfoMVK, VkIOSSurfaceCreateInfoMVK') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkIOSSurfaceCreateInfoMVK) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkIOSSurfaceCreateFlagsMVK)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkIOSSurfaceCreateInfoMVK {
 --   >     VkStructureType sType;
@@ -25,181 +21,35 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkIOSSurfaceCreateInfoMVK VkIOSSurfaceCreateInfoMVK registry at www.khronos.org>
 type VkIOSSurfaceCreateInfoMVK =
-     VulkanStruct VkIOSSurfaceCreateInfoMVK' -- ' closing tick for hsc2hs
+     VkStruct VkIOSSurfaceCreateInfoMVK' -- ' closing tick for hsc2hs
 
 data VkIOSSurfaceCreateInfoMVK' -- ' closing tick for hsc2hs
 
-instance Eq VkIOSSurfaceCreateInfoMVK where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkIOSSurfaceCreateInfoMVK where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkIOSSurfaceCreateInfoMVK where
-        sizeOf ~_ = #{size VkIOSSurfaceCreateInfoMVK}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkIOSSurfaceCreateInfoMVK}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkIOSSurfaceCreateInfoMVK where
-        type StructFields VkIOSSurfaceCreateInfoMVK =
-             '["sType", "pNext", "flags", "pView"] -- ' closing tick for hsc2hs
-        type CUnionType VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkIOSSurfaceCreateInfoMVK = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkIOSSurfaceCreateInfoMVK where
-        type FieldType "sType" VkIOSSurfaceCreateInfoMVK = VkStructureType
-        type FieldOptional "sType" VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkIOSSurfaceCreateInfoMVK =
-             #{offset VkIOSSurfaceCreateInfoMVK, sType}
-        type FieldIsArray "sType" VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIOSSurfaceCreateInfoMVK, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkIOSSurfaceCreateInfoMVK where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkIOSSurfaceCreateInfoMVK where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkIOSSurfaceCreateInfoMVK where
-        type FieldType "pNext" VkIOSSurfaceCreateInfoMVK = Ptr Void
-        type FieldOptional "pNext" VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkIOSSurfaceCreateInfoMVK =
-             #{offset VkIOSSurfaceCreateInfoMVK, pNext}
-        type FieldIsArray "pNext" VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIOSSurfaceCreateInfoMVK, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkIOSSurfaceCreateInfoMVK where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkIOSSurfaceCreateInfoMVK where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkIOSSurfaceCreateInfoMVK where
-        type FieldType "flags" VkIOSSurfaceCreateInfoMVK =
-             VkIOSSurfaceCreateFlagsMVK
-        type FieldOptional "flags" VkIOSSurfaceCreateInfoMVK = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkIOSSurfaceCreateInfoMVK =
-             #{offset VkIOSSurfaceCreateInfoMVK, flags}
-        type FieldIsArray "flags" VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIOSSurfaceCreateInfoMVK, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkIOSSurfaceCreateInfoMVK where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkIOSSurfaceCreateInfoMVK where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pView" VkIOSSurfaceCreateInfoMVK where
-        type FieldType "pView" VkIOSSurfaceCreateInfoMVK = Ptr Void
-        type FieldOptional "pView" VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pView" VkIOSSurfaceCreateInfoMVK =
-             #{offset VkIOSSurfaceCreateInfoMVK, pView}
-        type FieldIsArray "pView" VkIOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkIOSSurfaceCreateInfoMVK, pView}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pView" VkIOSSurfaceCreateInfoMVK where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkIOSSurfaceCreateInfoMVK, pView})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pView}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pView" VkIOSSurfaceCreateInfoMVK where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkIOSSurfaceCreateInfoMVK, pView}
-
-instance Show VkIOSSurfaceCreateInfoMVK where
-        showsPrec d x
-          = showString "VkIOSSurfaceCreateInfoMVK {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "pView = " .
-                                  showsPrec d (getField @"pView" x) . showChar '}'
+    type StructRep VkIOSSurfaceCreateInfoMVK =
+         'StructMeta "VkIOSSurfaceCreateInfoMVK" VkIOSSurfaceCreateInfoMVK -- ' closing tick for hsc2hs
+           #{size VkIOSSurfaceCreateInfoMVK}
+           #{alignment VkIOSSurfaceCreateInfoMVK}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkIOSSurfaceCreateInfoMVK, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkIOSSurfaceCreateInfoMVK, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkIOSSurfaceCreateFlagsMVK 'True 
+                                                                  #{offset VkIOSSurfaceCreateInfoMVK, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pView" (Ptr Void) 'False 
+                                                   #{offset VkIOSSurfaceCreateInfoMVK, pView}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformMacosMvk.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformMacosMvk.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformMacosMvk.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformMacosMvk.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PlatformMacosMvk
-       (VkMacOSSurfaceCreateInfoMVK, VkMacOSSurfaceCreateInfoMVK') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkMacOSSurfaceCreateInfoMVK) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkMacOSSurfaceCreateFlagsMVK)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMacOSSurfaceCreateInfoMVK {
 --   >     VkStructureType sType;
@@ -25,182 +21,36 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMacOSSurfaceCreateInfoMVK VkMacOSSurfaceCreateInfoMVK registry at www.khronos.org>
 type VkMacOSSurfaceCreateInfoMVK =
-     VulkanStruct VkMacOSSurfaceCreateInfoMVK' -- ' closing tick for hsc2hs
+     VkStruct VkMacOSSurfaceCreateInfoMVK' -- ' closing tick for hsc2hs
 
 data VkMacOSSurfaceCreateInfoMVK' -- ' closing tick for hsc2hs
 
-instance Eq VkMacOSSurfaceCreateInfoMVK where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMacOSSurfaceCreateInfoMVK where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMacOSSurfaceCreateInfoMVK where
-        sizeOf ~_ = #{size VkMacOSSurfaceCreateInfoMVK}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMacOSSurfaceCreateInfoMVK}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkMacOSSurfaceCreateInfoMVK where
-        type StructFields VkMacOSSurfaceCreateInfoMVK =
-             '["sType", "pNext", "flags", "pView"] -- ' closing tick for hsc2hs
-        type CUnionType VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMacOSSurfaceCreateInfoMVK = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMacOSSurfaceCreateInfoMVK where
-        type FieldType "sType" VkMacOSSurfaceCreateInfoMVK =
-             VkStructureType
-        type FieldOptional "sType" VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMacOSSurfaceCreateInfoMVK =
-             #{offset VkMacOSSurfaceCreateInfoMVK, sType}
-        type FieldIsArray "sType" VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMacOSSurfaceCreateInfoMVK, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMacOSSurfaceCreateInfoMVK where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMacOSSurfaceCreateInfoMVK where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMacOSSurfaceCreateInfoMVK where
-        type FieldType "pNext" VkMacOSSurfaceCreateInfoMVK = Ptr Void
-        type FieldOptional "pNext" VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMacOSSurfaceCreateInfoMVK =
-             #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
-        type FieldIsArray "pNext" VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMacOSSurfaceCreateInfoMVK where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMacOSSurfaceCreateInfoMVK where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkMacOSSurfaceCreateInfoMVK where
-        type FieldType "flags" VkMacOSSurfaceCreateInfoMVK =
-             VkMacOSSurfaceCreateFlagsMVK
-        type FieldOptional "flags" VkMacOSSurfaceCreateInfoMVK = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkMacOSSurfaceCreateInfoMVK =
-             #{offset VkMacOSSurfaceCreateInfoMVK, flags}
-        type FieldIsArray "flags" VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMacOSSurfaceCreateInfoMVK, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkMacOSSurfaceCreateInfoMVK where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkMacOSSurfaceCreateInfoMVK where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pView" VkMacOSSurfaceCreateInfoMVK where
-        type FieldType "pView" VkMacOSSurfaceCreateInfoMVK = Ptr Void
-        type FieldOptional "pView" VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pView" VkMacOSSurfaceCreateInfoMVK =
-             #{offset VkMacOSSurfaceCreateInfoMVK, pView}
-        type FieldIsArray "pView" VkMacOSSurfaceCreateInfoMVK = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMacOSSurfaceCreateInfoMVK, pView}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pView" VkMacOSSurfaceCreateInfoMVK where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMacOSSurfaceCreateInfoMVK, pView})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pView}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pView" VkMacOSSurfaceCreateInfoMVK where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMacOSSurfaceCreateInfoMVK, pView}
-
-instance Show VkMacOSSurfaceCreateInfoMVK where
-        showsPrec d x
-          = showString "VkMacOSSurfaceCreateInfoMVK {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "pView = " .
-                                  showsPrec d (getField @"pView" x) . showChar '}'
+    type StructRep VkMacOSSurfaceCreateInfoMVK =
+         'StructMeta "VkMacOSSurfaceCreateInfoMVK" -- ' closing tick for hsc2hs
+           VkMacOSSurfaceCreateInfoMVK
+           #{size VkMacOSSurfaceCreateInfoMVK}
+           #{alignment VkMacOSSurfaceCreateInfoMVK}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMacOSSurfaceCreateInfoMVK, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMacOSSurfaceCreateInfoMVK, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkMacOSSurfaceCreateFlagsMVK 'True 
+                                                                    #{offset VkMacOSSurfaceCreateInfoMVK, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pView" (Ptr Void) 'False 
+                                                   #{offset VkMacOSSurfaceCreateInfoMVK, pView}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformMirKhr.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformMirKhr.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformMirKhr.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformMirKhr.hsc
@@ -2,20 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PlatformMirKhr
-       (VkMirSurfaceCreateInfoKHR, VkMirSurfaceCreateInfoKHR') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkMirSurfaceCreateInfoKHR) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkMirSurfaceCreateFlagsKHR)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Include            (MirConnection, MirSurface)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkMirSurfaceCreateInfoKHR {
 --   >     VkStructureType sType;
@@ -27,218 +23,40 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMirSurfaceCreateInfoKHR VkMirSurfaceCreateInfoKHR registry at www.khronos.org>
 type VkMirSurfaceCreateInfoKHR =
-     VulkanStruct VkMirSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+     VkStruct VkMirSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
 
 data VkMirSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkMirSurfaceCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMirSurfaceCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMirSurfaceCreateInfoKHR where
-        sizeOf ~_ = #{size VkMirSurfaceCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkMirSurfaceCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkMirSurfaceCreateInfoKHR where
-        type StructFields VkMirSurfaceCreateInfoKHR =
-             '["sType", "pNext", "flags", "connection", "mirSurface"] -- ' closing tick for hsc2hs
-        type CUnionType VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMirSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMirSurfaceCreateInfoKHR where
-        type FieldType "sType" VkMirSurfaceCreateInfoKHR = VkStructureType
-        type FieldOptional "sType" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMirSurfaceCreateInfoKHR =
-             #{offset VkMirSurfaceCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMirSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMirSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMirSurfaceCreateInfoKHR where
-        type FieldType "pNext" VkMirSurfaceCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMirSurfaceCreateInfoKHR =
-             #{offset VkMirSurfaceCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMirSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMirSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkMirSurfaceCreateInfoKHR where
-        type FieldType "flags" VkMirSurfaceCreateInfoKHR =
-             VkMirSurfaceCreateFlagsKHR
-        type FieldOptional "flags" VkMirSurfaceCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkMirSurfaceCreateInfoKHR =
-             #{offset VkMirSurfaceCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMirSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkMirSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "connection" VkMirSurfaceCreateInfoKHR where
-        type FieldType "connection" VkMirSurfaceCreateInfoKHR =
-             Ptr MirConnection
-        type FieldOptional "connection" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "connection" VkMirSurfaceCreateInfoKHR =
-             #{offset VkMirSurfaceCreateInfoKHR, connection}
-        type FieldIsArray "connection" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMirSurfaceCreateInfoKHR, connection}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "connection" VkMirSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, connection})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, connection}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "connection" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, connection}
-
-instance {-# OVERLAPPING #-}
-         HasField "mirSurface" VkMirSurfaceCreateInfoKHR where
-        type FieldType "mirSurface" VkMirSurfaceCreateInfoKHR =
-             Ptr MirSurface
-        type FieldOptional "mirSurface" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mirSurface" VkMirSurfaceCreateInfoKHR =
-             #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
-        type FieldIsArray "mirSurface" VkMirSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mirSurface" VkMirSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMirSurfaceCreateInfoKHR, mirSurface})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mirSurface" VkMirSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
-
-instance Show VkMirSurfaceCreateInfoKHR where
-        showsPrec d x
-          = showString "VkMirSurfaceCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "connection = " .
-                                  showsPrec d (getField @"connection" x) .
-                                    showString ", " .
-                                      showString "mirSurface = " .
-                                        showsPrec d (getField @"mirSurface" x) . showChar '}'
+    type StructRep VkMirSurfaceCreateInfoKHR =
+         'StructMeta "VkMirSurfaceCreateInfoKHR" VkMirSurfaceCreateInfoKHR -- ' closing tick for hsc2hs
+           #{size VkMirSurfaceCreateInfoKHR}
+           #{alignment VkMirSurfaceCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMirSurfaceCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMirSurfaceCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkMirSurfaceCreateFlagsKHR 'True 
+                                                                  #{offset VkMirSurfaceCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "connection" (Ptr MirConnection) 'False 
+                                                                 #{offset VkMirSurfaceCreateInfoKHR, connection}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mirSurface" (Ptr MirSurface) 'False 
+                                                              #{offset VkMirSurfaceCreateInfoKHR, mirSurface}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformViNn.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformViNn.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformViNn.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformViNn.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PlatformViNn
-       (VkViSurfaceCreateInfoNN, VkViSurfaceCreateInfoNN') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkViSurfaceCreateInfoNN) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkViSurfaceCreateFlagsNN)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkViSurfaceCreateInfoNN {
 --   >     VkStructureType sType;
@@ -24,178 +20,35 @@
 --   > } VkViSurfaceCreateInfoNN;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkViSurfaceCreateInfoNN VkViSurfaceCreateInfoNN registry at www.khronos.org>
-type VkViSurfaceCreateInfoNN =
-     VulkanStruct VkViSurfaceCreateInfoNN' -- ' closing tick for hsc2hs
+type VkViSurfaceCreateInfoNN = VkStruct VkViSurfaceCreateInfoNN' -- ' closing tick for hsc2hs
 
 data VkViSurfaceCreateInfoNN' -- ' closing tick for hsc2hs
 
-instance Eq VkViSurfaceCreateInfoNN where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkViSurfaceCreateInfoNN where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkViSurfaceCreateInfoNN where
-        sizeOf ~_ = #{size VkViSurfaceCreateInfoNN}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkViSurfaceCreateInfoNN}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkViSurfaceCreateInfoNN where
-        type StructFields VkViSurfaceCreateInfoNN =
-             '["sType", "pNext", "flags", "window"] -- ' closing tick for hsc2hs
-        type CUnionType VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkViSurfaceCreateInfoNN = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkViSurfaceCreateInfoNN where
-        type FieldType "sType" VkViSurfaceCreateInfoNN = VkStructureType
-        type FieldOptional "sType" VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkViSurfaceCreateInfoNN =
-             #{offset VkViSurfaceCreateInfoNN, sType}
-        type FieldIsArray "sType" VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViSurfaceCreateInfoNN, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkViSurfaceCreateInfoNN where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkViSurfaceCreateInfoNN where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkViSurfaceCreateInfoNN where
-        type FieldType "pNext" VkViSurfaceCreateInfoNN = Ptr Void
-        type FieldOptional "pNext" VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkViSurfaceCreateInfoNN =
-             #{offset VkViSurfaceCreateInfoNN, pNext}
-        type FieldIsArray "pNext" VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViSurfaceCreateInfoNN, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkViSurfaceCreateInfoNN where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkViSurfaceCreateInfoNN where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkViSurfaceCreateInfoNN where
-        type FieldType "flags" VkViSurfaceCreateInfoNN =
-             VkViSurfaceCreateFlagsNN
-        type FieldOptional "flags" VkViSurfaceCreateInfoNN = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkViSurfaceCreateInfoNN =
-             #{offset VkViSurfaceCreateInfoNN, flags}
-        type FieldIsArray "flags" VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViSurfaceCreateInfoNN, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkViSurfaceCreateInfoNN where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkViSurfaceCreateInfoNN where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "window" VkViSurfaceCreateInfoNN where
-        type FieldType "window" VkViSurfaceCreateInfoNN = Ptr Void
-        type FieldOptional "window" VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "window" VkViSurfaceCreateInfoNN =
-             #{offset VkViSurfaceCreateInfoNN, window}
-        type FieldIsArray "window" VkViSurfaceCreateInfoNN = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViSurfaceCreateInfoNN, window}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "window" VkViSurfaceCreateInfoNN where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViSurfaceCreateInfoNN, window})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViSurfaceCreateInfoNN, window}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "window" VkViSurfaceCreateInfoNN where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViSurfaceCreateInfoNN, window}
-
-instance Show VkViSurfaceCreateInfoNN where
-        showsPrec d x
-          = showString "VkViSurfaceCreateInfoNN {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "window = " .
-                                  showsPrec d (getField @"window" x) . showChar '}'
+    type StructRep VkViSurfaceCreateInfoNN =
+         'StructMeta "VkViSurfaceCreateInfoNN" VkViSurfaceCreateInfoNN -- ' closing tick for hsc2hs
+           #{size VkViSurfaceCreateInfoNN}
+           #{alignment VkViSurfaceCreateInfoNN}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkViSurfaceCreateInfoNN, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkViSurfaceCreateInfoNN, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkViSurfaceCreateFlagsNN 'True 
+                                                                #{offset VkViSurfaceCreateInfoNN, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "window" (Ptr Void) 'False 
+                                                    #{offset VkViSurfaceCreateInfoNN, window}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformWaylandKhr.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformWaylandKhr.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformWaylandKhr.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformWaylandKhr.hsc
@@ -2,21 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PlatformWaylandKhr
-       (VkWaylandSurfaceCreateInfoKHR, VkWaylandSurfaceCreateInfoKHR') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
+       (VkWaylandSurfaceCreateInfoKHR) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkWaylandSurfaceCreateFlagsKHR)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Include            (WlDisplay, WlSurface)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkWaylandSurfaceCreateInfoKHR {
 --   >     VkStructureType sType;
@@ -28,220 +23,41 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkWaylandSurfaceCreateInfoKHR VkWaylandSurfaceCreateInfoKHR registry at www.khronos.org>
 type VkWaylandSurfaceCreateInfoKHR =
-     VulkanStruct VkWaylandSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+     VkStruct VkWaylandSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
 
 data VkWaylandSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkWaylandSurfaceCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkWaylandSurfaceCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkWaylandSurfaceCreateInfoKHR where
-        sizeOf ~_ = #{size VkWaylandSurfaceCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkWaylandSurfaceCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkWaylandSurfaceCreateInfoKHR where
-        type StructFields VkWaylandSurfaceCreateInfoKHR =
-             '["sType", "pNext", "flags", "display", "surface"] -- ' closing tick for hsc2hs
-        type CUnionType VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkWaylandSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkWaylandSurfaceCreateInfoKHR where
-        type FieldType "sType" VkWaylandSurfaceCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkWaylandSurfaceCreateInfoKHR =
-             #{offset VkWaylandSurfaceCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWaylandSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkWaylandSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkWaylandSurfaceCreateInfoKHR where
-        type FieldType "pNext" VkWaylandSurfaceCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkWaylandSurfaceCreateInfoKHR =
-             #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkWaylandSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkWaylandSurfaceCreateInfoKHR where
-        type FieldType "flags" VkWaylandSurfaceCreateInfoKHR =
-             VkWaylandSurfaceCreateFlagsKHR
-        type FieldOptional "flags" VkWaylandSurfaceCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkWaylandSurfaceCreateInfoKHR =
-             #{offset VkWaylandSurfaceCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWaylandSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkWaylandSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "display" VkWaylandSurfaceCreateInfoKHR where
-        type FieldType "display" VkWaylandSurfaceCreateInfoKHR =
-             Ptr WlDisplay
-        type FieldOptional "display" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "display" VkWaylandSurfaceCreateInfoKHR =
-             #{offset VkWaylandSurfaceCreateInfoKHR, display}
-        type FieldIsArray "display" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWaylandSurfaceCreateInfoKHR, display}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "display" VkWaylandSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, display})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, display}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "display" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, display}
-
-instance {-# OVERLAPPING #-}
-         HasField "surface" VkWaylandSurfaceCreateInfoKHR where
-        type FieldType "surface" VkWaylandSurfaceCreateInfoKHR =
-             Ptr WlSurface
-        type FieldOptional "surface" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "surface" VkWaylandSurfaceCreateInfoKHR =
-             #{offset VkWaylandSurfaceCreateInfoKHR, surface}
-        type FieldIsArray "surface" VkWaylandSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWaylandSurfaceCreateInfoKHR, surface}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "surface" VkWaylandSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWaylandSurfaceCreateInfoKHR, surface})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, surface}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "surface" VkWaylandSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWaylandSurfaceCreateInfoKHR, surface}
-
-instance Show VkWaylandSurfaceCreateInfoKHR where
-        showsPrec d x
-          = showString "VkWaylandSurfaceCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "display = " .
-                                  showsPrec d (getField @"display" x) .
-                                    showString ", " .
-                                      showString "surface = " .
-                                        showsPrec d (getField @"surface" x) . showChar '}'
+    type StructRep VkWaylandSurfaceCreateInfoKHR =
+         'StructMeta "VkWaylandSurfaceCreateInfoKHR" -- ' closing tick for hsc2hs
+           VkWaylandSurfaceCreateInfoKHR
+           #{size VkWaylandSurfaceCreateInfoKHR}
+           #{alignment VkWaylandSurfaceCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkWaylandSurfaceCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkWaylandSurfaceCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkWaylandSurfaceCreateFlagsKHR 'True 
+                                                                      #{offset VkWaylandSurfaceCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "display" (Ptr WlDisplay) 'False 
+                                                          #{offset VkWaylandSurfaceCreateInfoKHR, display}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "surface" (Ptr WlSurface) 'False 
+                                                          #{offset VkWaylandSurfaceCreateInfoKHR, surface}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformWin32Khr.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformWin32Khr.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformWin32Khr.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformWin32Khr.hsc
@@ -2,4183 +2,857 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.PlatformWin32Khr
-       (VkD3D12FenceSubmitInfoKHR, VkD3D12FenceSubmitInfoKHR', -- ' closing tick for hsc2hs
-        VkExportFenceWin32HandleInfoKHR, VkExportFenceWin32HandleInfoKHR', -- ' closing tick for hsc2hs
-        VkExportMemoryWin32HandleInfoKHR,
-        VkExportMemoryWin32HandleInfoKHR', VkExportMemoryWin32HandleInfoNV, -- ' closing tick for hsc2hs
-        VkExportMemoryWin32HandleInfoNV', -- ' closing tick for hsc2hs
-        VkExportSemaphoreWin32HandleInfoKHR,
-        VkExportSemaphoreWin32HandleInfoKHR', VkFenceGetWin32HandleInfoKHR, -- ' closing tick for hsc2hs
-        VkFenceGetWin32HandleInfoKHR', VkImportFenceWin32HandleInfoKHR, -- ' closing tick for hsc2hs
-        VkImportFenceWin32HandleInfoKHR', VkImportMemoryWin32HandleInfoKHR, -- ' closing tick for hsc2hs
-        VkImportMemoryWin32HandleInfoKHR', VkImportMemoryWin32HandleInfoNV, -- ' closing tick for hsc2hs
-        VkImportMemoryWin32HandleInfoNV', -- ' closing tick for hsc2hs
-        VkImportSemaphoreWin32HandleInfoKHR,
-        VkImportSemaphoreWin32HandleInfoKHR', -- ' closing tick for hsc2hs
-        VkMemoryGetWin32HandleInfoKHR, VkMemoryGetWin32HandleInfoKHR', -- ' closing tick for hsc2hs
-        VkMemoryWin32HandlePropertiesKHR,
-        VkMemoryWin32HandlePropertiesKHR', -- ' closing tick for hsc2hs
-        VkSemaphoreGetWin32HandleInfoKHR,
-        VkSemaphoreGetWin32HandleInfoKHR', -- ' closing tick for hsc2hs
-        VkWin32KeyedMutexAcquireReleaseInfoKHR,
-        VkWin32KeyedMutexAcquireReleaseInfoKHR', -- ' closing tick for hsc2hs
-        VkWin32KeyedMutexAcquireReleaseInfoNV,
-        VkWin32KeyedMutexAcquireReleaseInfoNV', -- ' closing tick for hsc2hs
-        VkWin32SurfaceCreateInfoKHR, VkWin32SurfaceCreateInfoKHR') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                               (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.Bitmasks                 (VkWin32SurfaceCreateFlagsKHR)
-import Graphics.Vulkan.Types.Enum.External            (VkExternalFenceHandleTypeFlagBits,
-                                                       VkExternalMemoryHandleTypeFlagBits,
-                                                       VkExternalMemoryHandleTypeFlagsNV,
-                                                       VkExternalSemaphoreHandleTypeFlagBits)
-import Graphics.Vulkan.Types.Enum.Fence               (VkFenceImportFlags)
-import Graphics.Vulkan.Types.Enum.SemaphoreImportFlag (VkSemaphoreImportFlags)
-import Graphics.Vulkan.Types.Enum.StructureType       (VkStructureType)
-import Graphics.Vulkan.Types.Handles                  (VkDeviceMemory, VkFence,
-                                                       VkSemaphore)
-import Graphics.Vulkan.Types.Include                  (DWORD, HANDLE, HINSTANCE,
-                                                       HWND, LPCWSTR,
-                                                       SECURITY_ATTRIBUTES)
-import Graphics.Vulkan.Types.Struct.Fence             (VkFenceCreateInfo)
-import Graphics.Vulkan.Types.Struct.Memory            (VkMemoryAllocateInfo)
-import Graphics.Vulkan.Types.Struct.Semaphore         (VkSemaphoreCreateInfo)
-import Graphics.Vulkan.Types.Struct.SubmitInfo        (VkSubmitInfo)
-import System.IO.Unsafe                               (unsafeDupablePerformIO)
-
--- | > typedef struct VkD3D12FenceSubmitInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         waitSemaphoreValuesCount;
---   >     const uint64_t* pWaitSemaphoreValues;
---   >     uint32_t         signalSemaphoreValuesCount;
---   >     const uint64_t* pSignalSemaphoreValues;
---   > } VkD3D12FenceSubmitInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkD3D12FenceSubmitInfoKHR VkD3D12FenceSubmitInfoKHR registry at www.khronos.org>
-type VkD3D12FenceSubmitInfoKHR =
-     VulkanStruct VkD3D12FenceSubmitInfoKHR' -- ' closing tick for hsc2hs
-
-data VkD3D12FenceSubmitInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkD3D12FenceSubmitInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkD3D12FenceSubmitInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkD3D12FenceSubmitInfoKHR where
-        sizeOf ~_ = #{size VkD3D12FenceSubmitInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkD3D12FenceSubmitInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkD3D12FenceSubmitInfoKHR where
-        type StructFields VkD3D12FenceSubmitInfoKHR =
-             '["sType", "pNext", "waitSemaphoreValuesCount", -- ' closing tick for hsc2hs
-               "pWaitSemaphoreValues", "signalSemaphoreValuesCount",
-               "pSignalSemaphoreValues"]
-        type CUnionType VkD3D12FenceSubmitInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkD3D12FenceSubmitInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkD3D12FenceSubmitInfoKHR = '[VkSubmitInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkD3D12FenceSubmitInfoKHR where
-        type FieldType "sType" VkD3D12FenceSubmitInfoKHR = VkStructureType
-        type FieldOptional "sType" VkD3D12FenceSubmitInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkD3D12FenceSubmitInfoKHR =
-             #{offset VkD3D12FenceSubmitInfoKHR, sType}
-        type FieldIsArray "sType" VkD3D12FenceSubmitInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkD3D12FenceSubmitInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkD3D12FenceSubmitInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkD3D12FenceSubmitInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkD3D12FenceSubmitInfoKHR where
-        type FieldType "pNext" VkD3D12FenceSubmitInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkD3D12FenceSubmitInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkD3D12FenceSubmitInfoKHR =
-             #{offset VkD3D12FenceSubmitInfoKHR, pNext}
-        type FieldIsArray "pNext" VkD3D12FenceSubmitInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkD3D12FenceSubmitInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkD3D12FenceSubmitInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkD3D12FenceSubmitInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "waitSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR where
-        type FieldType "waitSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
-             = Word32
-        type FieldOptional "waitSemaphoreValuesCount"
-               VkD3D12FenceSubmitInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "waitSemaphoreValuesCount"
-               VkD3D12FenceSubmitInfoKHR
-             =
-             #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
-        type FieldIsArray "waitSemaphoreValuesCount"
-               VkD3D12FenceSubmitInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "waitSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "waitSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR where
-        type FieldType "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR =
-             Ptr Word64
-        type FieldOptional "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR =
-             #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
-        type FieldIsArray "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pWaitSemaphoreValues" VkD3D12FenceSubmitInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
-
-instance {-# OVERLAPPING #-}
-         HasField "signalSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
-         where
-        type FieldType "signalSemaphoreValuesCount"
-               VkD3D12FenceSubmitInfoKHR
-             = Word32
-        type FieldOptional "signalSemaphoreValuesCount"
-               VkD3D12FenceSubmitInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "signalSemaphoreValuesCount"
-               VkD3D12FenceSubmitInfoKHR
-             =
-             #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
-        type FieldIsArray "signalSemaphoreValuesCount"
-               VkD3D12FenceSubmitInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "signalSemaphoreValuesCount" VkD3D12FenceSubmitInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "signalSemaphoreValuesCount"
-           VkD3D12FenceSubmitInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSignalSemaphoreValues" VkD3D12FenceSubmitInfoKHR where
-        type FieldType "pSignalSemaphoreValues" VkD3D12FenceSubmitInfoKHR =
-             Ptr Word64
-        type FieldOptional "pSignalSemaphoreValues"
-               VkD3D12FenceSubmitInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pSignalSemaphoreValues" VkD3D12FenceSubmitInfoKHR
-             =
-             #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
-        type FieldIsArray "pSignalSemaphoreValues"
-               VkD3D12FenceSubmitInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSignalSemaphoreValues" VkD3D12FenceSubmitInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSignalSemaphoreValues" VkD3D12FenceSubmitInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
-
-instance Show VkD3D12FenceSubmitInfoKHR where
-        showsPrec d x
-          = showString "VkD3D12FenceSubmitInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "waitSemaphoreValuesCount = " .
-                            showsPrec d (getField @"waitSemaphoreValuesCount" x) .
-                              showString ", " .
-                                showString "pWaitSemaphoreValues = " .
-                                  showsPrec d (getField @"pWaitSemaphoreValues" x) .
-                                    showString ", " .
-                                      showString "signalSemaphoreValuesCount = " .
-                                        showsPrec d (getField @"signalSemaphoreValuesCount" x) .
-                                          showString ", " .
-                                            showString "pSignalSemaphoreValues = " .
-                                              showsPrec d (getField @"pSignalSemaphoreValues" x) .
-                                                showChar '}'
-
--- | > typedef struct VkExportFenceWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                                pNext;
---   >     const SECURITY_ATTRIBUTES* pAttributes;
---   >     DWORD                                      dwAccess;
---   >     LPCWSTR                                    name;
---   > } VkExportFenceWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportFenceWin32HandleInfoKHR VkExportFenceWin32HandleInfoKHR registry at www.khronos.org>
-type VkExportFenceWin32HandleInfoKHR =
-     VulkanStruct VkExportFenceWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkExportFenceWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkExportFenceWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportFenceWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportFenceWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkExportFenceWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExportFenceWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExportFenceWin32HandleInfoKHR where
-        type StructFields VkExportFenceWin32HandleInfoKHR =
-             '["sType", "pNext", "pAttributes", "dwAccess", "name"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportFenceWin32HandleInfoKHR =
-             '[VkFenceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportFenceWin32HandleInfoKHR where
-        type FieldType "sType" VkExportFenceWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportFenceWin32HandleInfoKHR =
-             #{offset VkExportFenceWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkExportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportFenceWin32HandleInfoKHR where
-        type FieldType "pNext" VkExportFenceWin32HandleInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkExportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportFenceWin32HandleInfoKHR =
-             #{offset VkExportFenceWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkExportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAttributes" VkExportFenceWin32HandleInfoKHR where
-        type FieldType "pAttributes" VkExportFenceWin32HandleInfoKHR =
-             Ptr SECURITY_ATTRIBUTES
-        type FieldOptional "pAttributes" VkExportFenceWin32HandleInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pAttributes" VkExportFenceWin32HandleInfoKHR =
-             #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
-        type FieldIsArray "pAttributes" VkExportFenceWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAttributes" VkExportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, pAttributes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAttributes" VkExportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         HasField "dwAccess" VkExportFenceWin32HandleInfoKHR where
-        type FieldType "dwAccess" VkExportFenceWin32HandleInfoKHR = DWORD
-        type FieldOptional "dwAccess" VkExportFenceWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "dwAccess" VkExportFenceWin32HandleInfoKHR =
-             #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
-        type FieldIsArray "dwAccess" VkExportFenceWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dwAccess" VkExportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, dwAccess})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dwAccess" VkExportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         HasField "name" VkExportFenceWin32HandleInfoKHR where
-        type FieldType "name" VkExportFenceWin32HandleInfoKHR = LPCWSTR
-        type FieldOptional "name" VkExportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "name" VkExportFenceWin32HandleInfoKHR =
-             #{offset VkExportFenceWin32HandleInfoKHR, name}
-        type FieldIsArray "name" VkExportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportFenceWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "name" VkExportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportFenceWin32HandleInfoKHR, name})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportFenceWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "name" VkExportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportFenceWin32HandleInfoKHR, name}
-
-instance Show VkExportFenceWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkExportFenceWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pAttributes = " .
-                            showsPrec d (getField @"pAttributes" x) .
-                              showString ", " .
-                                showString "dwAccess = " .
-                                  showsPrec d (getField @"dwAccess" x) .
-                                    showString ", " .
-                                      showString "name = " .
-                                        showsPrec d (getField @"name" x) . showChar '}'
-
--- | > typedef struct VkExportMemoryWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     const SECURITY_ATTRIBUTES* pAttributes;
---   >     DWORD                            dwAccess;
---   >     LPCWSTR                          name;
---   > } VkExportMemoryWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportMemoryWin32HandleInfoKHR VkExportMemoryWin32HandleInfoKHR registry at www.khronos.org>
-type VkExportMemoryWin32HandleInfoKHR =
-     VulkanStruct VkExportMemoryWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkExportMemoryWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkExportMemoryWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportMemoryWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportMemoryWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkExportMemoryWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExportMemoryWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExportMemoryWin32HandleInfoKHR where
-        type StructFields VkExportMemoryWin32HandleInfoKHR =
-             '["sType", "pNext", "pAttributes", "dwAccess", "name"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportMemoryWin32HandleInfoKHR =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportMemoryWin32HandleInfoKHR where
-        type FieldType "sType" VkExportMemoryWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportMemoryWin32HandleInfoKHR =
-             #{offset VkExportMemoryWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkExportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportMemoryWin32HandleInfoKHR where
-        type FieldType "pNext" VkExportMemoryWin32HandleInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkExportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportMemoryWin32HandleInfoKHR =
-             #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkExportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAttributes" VkExportMemoryWin32HandleInfoKHR where
-        type FieldType "pAttributes" VkExportMemoryWin32HandleInfoKHR =
-             Ptr SECURITY_ATTRIBUTES
-        type FieldOptional "pAttributes" VkExportMemoryWin32HandleInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pAttributes" VkExportMemoryWin32HandleInfoKHR =
-             #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
-        type FieldIsArray "pAttributes" VkExportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAttributes" VkExportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAttributes" VkExportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         HasField "dwAccess" VkExportMemoryWin32HandleInfoKHR where
-        type FieldType "dwAccess" VkExportMemoryWin32HandleInfoKHR = DWORD
-        type FieldOptional "dwAccess" VkExportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "dwAccess" VkExportMemoryWin32HandleInfoKHR =
-             #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
-        type FieldIsArray "dwAccess" VkExportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dwAccess" VkExportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dwAccess" VkExportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         HasField "name" VkExportMemoryWin32HandleInfoKHR where
-        type FieldType "name" VkExportMemoryWin32HandleInfoKHR = LPCWSTR
-        type FieldOptional "name" VkExportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "name" VkExportMemoryWin32HandleInfoKHR =
-             #{offset VkExportMemoryWin32HandleInfoKHR, name}
-        type FieldIsArray "name" VkExportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "name" VkExportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoKHR, name})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "name" VkExportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoKHR, name}
-
-instance Show VkExportMemoryWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkExportMemoryWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pAttributes = " .
-                            showsPrec d (getField @"pAttributes" x) .
-                              showString ", " .
-                                showString "dwAccess = " .
-                                  showsPrec d (getField @"dwAccess" x) .
-                                    showString ", " .
-                                      showString "name = " .
-                                        showsPrec d (getField @"name" x) . showChar '}'
-
--- | > typedef struct VkExportMemoryWin32HandleInfoNV {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     const SECURITY_ATTRIBUTES*       pAttributes;
---   >     DWORD                            dwAccess;
---   > } VkExportMemoryWin32HandleInfoNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportMemoryWin32HandleInfoNV VkExportMemoryWin32HandleInfoNV registry at www.khronos.org>
-type VkExportMemoryWin32HandleInfoNV =
-     VulkanStruct VkExportMemoryWin32HandleInfoNV' -- ' closing tick for hsc2hs
-
-data VkExportMemoryWin32HandleInfoNV' -- ' closing tick for hsc2hs
-
-instance Eq VkExportMemoryWin32HandleInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportMemoryWin32HandleInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportMemoryWin32HandleInfoNV where
-        sizeOf ~_ = #{size VkExportMemoryWin32HandleInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExportMemoryWin32HandleInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExportMemoryWin32HandleInfoNV where
-        type StructFields VkExportMemoryWin32HandleInfoNV =
-             '["sType", "pNext", "pAttributes", "dwAccess"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportMemoryWin32HandleInfoNV =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportMemoryWin32HandleInfoNV where
-        type FieldType "sType" VkExportMemoryWin32HandleInfoNV =
-             VkStructureType
-        type FieldOptional "sType" VkExportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportMemoryWin32HandleInfoNV =
-             #{offset VkExportMemoryWin32HandleInfoNV, sType}
-        type FieldIsArray "sType" VkExportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExportMemoryWin32HandleInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExportMemoryWin32HandleInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportMemoryWin32HandleInfoNV where
-        type FieldType "pNext" VkExportMemoryWin32HandleInfoNV = Ptr Void
-        type FieldOptional "pNext" VkExportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportMemoryWin32HandleInfoNV =
-             #{offset VkExportMemoryWin32HandleInfoNV, pNext}
-        type FieldIsArray "pNext" VkExportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExportMemoryWin32HandleInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExportMemoryWin32HandleInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAttributes" VkExportMemoryWin32HandleInfoNV where
-        type FieldType "pAttributes" VkExportMemoryWin32HandleInfoNV =
-             Ptr SECURITY_ATTRIBUTES
-        type FieldOptional "pAttributes" VkExportMemoryWin32HandleInfoNV =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pAttributes" VkExportMemoryWin32HandleInfoNV =
-             #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
-        type FieldIsArray "pAttributes" VkExportMemoryWin32HandleInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAttributes" VkExportMemoryWin32HandleInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, pAttributes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAttributes" VkExportMemoryWin32HandleInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         HasField "dwAccess" VkExportMemoryWin32HandleInfoNV where
-        type FieldType "dwAccess" VkExportMemoryWin32HandleInfoNV = DWORD
-        type FieldOptional "dwAccess" VkExportMemoryWin32HandleInfoNV =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "dwAccess" VkExportMemoryWin32HandleInfoNV =
-             #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
-        type FieldIsArray "dwAccess" VkExportMemoryWin32HandleInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dwAccess" VkExportMemoryWin32HandleInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportMemoryWin32HandleInfoNV, dwAccess})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dwAccess" VkExportMemoryWin32HandleInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
-
-instance Show VkExportMemoryWin32HandleInfoNV where
-        showsPrec d x
-          = showString "VkExportMemoryWin32HandleInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pAttributes = " .
-                            showsPrec d (getField @"pAttributes" x) .
-                              showString ", " .
-                                showString "dwAccess = " .
-                                  showsPrec d (getField @"dwAccess" x) . showChar '}'
-
--- | > typedef struct VkExportSemaphoreWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     const SECURITY_ATTRIBUTES*       pAttributes;
---   >     DWORD                            dwAccess;
---   >     LPCWSTR                          name;
---   > } VkExportSemaphoreWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportSemaphoreWin32HandleInfoKHR VkExportSemaphoreWin32HandleInfoKHR registry at www.khronos.org>
-type VkExportSemaphoreWin32HandleInfoKHR =
-     VulkanStruct VkExportSemaphoreWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkExportSemaphoreWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkExportSemaphoreWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkExportSemaphoreWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkExportSemaphoreWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkExportSemaphoreWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkExportSemaphoreWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkExportSemaphoreWin32HandleInfoKHR where
-        type StructFields VkExportSemaphoreWin32HandleInfoKHR =
-             '["sType", "pNext", "pAttributes", "dwAccess", "name"] -- ' closing tick for hsc2hs
-        type CUnionType VkExportSemaphoreWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkExportSemaphoreWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkExportSemaphoreWin32HandleInfoKHR =
-             '[VkSemaphoreCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkExportSemaphoreWin32HandleInfoKHR where
-        type FieldType "sType" VkExportSemaphoreWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkExportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkExportSemaphoreWin32HandleInfoKHR =
-             #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkExportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkExportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkExportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkExportSemaphoreWin32HandleInfoKHR where
-        type FieldType "pNext" VkExportSemaphoreWin32HandleInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkExportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkExportSemaphoreWin32HandleInfoKHR =
-             #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkExportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkExportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkExportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAttributes" VkExportSemaphoreWin32HandleInfoKHR where
-        type FieldType "pAttributes" VkExportSemaphoreWin32HandleInfoKHR =
-             Ptr SECURITY_ATTRIBUTES
-        type FieldOptional "pAttributes"
-               VkExportSemaphoreWin32HandleInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pAttributes" VkExportSemaphoreWin32HandleInfoKHR
-             =
-             #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
-        type FieldIsArray "pAttributes" VkExportSemaphoreWin32HandleInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAttributes" VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAttributes" VkExportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
-
-instance {-# OVERLAPPING #-}
-         HasField "dwAccess" VkExportSemaphoreWin32HandleInfoKHR where
-        type FieldType "dwAccess" VkExportSemaphoreWin32HandleInfoKHR =
-             DWORD
-        type FieldOptional "dwAccess" VkExportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "dwAccess" VkExportSemaphoreWin32HandleInfoKHR =
-             #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
-        type FieldIsArray "dwAccess" VkExportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dwAccess" VkExportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dwAccess" VkExportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
-
-instance {-# OVERLAPPING #-}
-         HasField "name" VkExportSemaphoreWin32HandleInfoKHR where
-        type FieldType "name" VkExportSemaphoreWin32HandleInfoKHR = LPCWSTR
-        type FieldOptional "name" VkExportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "name" VkExportSemaphoreWin32HandleInfoKHR =
-             #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
-        type FieldIsArray "name" VkExportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "name" VkExportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkExportSemaphoreWin32HandleInfoKHR, name})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "name" VkExportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
-
-instance Show VkExportSemaphoreWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkExportSemaphoreWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "pAttributes = " .
-                            showsPrec d (getField @"pAttributes" x) .
-                              showString ", " .
-                                showString "dwAccess = " .
-                                  showsPrec d (getField @"dwAccess" x) .
-                                    showString ", " .
-                                      showString "name = " .
-                                        showsPrec d (getField @"name" x) . showChar '}'
-
--- | > typedef struct VkFenceGetWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                            pNext;
---   >     VkFence                                fence;
---   >     VkExternalFenceHandleTypeFlagBits   handleType;
---   > } VkFenceGetWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFenceGetWin32HandleInfoKHR VkFenceGetWin32HandleInfoKHR registry at www.khronos.org>
-type VkFenceGetWin32HandleInfoKHR =
-     VulkanStruct VkFenceGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkFenceGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkFenceGetWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkFenceGetWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkFenceGetWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkFenceGetWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkFenceGetWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkFenceGetWin32HandleInfoKHR where
-        type StructFields VkFenceGetWin32HandleInfoKHR =
-             '["sType", "pNext", "fence", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkFenceGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkFenceGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkFenceGetWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkFenceGetWin32HandleInfoKHR where
-        type FieldType "sType" VkFenceGetWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkFenceGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkFenceGetWin32HandleInfoKHR =
-             #{offset VkFenceGetWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkFenceGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFenceGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkFenceGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkFenceGetWin32HandleInfoKHR where
-        type FieldType "pNext" VkFenceGetWin32HandleInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkFenceGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkFenceGetWin32HandleInfoKHR =
-             #{offset VkFenceGetWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkFenceGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFenceGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkFenceGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "fence" VkFenceGetWin32HandleInfoKHR where
-        type FieldType "fence" VkFenceGetWin32HandleInfoKHR = VkFence
-        type FieldOptional "fence" VkFenceGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fence" VkFenceGetWin32HandleInfoKHR =
-             #{offset VkFenceGetWin32HandleInfoKHR, fence}
-        type FieldIsArray "fence" VkFenceGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFenceGetWin32HandleInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fence" VkFenceGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, fence})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fence" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkFenceGetWin32HandleInfoKHR where
-        type FieldType "handleType" VkFenceGetWin32HandleInfoKHR =
-             VkExternalFenceHandleTypeFlagBits
-        type FieldOptional "handleType" VkFenceGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkFenceGetWin32HandleInfoKHR =
-             #{offset VkFenceGetWin32HandleInfoKHR, handleType}
-        type FieldIsArray "handleType" VkFenceGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkFenceGetWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkFenceGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkFenceGetWin32HandleInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkFenceGetWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkFenceGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkFenceGetWin32HandleInfoKHR, handleType}
-
-instance Show VkFenceGetWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkFenceGetWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "fence = " .
-                            showsPrec d (getField @"fence" x) .
-                              showString ", " .
-                                showString "handleType = " .
-                                  showsPrec d (getField @"handleType" x) . showChar '}'
-
--- | > typedef struct VkImportFenceWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                                        pNext;
---   >     VkFence                          fence;
---   >     VkFenceImportFlags              flags;
---   >     VkExternalFenceHandleTypeFlagBits  handleType;
---   >     HANDLE                             handle;
---   >     LPCWSTR                            name;
---   > } VkImportFenceWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportFenceWin32HandleInfoKHR VkImportFenceWin32HandleInfoKHR registry at www.khronos.org>
-type VkImportFenceWin32HandleInfoKHR =
-     VulkanStruct VkImportFenceWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkImportFenceWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkImportFenceWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportFenceWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportFenceWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkImportFenceWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImportFenceWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImportFenceWin32HandleInfoKHR where
-        type StructFields VkImportFenceWin32HandleInfoKHR =
-             '["sType", "pNext", "fence", "flags", "handleType", "handle", -- ' closing tick for hsc2hs
-               "name"]
-        type CUnionType VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportFenceWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportFenceWin32HandleInfoKHR where
-        type FieldType "sType" VkImportFenceWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportFenceWin32HandleInfoKHR =
-             #{offset VkImportFenceWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportFenceWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportFenceWin32HandleInfoKHR where
-        type FieldType "pNext" VkImportFenceWin32HandleInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportFenceWin32HandleInfoKHR =
-             #{offset VkImportFenceWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportFenceWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "fence" VkImportFenceWin32HandleInfoKHR where
-        type FieldType "fence" VkImportFenceWin32HandleInfoKHR = VkFence
-        type FieldOptional "fence" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "fence" VkImportFenceWin32HandleInfoKHR =
-             #{offset VkImportFenceWin32HandleInfoKHR, fence}
-        type FieldIsArray "fence" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportFenceWin32HandleInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "fence" VkImportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, fence})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "fence" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, fence}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkImportFenceWin32HandleInfoKHR where
-        type FieldType "flags" VkImportFenceWin32HandleInfoKHR =
-             VkFenceImportFlags
-        type FieldOptional "flags" VkImportFenceWin32HandleInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkImportFenceWin32HandleInfoKHR =
-             #{offset VkImportFenceWin32HandleInfoKHR, flags}
-        type FieldIsArray "flags" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportFenceWin32HandleInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkImportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkImportFenceWin32HandleInfoKHR where
-        type FieldType "handleType" VkImportFenceWin32HandleInfoKHR =
-             VkExternalFenceHandleTypeFlagBits
-        type FieldOptional "handleType" VkImportFenceWin32HandleInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkImportFenceWin32HandleInfoKHR =
-             #{offset VkImportFenceWin32HandleInfoKHR, handleType}
-        type FieldIsArray "handleType" VkImportFenceWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportFenceWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkImportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "handle" VkImportFenceWin32HandleInfoKHR where
-        type FieldType "handle" VkImportFenceWin32HandleInfoKHR = HANDLE
-        type FieldOptional "handle" VkImportFenceWin32HandleInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handle" VkImportFenceWin32HandleInfoKHR =
-             #{offset VkImportFenceWin32HandleInfoKHR, handle}
-        type FieldIsArray "handle" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportFenceWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handle" VkImportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, handle})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handle" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         HasField "name" VkImportFenceWin32HandleInfoKHR where
-        type FieldType "name" VkImportFenceWin32HandleInfoKHR = LPCWSTR
-        type FieldOptional "name" VkImportFenceWin32HandleInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "name" VkImportFenceWin32HandleInfoKHR =
-             #{offset VkImportFenceWin32HandleInfoKHR, name}
-        type FieldIsArray "name" VkImportFenceWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportFenceWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "name" VkImportFenceWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportFenceWin32HandleInfoKHR, name})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportFenceWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "name" VkImportFenceWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportFenceWin32HandleInfoKHR, name}
-
-instance Show VkImportFenceWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkImportFenceWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "fence = " .
-                            showsPrec d (getField @"fence" x) .
-                              showString ", " .
-                                showString "flags = " .
-                                  showsPrec d (getField @"flags" x) .
-                                    showString ", " .
-                                      showString "handleType = " .
-                                        showsPrec d (getField @"handleType" x) .
-                                          showString ", " .
-                                            showString "handle = " .
-                                              showsPrec d (getField @"handle" x) .
-                                                showString ", " .
-                                                  showString "name = " .
-                                                    showsPrec d (getField @"name" x) . showChar '}'
-
--- | > typedef struct VkImportMemoryWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagBits handleType;
---   >     HANDLE           handle;
---   >     LPCWSTR          name;
---   > } VkImportMemoryWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportMemoryWin32HandleInfoKHR VkImportMemoryWin32HandleInfoKHR registry at www.khronos.org>
-type VkImportMemoryWin32HandleInfoKHR =
-     VulkanStruct VkImportMemoryWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkImportMemoryWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkImportMemoryWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportMemoryWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportMemoryWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkImportMemoryWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImportMemoryWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImportMemoryWin32HandleInfoKHR where
-        type StructFields VkImportMemoryWin32HandleInfoKHR =
-             '["sType", "pNext", "handleType", "handle", "name"] -- ' closing tick for hsc2hs
-        type CUnionType VkImportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportMemoryWin32HandleInfoKHR =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportMemoryWin32HandleInfoKHR where
-        type FieldType "sType" VkImportMemoryWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkImportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportMemoryWin32HandleInfoKHR =
-             #{offset VkImportMemoryWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkImportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportMemoryWin32HandleInfoKHR where
-        type FieldType "pNext" VkImportMemoryWin32HandleInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkImportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportMemoryWin32HandleInfoKHR =
-             #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkImportMemoryWin32HandleInfoKHR where
-        type FieldType "handleType" VkImportMemoryWin32HandleInfoKHR =
-             VkExternalMemoryHandleTypeFlagBits
-        type FieldOptional "handleType" VkImportMemoryWin32HandleInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkImportMemoryWin32HandleInfoKHR =
-             #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
-        type FieldIsArray "handleType" VkImportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkImportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkImportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "handle" VkImportMemoryWin32HandleInfoKHR where
-        type FieldType "handle" VkImportMemoryWin32HandleInfoKHR = HANDLE
-        type FieldOptional "handle" VkImportMemoryWin32HandleInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handle" VkImportMemoryWin32HandleInfoKHR =
-             #{offset VkImportMemoryWin32HandleInfoKHR, handle}
-        type FieldIsArray "handle" VkImportMemoryWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handle" VkImportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, handle})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handle" VkImportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         HasField "name" VkImportMemoryWin32HandleInfoKHR where
-        type FieldType "name" VkImportMemoryWin32HandleInfoKHR = LPCWSTR
-        type FieldOptional "name" VkImportMemoryWin32HandleInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "name" VkImportMemoryWin32HandleInfoKHR =
-             #{offset VkImportMemoryWin32HandleInfoKHR, name}
-        type FieldIsArray "name" VkImportMemoryWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "name" VkImportMemoryWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoKHR, name})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "name" VkImportMemoryWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoKHR, name}
-
-instance Show VkImportMemoryWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkImportMemoryWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleType = " .
-                            showsPrec d (getField @"handleType" x) .
-                              showString ", " .
-                                showString "handle = " .
-                                  showsPrec d (getField @"handle" x) .
-                                    showString ", " .
-                                      showString "name = " .
-                                        showsPrec d (getField @"name" x) . showChar '}'
-
--- | > typedef struct VkImportMemoryWin32HandleInfoNV {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkExternalMemoryHandleTypeFlagsNV handleType;
---   >     HANDLE                           handle;
---   > } VkImportMemoryWin32HandleInfoNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportMemoryWin32HandleInfoNV VkImportMemoryWin32HandleInfoNV registry at www.khronos.org>
-type VkImportMemoryWin32HandleInfoNV =
-     VulkanStruct VkImportMemoryWin32HandleInfoNV' -- ' closing tick for hsc2hs
-
-data VkImportMemoryWin32HandleInfoNV' -- ' closing tick for hsc2hs
-
-instance Eq VkImportMemoryWin32HandleInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportMemoryWin32HandleInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportMemoryWin32HandleInfoNV where
-        sizeOf ~_ = #{size VkImportMemoryWin32HandleInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImportMemoryWin32HandleInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImportMemoryWin32HandleInfoNV where
-        type StructFields VkImportMemoryWin32HandleInfoNV =
-             '["sType", "pNext", "handleType", "handle"] -- ' closing tick for hsc2hs
-        type CUnionType VkImportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportMemoryWin32HandleInfoNV =
-             '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportMemoryWin32HandleInfoNV where
-        type FieldType "sType" VkImportMemoryWin32HandleInfoNV =
-             VkStructureType
-        type FieldOptional "sType" VkImportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportMemoryWin32HandleInfoNV =
-             #{offset VkImportMemoryWin32HandleInfoNV, sType}
-        type FieldIsArray "sType" VkImportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportMemoryWin32HandleInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportMemoryWin32HandleInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportMemoryWin32HandleInfoNV where
-        type FieldType "pNext" VkImportMemoryWin32HandleInfoNV = Ptr Void
-        type FieldOptional "pNext" VkImportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportMemoryWin32HandleInfoNV =
-             #{offset VkImportMemoryWin32HandleInfoNV, pNext}
-        type FieldIsArray "pNext" VkImportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportMemoryWin32HandleInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportMemoryWin32HandleInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkImportMemoryWin32HandleInfoNV where
-        type FieldType "handleType" VkImportMemoryWin32HandleInfoNV =
-             VkExternalMemoryHandleTypeFlagsNV
-        type FieldOptional "handleType" VkImportMemoryWin32HandleInfoNV =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkImportMemoryWin32HandleInfoNV =
-             #{offset VkImportMemoryWin32HandleInfoNV, handleType}
-        type FieldIsArray "handleType" VkImportMemoryWin32HandleInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoNV, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkImportMemoryWin32HandleInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkImportMemoryWin32HandleInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "handle" VkImportMemoryWin32HandleInfoNV where
-        type FieldType "handle" VkImportMemoryWin32HandleInfoNV = HANDLE
-        type FieldOptional "handle" VkImportMemoryWin32HandleInfoNV = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handle" VkImportMemoryWin32HandleInfoNV =
-             #{offset VkImportMemoryWin32HandleInfoNV, handle}
-        type FieldIsArray "handle" VkImportMemoryWin32HandleInfoNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportMemoryWin32HandleInfoNV, handle}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handle" VkImportMemoryWin32HandleInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportMemoryWin32HandleInfoNV, handle})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handle}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handle" VkImportMemoryWin32HandleInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportMemoryWin32HandleInfoNV, handle}
-
-instance Show VkImportMemoryWin32HandleInfoNV where
-        showsPrec d x
-          = showString "VkImportMemoryWin32HandleInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "handleType = " .
-                            showsPrec d (getField @"handleType" x) .
-                              showString ", " .
-                                showString "handle = " .
-                                  showsPrec d (getField @"handle" x) . showChar '}'
-
--- | > typedef struct VkImportSemaphoreWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSemaphore    semaphore;
---   >     VkSemaphoreImportFlags flags;
---   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
---   >     HANDLE           handle;
---   >     LPCWSTR          name;
---   > } VkImportSemaphoreWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportSemaphoreWin32HandleInfoKHR VkImportSemaphoreWin32HandleInfoKHR registry at www.khronos.org>
-type VkImportSemaphoreWin32HandleInfoKHR =
-     VulkanStruct VkImportSemaphoreWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkImportSemaphoreWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkImportSemaphoreWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkImportSemaphoreWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkImportSemaphoreWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkImportSemaphoreWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkImportSemaphoreWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkImportSemaphoreWin32HandleInfoKHR where
-        type StructFields VkImportSemaphoreWin32HandleInfoKHR =
-             '["sType", "pNext", "semaphore", "flags", "handleType", "handle", -- ' closing tick for hsc2hs
-               "name"]
-        type CUnionType VkImportSemaphoreWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkImportSemaphoreWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkImportSemaphoreWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkImportSemaphoreWin32HandleInfoKHR where
-        type FieldType "sType" VkImportSemaphoreWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkImportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkImportSemaphoreWin32HandleInfoKHR =
-             #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkImportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkImportSemaphoreWin32HandleInfoKHR where
-        type FieldType "pNext" VkImportSemaphoreWin32HandleInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkImportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkImportSemaphoreWin32HandleInfoKHR =
-             #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkImportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "semaphore" VkImportSemaphoreWin32HandleInfoKHR where
-        type FieldType "semaphore" VkImportSemaphoreWin32HandleInfoKHR =
-             VkSemaphore
-        type FieldOptional "semaphore" VkImportSemaphoreWin32HandleInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "semaphore" VkImportSemaphoreWin32HandleInfoKHR =
-             #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
-        type FieldIsArray "semaphore" VkImportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "semaphore" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "semaphore" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkImportSemaphoreWin32HandleInfoKHR where
-        type FieldType "flags" VkImportSemaphoreWin32HandleInfoKHR =
-             VkSemaphoreImportFlags
-        type FieldOptional "flags" VkImportSemaphoreWin32HandleInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkImportSemaphoreWin32HandleInfoKHR =
-             #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
-        type FieldIsArray "flags" VkImportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkImportSemaphoreWin32HandleInfoKHR where
-        type FieldType "handleType" VkImportSemaphoreWin32HandleInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBits
-        type FieldOptional "handleType" VkImportSemaphoreWin32HandleInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkImportSemaphoreWin32HandleInfoKHR =
-             #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
-        type FieldIsArray "handleType" VkImportSemaphoreWin32HandleInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkImportSemaphoreWin32HandleInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         HasField "handle" VkImportSemaphoreWin32HandleInfoKHR where
-        type FieldType "handle" VkImportSemaphoreWin32HandleInfoKHR =
-             HANDLE
-        type FieldOptional "handle" VkImportSemaphoreWin32HandleInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "handle" VkImportSemaphoreWin32HandleInfoKHR =
-             #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
-        type FieldIsArray "handle" VkImportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handle" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, handle})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handle" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
-
-instance {-# OVERLAPPING #-}
-         HasField "name" VkImportSemaphoreWin32HandleInfoKHR where
-        type FieldType "name" VkImportSemaphoreWin32HandleInfoKHR = LPCWSTR
-        type FieldOptional "name" VkImportSemaphoreWin32HandleInfoKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "name" VkImportSemaphoreWin32HandleInfoKHR =
-             #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
-        type FieldIsArray "name" VkImportSemaphoreWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "name" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkImportSemaphoreWin32HandleInfoKHR, name})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "name" VkImportSemaphoreWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
-
-instance Show VkImportSemaphoreWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkImportSemaphoreWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "semaphore = " .
-                            showsPrec d (getField @"semaphore" x) .
-                              showString ", " .
-                                showString "flags = " .
-                                  showsPrec d (getField @"flags" x) .
-                                    showString ", " .
-                                      showString "handleType = " .
-                                        showsPrec d (getField @"handleType" x) .
-                                          showString ", " .
-                                            showString "handle = " .
-                                              showsPrec d (getField @"handle" x) .
-                                                showString ", " .
-                                                  showString "name = " .
-                                                    showsPrec d (getField @"name" x) . showChar '}'
-
--- | > typedef struct VkMemoryGetWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkDeviceMemory                   memory;
---   >     VkExternalMemoryHandleTypeFlagBits handleType;
---   > } VkMemoryGetWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryGetWin32HandleInfoKHR VkMemoryGetWin32HandleInfoKHR registry at www.khronos.org>
-type VkMemoryGetWin32HandleInfoKHR =
-     VulkanStruct VkMemoryGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkMemoryGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryGetWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryGetWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryGetWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkMemoryGetWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryGetWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryGetWin32HandleInfoKHR where
-        type StructFields VkMemoryGetWin32HandleInfoKHR =
-             '["sType", "pNext", "memory", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryGetWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryGetWin32HandleInfoKHR where
-        type FieldType "sType" VkMemoryGetWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkMemoryGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryGetWin32HandleInfoKHR =
-             #{offset VkMemoryGetWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkMemoryGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryGetWin32HandleInfoKHR where
-        type FieldType "pNext" VkMemoryGetWin32HandleInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkMemoryGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryGetWin32HandleInfoKHR =
-             #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkMemoryGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "memory" VkMemoryGetWin32HandleInfoKHR where
-        type FieldType "memory" VkMemoryGetWin32HandleInfoKHR =
-             VkDeviceMemory
-        type FieldOptional "memory" VkMemoryGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkMemoryGetWin32HandleInfoKHR =
-             #{offset VkMemoryGetWin32HandleInfoKHR, memory}
-        type FieldIsArray "memory" VkMemoryGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryGetWin32HandleInfoKHR, memory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memory" VkMemoryGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, memory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, memory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memory" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, memory}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkMemoryGetWin32HandleInfoKHR where
-        type FieldType "handleType" VkMemoryGetWin32HandleInfoKHR =
-             VkExternalMemoryHandleTypeFlagBits
-        type FieldOptional "handleType" VkMemoryGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkMemoryGetWin32HandleInfoKHR =
-             #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
-        type FieldIsArray "handleType" VkMemoryGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkMemoryGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryGetWin32HandleInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkMemoryGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
-
-instance Show VkMemoryGetWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkMemoryGetWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memory = " .
-                            showsPrec d (getField @"memory" x) .
-                              showString ", " .
-                                showString "handleType = " .
-                                  showsPrec d (getField @"handleType" x) . showChar '}'
-
--- | > typedef struct VkMemoryWin32HandlePropertiesKHR {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         memoryTypeBits;
---   > } VkMemoryWin32HandlePropertiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryWin32HandlePropertiesKHR VkMemoryWin32HandlePropertiesKHR registry at www.khronos.org>
-type VkMemoryWin32HandlePropertiesKHR =
-     VulkanStruct VkMemoryWin32HandlePropertiesKHR' -- ' closing tick for hsc2hs
-
-data VkMemoryWin32HandlePropertiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkMemoryWin32HandlePropertiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkMemoryWin32HandlePropertiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkMemoryWin32HandlePropertiesKHR where
-        sizeOf ~_ = #{size VkMemoryWin32HandlePropertiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkMemoryWin32HandlePropertiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkMemoryWin32HandlePropertiesKHR where
-        type StructFields VkMemoryWin32HandlePropertiesKHR =
-             '["sType", "pNext", "memoryTypeBits"] -- ' closing tick for hsc2hs
-        type CUnionType VkMemoryWin32HandlePropertiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkMemoryWin32HandlePropertiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkMemoryWin32HandlePropertiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkMemoryWin32HandlePropertiesKHR where
-        type FieldType "sType" VkMemoryWin32HandlePropertiesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkMemoryWin32HandlePropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkMemoryWin32HandlePropertiesKHR =
-             #{offset VkMemoryWin32HandlePropertiesKHR, sType}
-        type FieldIsArray "sType" VkMemoryWin32HandlePropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryWin32HandlePropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkMemoryWin32HandlePropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkMemoryWin32HandlePropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkMemoryWin32HandlePropertiesKHR where
-        type FieldType "pNext" VkMemoryWin32HandlePropertiesKHR = Ptr Void
-        type FieldOptional "pNext" VkMemoryWin32HandlePropertiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkMemoryWin32HandlePropertiesKHR =
-             #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
-        type FieldIsArray "pNext" VkMemoryWin32HandlePropertiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkMemoryWin32HandlePropertiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkMemoryWin32HandlePropertiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryTypeBits" VkMemoryWin32HandlePropertiesKHR where
-        type FieldType "memoryTypeBits" VkMemoryWin32HandlePropertiesKHR =
-             Word32
-        type FieldOptional "memoryTypeBits"
-               VkMemoryWin32HandlePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryTypeBits" VkMemoryWin32HandlePropertiesKHR
-             =
-             #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
-        type FieldIsArray "memoryTypeBits" VkMemoryWin32HandlePropertiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryTypeBits" VkMemoryWin32HandlePropertiesKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryTypeBits" VkMemoryWin32HandlePropertiesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
-
-instance Show VkMemoryWin32HandlePropertiesKHR where
-        showsPrec d x
-          = showString "VkMemoryWin32HandlePropertiesKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memoryTypeBits = " .
-                            showsPrec d (getField @"memoryTypeBits" x) . showChar '}'
-
--- | > typedef struct VkSemaphoreGetWin32HandleInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSemaphore                      semaphore;
---   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
---   > } VkSemaphoreGetWin32HandleInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSemaphoreGetWin32HandleInfoKHR VkSemaphoreGetWin32HandleInfoKHR registry at www.khronos.org>
-type VkSemaphoreGetWin32HandleInfoKHR =
-     VulkanStruct VkSemaphoreGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-data VkSemaphoreGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkSemaphoreGetWin32HandleInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSemaphoreGetWin32HandleInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSemaphoreGetWin32HandleInfoKHR where
-        sizeOf ~_ = #{size VkSemaphoreGetWin32HandleInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSemaphoreGetWin32HandleInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSemaphoreGetWin32HandleInfoKHR where
-        type StructFields VkSemaphoreGetWin32HandleInfoKHR =
-             '["sType", "pNext", "semaphore", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkSemaphoreGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSemaphoreGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSemaphoreGetWin32HandleInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSemaphoreGetWin32HandleInfoKHR where
-        type FieldType "sType" VkSemaphoreGetWin32HandleInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkSemaphoreGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSemaphoreGetWin32HandleInfoKHR =
-             #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
-        type FieldIsArray "sType" VkSemaphoreGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSemaphoreGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSemaphoreGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSemaphoreGetWin32HandleInfoKHR where
-        type FieldType "pNext" VkSemaphoreGetWin32HandleInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkSemaphoreGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSemaphoreGetWin32HandleInfoKHR =
-             #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
-        type FieldIsArray "pNext" VkSemaphoreGetWin32HandleInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSemaphoreGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSemaphoreGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "semaphore" VkSemaphoreGetWin32HandleInfoKHR where
-        type FieldType "semaphore" VkSemaphoreGetWin32HandleInfoKHR =
-             VkSemaphore
-        type FieldOptional "semaphore" VkSemaphoreGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "semaphore" VkSemaphoreGetWin32HandleInfoKHR =
-             #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
-        type FieldIsArray "semaphore" VkSemaphoreGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "semaphore" VkSemaphoreGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "semaphore" VkSemaphoreGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkSemaphoreGetWin32HandleInfoKHR where
-        type FieldType "handleType" VkSemaphoreGetWin32HandleInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBits
-        type FieldOptional "handleType" VkSemaphoreGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkSemaphoreGetWin32HandleInfoKHR =
-             #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
-        type FieldIsArray "handleType" VkSemaphoreGetWin32HandleInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkSemaphoreGetWin32HandleInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkSemaphoreGetWin32HandleInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
-
-instance Show VkSemaphoreGetWin32HandleInfoKHR where
-        showsPrec d x
-          = showString "VkSemaphoreGetWin32HandleInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "semaphore = " .
-                            showsPrec d (getField @"semaphore" x) .
-                              showString ", " .
-                                showString "handleType = " .
-                                  showsPrec d (getField @"handleType" x) . showChar '}'
-
--- | > typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         acquireCount;
---   >     const VkDeviceMemory* pAcquireSyncs;
---   >     const uint64_t* pAcquireKeys;
---   >     const uint32_t* pAcquireTimeouts;
---   >     uint32_t         releaseCount;
---   >     const VkDeviceMemory* pReleaseSyncs;
---   >     const uint64_t* pReleaseKeys;
---   > } VkWin32KeyedMutexAcquireReleaseInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkWin32KeyedMutexAcquireReleaseInfoKHR VkWin32KeyedMutexAcquireReleaseInfoKHR registry at www.khronos.org>
-type VkWin32KeyedMutexAcquireReleaseInfoKHR =
-     VulkanStruct VkWin32KeyedMutexAcquireReleaseInfoKHR' -- ' closing tick for hsc2hs
-
-data VkWin32KeyedMutexAcquireReleaseInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        sizeOf ~_
-          = #{size VkWin32KeyedMutexAcquireReleaseInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkWin32KeyedMutexAcquireReleaseInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type StructFields VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             '["sType", "pNext", "acquireCount", "pAcquireSyncs", -- ' closing tick for hsc2hs
-               "pAcquireKeys", "pAcquireTimeouts", "releaseCount",
-               "pReleaseSyncs", "pReleaseKeys"]
-        type CUnionType VkWin32KeyedMutexAcquireReleaseInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkWin32KeyedMutexAcquireReleaseInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             '[VkSubmitInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type FieldType "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
-        type FieldIsArray "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        type FieldType "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
-        type FieldIsArray "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        type FieldType "acquireCount"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = Word32
-        type FieldOptional "acquireCount"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "acquireCount"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
-        type FieldIsArray "acquireCount"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        type FieldType "pAcquireSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = Ptr VkDeviceMemory
-        type FieldOptional "pAcquireSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAcquireSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
-        type FieldIsArray "pAcquireSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAcquireSyncs"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        type FieldType "pAcquireKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = Ptr Word64
-        type FieldOptional "pAcquireKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAcquireKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
-        type FieldIsArray "pAcquireKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAcquireTimeouts" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        type FieldType "pAcquireTimeouts"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = Ptr Word32
-        type FieldOptional "pAcquireTimeouts"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAcquireTimeouts"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
-        type FieldIsArray "pAcquireTimeouts"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAcquireTimeouts"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAcquireTimeouts"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
-
-instance {-# OVERLAPPING #-}
-         HasField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        type FieldType "releaseCount"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = Word32
-        type FieldOptional "releaseCount"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "releaseCount"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
-        type FieldIsArray "releaseCount"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        type FieldType "pReleaseSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = Ptr VkDeviceMemory
-        type FieldOptional "pReleaseSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pReleaseSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
-        type FieldIsArray "pReleaseSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pReleaseSyncs"
-           VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
-
-instance {-# OVERLAPPING #-}
-         HasField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        type FieldType "pReleaseKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = Ptr Word64
-        type FieldOptional "pReleaseKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pReleaseKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
-        type FieldIsArray "pReleaseKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
-
-instance Show VkWin32KeyedMutexAcquireReleaseInfoKHR where
-        showsPrec d x
-          = showString "VkWin32KeyedMutexAcquireReleaseInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "acquireCount = " .
-                            showsPrec d (getField @"acquireCount" x) .
-                              showString ", " .
-                                showString "pAcquireSyncs = " .
-                                  showsPrec d (getField @"pAcquireSyncs" x) .
-                                    showString ", " .
-                                      showString "pAcquireKeys = " .
-                                        showsPrec d (getField @"pAcquireKeys" x) .
-                                          showString ", " .
-                                            showString "pAcquireTimeouts = " .
-                                              showsPrec d (getField @"pAcquireTimeouts" x) .
-                                                showString ", " .
-                                                  showString "releaseCount = " .
-                                                    showsPrec d (getField @"releaseCount" x) .
-                                                      showString ", " .
-                                                        showString "pReleaseSyncs = " .
-                                                          showsPrec d (getField @"pReleaseSyncs" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "pReleaseKeys = " .
-                                                                showsPrec d
-                                                                  (getField @"pReleaseKeys" x)
-                                                                  . showChar '}'
-
--- | > typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         acquireCount;
---   >     const VkDeviceMemory*            pAcquireSyncs;
---   >     const uint64_t*                  pAcquireKeys;
---   >     const uint32_t*                  pAcquireTimeoutMilliseconds;
---   >     uint32_t                         releaseCount;
---   >     const VkDeviceMemory*            pReleaseSyncs;
---   >     const uint64_t*                  pReleaseKeys;
---   > } VkWin32KeyedMutexAcquireReleaseInfoNV;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkWin32KeyedMutexAcquireReleaseInfoNV VkWin32KeyedMutexAcquireReleaseInfoNV registry at www.khronos.org>
-type VkWin32KeyedMutexAcquireReleaseInfoNV =
-     VulkanStruct VkWin32KeyedMutexAcquireReleaseInfoNV' -- ' closing tick for hsc2hs
-
-data VkWin32KeyedMutexAcquireReleaseInfoNV' -- ' closing tick for hsc2hs
-
-instance Eq VkWin32KeyedMutexAcquireReleaseInfoNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkWin32KeyedMutexAcquireReleaseInfoNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkWin32KeyedMutexAcquireReleaseInfoNV where
-        sizeOf ~_
-          = #{size VkWin32KeyedMutexAcquireReleaseInfoNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkWin32KeyedMutexAcquireReleaseInfoNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type StructFields VkWin32KeyedMutexAcquireReleaseInfoNV =
-             '["sType", "pNext", "acquireCount", "pAcquireSyncs", -- ' closing tick for hsc2hs
-               "pAcquireKeys", "pAcquireTimeoutMilliseconds", "releaseCount",
-               "pReleaseSyncs", "pReleaseKeys"]
-        type CUnionType VkWin32KeyedMutexAcquireReleaseInfoNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkWin32KeyedMutexAcquireReleaseInfoNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkWin32KeyedMutexAcquireReleaseInfoNV =
-             '[VkSubmitInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type FieldType "sType" VkWin32KeyedMutexAcquireReleaseInfoNV =
-             VkStructureType
-        type FieldOptional "sType" VkWin32KeyedMutexAcquireReleaseInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkWin32KeyedMutexAcquireReleaseInfoNV =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
-        type FieldIsArray "sType" VkWin32KeyedMutexAcquireReleaseInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type FieldType "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV =
-             Ptr Void
-        type FieldOptional "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
-        type FieldIsArray "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type FieldType "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoNV
-             = Word32
-        type FieldOptional "acquireCount"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "acquireCount"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
-        type FieldIsArray "acquireCount"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "acquireCount" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        type FieldType "pAcquireSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = Ptr VkDeviceMemory
-        type FieldOptional "pAcquireSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAcquireSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
-        type FieldIsArray "pAcquireSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAcquireSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type FieldType "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
-             = Ptr Word64
-        type FieldOptional "pAcquireKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAcquireKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
-        type FieldIsArray "pAcquireKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAcquireKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAcquireTimeoutMilliseconds"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        type FieldType "pAcquireTimeoutMilliseconds"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = Ptr Word32
-        type FieldOptional "pAcquireTimeoutMilliseconds"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAcquireTimeoutMilliseconds"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
-        type FieldIsArray "pAcquireTimeoutMilliseconds"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAcquireTimeoutMilliseconds"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAcquireTimeoutMilliseconds"
-           VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
-
-instance {-# OVERLAPPING #-}
-         HasField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type FieldType "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoNV
-             = Word32
-        type FieldOptional "releaseCount"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "releaseCount"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
-        type FieldIsArray "releaseCount"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "releaseCount" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        type FieldType "pReleaseSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = Ptr VkDeviceMemory
-        type FieldOptional "pReleaseSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pReleaseSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
-        type FieldIsArray "pReleaseSyncs"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pReleaseSyncs" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
-
-instance {-# OVERLAPPING #-}
-         HasField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoNV where
-        type FieldType "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
-             = Ptr Word64
-        type FieldOptional "pReleaseKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pReleaseKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             =
-             #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
-        type FieldIsArray "pReleaseKeys"
-               VkWin32KeyedMutexAcquireReleaseInfoNV
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pReleaseKeys" VkWin32KeyedMutexAcquireReleaseInfoNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
-
-instance Show VkWin32KeyedMutexAcquireReleaseInfoNV where
-        showsPrec d x
-          = showString "VkWin32KeyedMutexAcquireReleaseInfoNV {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "acquireCount = " .
-                            showsPrec d (getField @"acquireCount" x) .
-                              showString ", " .
-                                showString "pAcquireSyncs = " .
-                                  showsPrec d (getField @"pAcquireSyncs" x) .
-                                    showString ", " .
-                                      showString "pAcquireKeys = " .
-                                        showsPrec d (getField @"pAcquireKeys" x) .
-                                          showString ", " .
-                                            showString "pAcquireTimeoutMilliseconds = " .
-                                              showsPrec d
-                                                (getField @"pAcquireTimeoutMilliseconds" x)
-                                                .
-                                                showString ", " .
-                                                  showString "releaseCount = " .
-                                                    showsPrec d (getField @"releaseCount" x) .
-                                                      showString ", " .
-                                                        showString "pReleaseSyncs = " .
-                                                          showsPrec d (getField @"pReleaseSyncs" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "pReleaseKeys = " .
-                                                                showsPrec d
-                                                                  (getField @"pReleaseKeys" x)
-                                                                  . showChar '}'
-
--- | > typedef struct VkWin32SurfaceCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkWin32SurfaceCreateFlagsKHR   flags;
---   >     HINSTANCE                        hinstance;
---   >     HWND                             hwnd;
---   > } VkWin32SurfaceCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkWin32SurfaceCreateInfoKHR VkWin32SurfaceCreateInfoKHR registry at www.khronos.org>
-type VkWin32SurfaceCreateInfoKHR =
-     VulkanStruct VkWin32SurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
-
-data VkWin32SurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkWin32SurfaceCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkWin32SurfaceCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkWin32SurfaceCreateInfoKHR where
-        sizeOf ~_ = #{size VkWin32SurfaceCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkWin32SurfaceCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkWin32SurfaceCreateInfoKHR where
-        type StructFields VkWin32SurfaceCreateInfoKHR =
-             '["sType", "pNext", "flags", "hinstance", "hwnd"] -- ' closing tick for hsc2hs
-        type CUnionType VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkWin32SurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkWin32SurfaceCreateInfoKHR where
-        type FieldType "sType" VkWin32SurfaceCreateInfoKHR =
-             VkStructureType
-        type FieldOptional "sType" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkWin32SurfaceCreateInfoKHR =
-             #{offset VkWin32SurfaceCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32SurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkWin32SurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkWin32SurfaceCreateInfoKHR where
-        type FieldType "pNext" VkWin32SurfaceCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkWin32SurfaceCreateInfoKHR =
-             #{offset VkWin32SurfaceCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32SurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkWin32SurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkWin32SurfaceCreateInfoKHR where
-        type FieldType "flags" VkWin32SurfaceCreateInfoKHR =
-             VkWin32SurfaceCreateFlagsKHR
-        type FieldOptional "flags" VkWin32SurfaceCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkWin32SurfaceCreateInfoKHR =
-             #{offset VkWin32SurfaceCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32SurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkWin32SurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "hinstance" VkWin32SurfaceCreateInfoKHR where
-        type FieldType "hinstance" VkWin32SurfaceCreateInfoKHR = HINSTANCE
-        type FieldOptional "hinstance" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "hinstance" VkWin32SurfaceCreateInfoKHR =
-             #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
-        type FieldIsArray "hinstance" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "hinstance" VkWin32SurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, hinstance})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "hinstance" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
-
-instance {-# OVERLAPPING #-}
-         HasField "hwnd" VkWin32SurfaceCreateInfoKHR where
-        type FieldType "hwnd" VkWin32SurfaceCreateInfoKHR = HWND
-        type FieldOptional "hwnd" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "hwnd" VkWin32SurfaceCreateInfoKHR =
-             #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
-        type FieldIsArray "hwnd" VkWin32SurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "hwnd" VkWin32SurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWin32SurfaceCreateInfoKHR, hwnd})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "hwnd" VkWin32SurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
-
-instance Show VkWin32SurfaceCreateInfoKHR where
-        showsPrec d x
-          = showString "VkWin32SurfaceCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "hinstance = " .
-                                  showsPrec d (getField @"hinstance" x) .
-                                    showString ", " .
-                                      showString "hwnd = " .
-                                        showsPrec d (getField @"hwnd" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.PlatformWin32Khr
+       (VkD3D12FenceSubmitInfoKHR, VkExportFenceWin32HandleInfoKHR,
+        VkExportMemoryWin32HandleInfoKHR, VkExportMemoryWin32HandleInfoNV,
+        VkExportSemaphoreWin32HandleInfoKHR, VkFenceGetWin32HandleInfoKHR,
+        VkImportFenceWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoKHR,
+        VkImportMemoryWin32HandleInfoNV,
+        VkImportSemaphoreWin32HandleInfoKHR, VkMemoryGetWin32HandleInfoKHR,
+        VkMemoryWin32HandlePropertiesKHR, VkSemaphoreGetWin32HandleInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoKHR,
+        VkWin32KeyedMutexAcquireReleaseInfoNV, VkWin32SurfaceCreateInfoKHR)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.Bitmasks                 (VkWin32SurfaceCreateFlagsKHR)
+import Graphics.Vulkan.Types.Enum.External            (VkExternalFenceHandleTypeFlagBits,
+                                                       VkExternalMemoryHandleTypeFlagBits,
+                                                       VkExternalMemoryHandleTypeFlagsNV,
+                                                       VkExternalSemaphoreHandleTypeFlagBits)
+import Graphics.Vulkan.Types.Enum.Fence               (VkFenceImportFlags)
+import Graphics.Vulkan.Types.Enum.SemaphoreImportFlag (VkSemaphoreImportFlags)
+import Graphics.Vulkan.Types.Enum.StructureType       (VkStructureType)
+import Graphics.Vulkan.Types.Handles                  (VkDeviceMemory, VkFence,
+                                                       VkSemaphore)
+import Graphics.Vulkan.Types.Include                  (DWORD, HANDLE, HINSTANCE,
+                                                       HWND, LPCWSTR,
+                                                       SECURITY_ATTRIBUTES)
+import Graphics.Vulkan.Types.Struct.Fence             (VkFenceCreateInfo)
+import Graphics.Vulkan.Types.Struct.Memory            (VkMemoryAllocateInfo)
+import Graphics.Vulkan.Types.Struct.Semaphore         (VkSemaphoreCreateInfo)
+import Graphics.Vulkan.Types.Struct.SubmitInfo        (VkSubmitInfo)
+
+-- | > typedef struct VkD3D12FenceSubmitInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t         waitSemaphoreValuesCount;
+--   >     const uint64_t* pWaitSemaphoreValues;
+--   >     uint32_t         signalSemaphoreValuesCount;
+--   >     const uint64_t* pSignalSemaphoreValues;
+--   > } VkD3D12FenceSubmitInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkD3D12FenceSubmitInfoKHR VkD3D12FenceSubmitInfoKHR registry at www.khronos.org>
+type VkD3D12FenceSubmitInfoKHR =
+     VkStruct VkD3D12FenceSubmitInfoKHR' -- ' closing tick for hsc2hs
+
+data VkD3D12FenceSubmitInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkD3D12FenceSubmitInfoKHR where
+    type StructRep VkD3D12FenceSubmitInfoKHR =
+         'StructMeta "VkD3D12FenceSubmitInfoKHR" VkD3D12FenceSubmitInfoKHR -- ' closing tick for hsc2hs
+           #{size VkD3D12FenceSubmitInfoKHR}
+           #{alignment VkD3D12FenceSubmitInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkD3D12FenceSubmitInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkD3D12FenceSubmitInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "waitSemaphoreValuesCount" Word32 'True 
+                                                                 #{offset VkD3D12FenceSubmitInfoKHR, waitSemaphoreValuesCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pWaitSemaphoreValues" (Ptr Word64) 'True 
+                                                                   #{offset VkD3D12FenceSubmitInfoKHR, pWaitSemaphoreValues}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "signalSemaphoreValuesCount" Word32 'True 
+                                                                   #{offset VkD3D12FenceSubmitInfoKHR, signalSemaphoreValuesCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSignalSemaphoreValues" (Ptr Word64) 'True 
+                                                                     #{offset VkD3D12FenceSubmitInfoKHR, pSignalSemaphoreValues}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSubmitInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkExportFenceWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                                pNext;
+--   >     const SECURITY_ATTRIBUTES* pAttributes;
+--   >     DWORD                                      dwAccess;
+--   >     LPCWSTR                                    name;
+--   > } VkExportFenceWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportFenceWin32HandleInfoKHR VkExportFenceWin32HandleInfoKHR registry at www.khronos.org>
+type VkExportFenceWin32HandleInfoKHR =
+     VkStruct VkExportFenceWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkExportFenceWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExportFenceWin32HandleInfoKHR where
+    type StructRep VkExportFenceWin32HandleInfoKHR =
+         'StructMeta "VkExportFenceWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkExportFenceWin32HandleInfoKHR
+           #{size VkExportFenceWin32HandleInfoKHR}
+           #{alignment VkExportFenceWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExportFenceWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExportFenceWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAttributes" (Ptr SECURITY_ATTRIBUTES) 'True 
+                                                                       #{offset VkExportFenceWin32HandleInfoKHR, pAttributes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dwAccess" DWORD 'False 
+                                                 #{offset VkExportFenceWin32HandleInfoKHR, dwAccess}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "name" LPCWSTR 'False 
+                                               #{offset VkExportFenceWin32HandleInfoKHR, name}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkFenceCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkExportMemoryWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     const SECURITY_ATTRIBUTES* pAttributes;
+--   >     DWORD                            dwAccess;
+--   >     LPCWSTR                          name;
+--   > } VkExportMemoryWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportMemoryWin32HandleInfoKHR VkExportMemoryWin32HandleInfoKHR registry at www.khronos.org>
+type VkExportMemoryWin32HandleInfoKHR =
+     VkStruct VkExportMemoryWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkExportMemoryWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExportMemoryWin32HandleInfoKHR where
+    type StructRep VkExportMemoryWin32HandleInfoKHR =
+         'StructMeta "VkExportMemoryWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkExportMemoryWin32HandleInfoKHR
+           #{size VkExportMemoryWin32HandleInfoKHR}
+           #{alignment VkExportMemoryWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExportMemoryWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExportMemoryWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAttributes" (Ptr SECURITY_ATTRIBUTES) 'True 
+                                                                       #{offset VkExportMemoryWin32HandleInfoKHR, pAttributes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dwAccess" DWORD 'False 
+                                                 #{offset VkExportMemoryWin32HandleInfoKHR, dwAccess}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "name" LPCWSTR 'False 
+                                               #{offset VkExportMemoryWin32HandleInfoKHR, name}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkExportMemoryWin32HandleInfoNV {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     const SECURITY_ATTRIBUTES*       pAttributes;
+--   >     DWORD                            dwAccess;
+--   > } VkExportMemoryWin32HandleInfoNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportMemoryWin32HandleInfoNV VkExportMemoryWin32HandleInfoNV registry at www.khronos.org>
+type VkExportMemoryWin32HandleInfoNV =
+     VkStruct VkExportMemoryWin32HandleInfoNV' -- ' closing tick for hsc2hs
+
+data VkExportMemoryWin32HandleInfoNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExportMemoryWin32HandleInfoNV where
+    type StructRep VkExportMemoryWin32HandleInfoNV =
+         'StructMeta "VkExportMemoryWin32HandleInfoNV" -- ' closing tick for hsc2hs
+           VkExportMemoryWin32HandleInfoNV
+           #{size VkExportMemoryWin32HandleInfoNV}
+           #{alignment VkExportMemoryWin32HandleInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExportMemoryWin32HandleInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExportMemoryWin32HandleInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAttributes" (Ptr SECURITY_ATTRIBUTES) 'True 
+                                                                       #{offset VkExportMemoryWin32HandleInfoNV, pAttributes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dwAccess" DWORD 'True 
+                                                #{offset VkExportMemoryWin32HandleInfoNV, dwAccess}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkExportSemaphoreWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     const SECURITY_ATTRIBUTES*       pAttributes;
+--   >     DWORD                            dwAccess;
+--   >     LPCWSTR                          name;
+--   > } VkExportSemaphoreWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkExportSemaphoreWin32HandleInfoKHR VkExportSemaphoreWin32HandleInfoKHR registry at www.khronos.org>
+type VkExportSemaphoreWin32HandleInfoKHR =
+     VkStruct VkExportSemaphoreWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkExportSemaphoreWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkExportSemaphoreWin32HandleInfoKHR where
+    type StructRep VkExportSemaphoreWin32HandleInfoKHR =
+         'StructMeta "VkExportSemaphoreWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkExportSemaphoreWin32HandleInfoKHR
+           #{size VkExportSemaphoreWin32HandleInfoKHR}
+           #{alignment VkExportSemaphoreWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkExportSemaphoreWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkExportSemaphoreWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAttributes" (Ptr SECURITY_ATTRIBUTES) 'True 
+                                                                       #{offset VkExportSemaphoreWin32HandleInfoKHR, pAttributes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dwAccess" DWORD 'False 
+                                                 #{offset VkExportSemaphoreWin32HandleInfoKHR, dwAccess}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "name" LPCWSTR 'False 
+                                               #{offset VkExportSemaphoreWin32HandleInfoKHR, name}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSemaphoreCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkFenceGetWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                            pNext;
+--   >     VkFence                                fence;
+--   >     VkExternalFenceHandleTypeFlagBits   handleType;
+--   > } VkFenceGetWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkFenceGetWin32HandleInfoKHR VkFenceGetWin32HandleInfoKHR registry at www.khronos.org>
+type VkFenceGetWin32HandleInfoKHR =
+     VkStruct VkFenceGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkFenceGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkFenceGetWin32HandleInfoKHR where
+    type StructRep VkFenceGetWin32HandleInfoKHR =
+         'StructMeta "VkFenceGetWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkFenceGetWin32HandleInfoKHR
+           #{size VkFenceGetWin32HandleInfoKHR}
+           #{alignment VkFenceGetWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkFenceGetWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkFenceGetWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fence" VkFence 'False 
+                                                #{offset VkFenceGetWin32HandleInfoKHR, fence}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalFenceHandleTypeFlagBits 'False
+                #{offset VkFenceGetWin32HandleInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImportFenceWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                                        pNext;
+--   >     VkFence                          fence;
+--   >     VkFenceImportFlags              flags;
+--   >     VkExternalFenceHandleTypeFlagBits  handleType;
+--   >     HANDLE                             handle;
+--   >     LPCWSTR                            name;
+--   > } VkImportFenceWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportFenceWin32HandleInfoKHR VkImportFenceWin32HandleInfoKHR registry at www.khronos.org>
+type VkImportFenceWin32HandleInfoKHR =
+     VkStruct VkImportFenceWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkImportFenceWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImportFenceWin32HandleInfoKHR where
+    type StructRep VkImportFenceWin32HandleInfoKHR =
+         'StructMeta "VkImportFenceWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkImportFenceWin32HandleInfoKHR
+           #{size VkImportFenceWin32HandleInfoKHR}
+           #{alignment VkImportFenceWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportFenceWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportFenceWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "fence" VkFence 'False 
+                                                #{offset VkImportFenceWin32HandleInfoKHR, fence}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkFenceImportFlags 'True 
+                                                          #{offset VkImportFenceWin32HandleInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalFenceHandleTypeFlagBits 'True
+                #{offset VkImportFenceWin32HandleInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handle" HANDLE 'True 
+                                               #{offset VkImportFenceWin32HandleInfoKHR, handle}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "name" LPCWSTR 'True 
+                                              #{offset VkImportFenceWin32HandleInfoKHR, name}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImportMemoryWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
+--   >     HANDLE           handle;
+--   >     LPCWSTR          name;
+--   > } VkImportMemoryWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportMemoryWin32HandleInfoKHR VkImportMemoryWin32HandleInfoKHR registry at www.khronos.org>
+type VkImportMemoryWin32HandleInfoKHR =
+     VkStruct VkImportMemoryWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkImportMemoryWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImportMemoryWin32HandleInfoKHR where
+    type StructRep VkImportMemoryWin32HandleInfoKHR =
+         'StructMeta "VkImportMemoryWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkImportMemoryWin32HandleInfoKHR
+           #{size VkImportMemoryWin32HandleInfoKHR}
+           #{alignment VkImportMemoryWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportMemoryWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportMemoryWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagBits 'True
+                #{offset VkImportMemoryWin32HandleInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handle" HANDLE 'True 
+                                               #{offset VkImportMemoryWin32HandleInfoKHR, handle}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "name" LPCWSTR 'True 
+                                              #{offset VkImportMemoryWin32HandleInfoKHR, name}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImportMemoryWin32HandleInfoNV {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkExternalMemoryHandleTypeFlagsNV handleType;
+--   >     HANDLE                           handle;
+--   > } VkImportMemoryWin32HandleInfoNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportMemoryWin32HandleInfoNV VkImportMemoryWin32HandleInfoNV registry at www.khronos.org>
+type VkImportMemoryWin32HandleInfoNV =
+     VkStruct VkImportMemoryWin32HandleInfoNV' -- ' closing tick for hsc2hs
+
+data VkImportMemoryWin32HandleInfoNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImportMemoryWin32HandleInfoNV where
+    type StructRep VkImportMemoryWin32HandleInfoNV =
+         'StructMeta "VkImportMemoryWin32HandleInfoNV" -- ' closing tick for hsc2hs
+           VkImportMemoryWin32HandleInfoNV
+           #{size VkImportMemoryWin32HandleInfoNV}
+           #{alignment VkImportMemoryWin32HandleInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportMemoryWin32HandleInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportMemoryWin32HandleInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagsNV 'True
+                #{offset VkImportMemoryWin32HandleInfoNV, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handle" HANDLE 'True 
+                                               #{offset VkImportMemoryWin32HandleInfoNV, handle}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkImportSemaphoreWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSemaphore    semaphore;
+--   >     VkSemaphoreImportFlags flags;
+--   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
+--   >     HANDLE           handle;
+--   >     LPCWSTR          name;
+--   > } VkImportSemaphoreWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkImportSemaphoreWin32HandleInfoKHR VkImportSemaphoreWin32HandleInfoKHR registry at www.khronos.org>
+type VkImportSemaphoreWin32HandleInfoKHR =
+     VkStruct VkImportSemaphoreWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkImportSemaphoreWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkImportSemaphoreWin32HandleInfoKHR where
+    type StructRep VkImportSemaphoreWin32HandleInfoKHR =
+         'StructMeta "VkImportSemaphoreWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkImportSemaphoreWin32HandleInfoKHR
+           #{size VkImportSemaphoreWin32HandleInfoKHR}
+           #{alignment VkImportSemaphoreWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkImportSemaphoreWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkImportSemaphoreWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "semaphore" VkSemaphore 'False 
+                                                        #{offset VkImportSemaphoreWin32HandleInfoKHR, semaphore}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkSemaphoreImportFlags 'True 
+                                                              #{offset VkImportSemaphoreWin32HandleInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalSemaphoreHandleTypeFlagBits -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkImportSemaphoreWin32HandleInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handle" HANDLE 'True 
+                                               #{offset VkImportSemaphoreWin32HandleInfoKHR, handle}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "name" LPCWSTR 'True 
+                                              #{offset VkImportSemaphoreWin32HandleInfoKHR, name}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryGetWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkDeviceMemory                   memory;
+--   >     VkExternalMemoryHandleTypeFlagBits handleType;
+--   > } VkMemoryGetWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryGetWin32HandleInfoKHR VkMemoryGetWin32HandleInfoKHR registry at www.khronos.org>
+type VkMemoryGetWin32HandleInfoKHR =
+     VkStruct VkMemoryGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkMemoryGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryGetWin32HandleInfoKHR where
+    type StructRep VkMemoryGetWin32HandleInfoKHR =
+         'StructMeta "VkMemoryGetWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkMemoryGetWin32HandleInfoKHR
+           #{size VkMemoryGetWin32HandleInfoKHR}
+           #{alignment VkMemoryGetWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryGetWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryGetWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memory" VkDeviceMemory 'False 
+                                                        #{offset VkMemoryGetWin32HandleInfoKHR, memory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalMemoryHandleTypeFlagBits 'False
+                #{offset VkMemoryGetWin32HandleInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkMemoryWin32HandlePropertiesKHR {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         memoryTypeBits;
+--   > } VkMemoryWin32HandlePropertiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkMemoryWin32HandlePropertiesKHR VkMemoryWin32HandlePropertiesKHR registry at www.khronos.org>
+type VkMemoryWin32HandlePropertiesKHR =
+     VkStruct VkMemoryWin32HandlePropertiesKHR' -- ' closing tick for hsc2hs
+
+data VkMemoryWin32HandlePropertiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkMemoryWin32HandlePropertiesKHR where
+    type StructRep VkMemoryWin32HandlePropertiesKHR =
+         'StructMeta "VkMemoryWin32HandlePropertiesKHR" -- ' closing tick for hsc2hs
+           VkMemoryWin32HandlePropertiesKHR
+           #{size VkMemoryWin32HandlePropertiesKHR}
+           #{alignment VkMemoryWin32HandlePropertiesKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkMemoryWin32HandlePropertiesKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkMemoryWin32HandlePropertiesKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryTypeBits" Word32 'False 
+                                                        #{offset VkMemoryWin32HandlePropertiesKHR, memoryTypeBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSemaphoreGetWin32HandleInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSemaphore                      semaphore;
+--   >     VkExternalSemaphoreHandleTypeFlagBits handleType;
+--   > } VkSemaphoreGetWin32HandleInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSemaphoreGetWin32HandleInfoKHR VkSemaphoreGetWin32HandleInfoKHR registry at www.khronos.org>
+type VkSemaphoreGetWin32HandleInfoKHR =
+     VkStruct VkSemaphoreGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+data VkSemaphoreGetWin32HandleInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSemaphoreGetWin32HandleInfoKHR where
+    type StructRep VkSemaphoreGetWin32HandleInfoKHR =
+         'StructMeta "VkSemaphoreGetWin32HandleInfoKHR" -- ' closing tick for hsc2hs
+           VkSemaphoreGetWin32HandleInfoKHR
+           #{size VkSemaphoreGetWin32HandleInfoKHR}
+           #{alignment VkSemaphoreGetWin32HandleInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSemaphoreGetWin32HandleInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSemaphoreGetWin32HandleInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "semaphore" VkSemaphore 'False 
+                                                        #{offset VkSemaphoreGetWin32HandleInfoKHR, semaphore}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalSemaphoreHandleTypeFlagBits -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkSemaphoreGetWin32HandleInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t         acquireCount;
+--   >     const VkDeviceMemory* pAcquireSyncs;
+--   >     const uint64_t* pAcquireKeys;
+--   >     const uint32_t* pAcquireTimeouts;
+--   >     uint32_t         releaseCount;
+--   >     const VkDeviceMemory* pReleaseSyncs;
+--   >     const uint64_t* pReleaseKeys;
+--   > } VkWin32KeyedMutexAcquireReleaseInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkWin32KeyedMutexAcquireReleaseInfoKHR VkWin32KeyedMutexAcquireReleaseInfoKHR registry at www.khronos.org>
+type VkWin32KeyedMutexAcquireReleaseInfoKHR =
+     VkStruct VkWin32KeyedMutexAcquireReleaseInfoKHR' -- ' closing tick for hsc2hs
+
+data VkWin32KeyedMutexAcquireReleaseInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkWin32KeyedMutexAcquireReleaseInfoKHR where
+    type StructRep VkWin32KeyedMutexAcquireReleaseInfoKHR =
+         'StructMeta "VkWin32KeyedMutexAcquireReleaseInfoKHR" -- ' closing tick for hsc2hs
+           VkWin32KeyedMutexAcquireReleaseInfoKHR
+           #{size VkWin32KeyedMutexAcquireReleaseInfoKHR}
+           #{alignment VkWin32KeyedMutexAcquireReleaseInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "acquireCount" Word32 'True 
+                                                     #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, acquireCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAcquireSyncs" (Ptr VkDeviceMemory) 'False 
+                                                                     #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireSyncs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAcquireKeys" (Ptr Word64) 'False 
+                                                            #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireKeys}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAcquireTimeouts" (Ptr Word32) 'False 
+                                                                #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pAcquireTimeouts}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "releaseCount" Word32 'True 
+                                                     #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, releaseCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pReleaseSyncs" (Ptr VkDeviceMemory) 'False 
+                                                                     #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseSyncs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pReleaseKeys" (Ptr Word64) 'False 
+                                                            #{offset VkWin32KeyedMutexAcquireReleaseInfoKHR, pReleaseKeys}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSubmitInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         acquireCount;
+--   >     const VkDeviceMemory*            pAcquireSyncs;
+--   >     const uint64_t*                  pAcquireKeys;
+--   >     const uint32_t*                  pAcquireTimeoutMilliseconds;
+--   >     uint32_t                         releaseCount;
+--   >     const VkDeviceMemory*            pReleaseSyncs;
+--   >     const uint64_t*                  pReleaseKeys;
+--   > } VkWin32KeyedMutexAcquireReleaseInfoNV;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkWin32KeyedMutexAcquireReleaseInfoNV VkWin32KeyedMutexAcquireReleaseInfoNV registry at www.khronos.org>
+type VkWin32KeyedMutexAcquireReleaseInfoNV =
+     VkStruct VkWin32KeyedMutexAcquireReleaseInfoNV' -- ' closing tick for hsc2hs
+
+data VkWin32KeyedMutexAcquireReleaseInfoNV' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkWin32KeyedMutexAcquireReleaseInfoNV where
+    type StructRep VkWin32KeyedMutexAcquireReleaseInfoNV =
+         'StructMeta "VkWin32KeyedMutexAcquireReleaseInfoNV" -- ' closing tick for hsc2hs
+           VkWin32KeyedMutexAcquireReleaseInfoNV
+           #{size VkWin32KeyedMutexAcquireReleaseInfoNV}
+           #{alignment VkWin32KeyedMutexAcquireReleaseInfoNV}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "acquireCount" Word32 'True 
+                                                     #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, acquireCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAcquireSyncs" (Ptr VkDeviceMemory) 'False 
+                                                                     #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireSyncs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAcquireKeys" (Ptr Word64) 'False 
+                                                            #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireKeys}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAcquireTimeoutMilliseconds" (Ptr Word32) 'False
+                #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pAcquireTimeoutMilliseconds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "releaseCount" Word32 'True 
+                                                     #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, releaseCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pReleaseSyncs" (Ptr VkDeviceMemory) 'False 
+                                                                     #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseSyncs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pReleaseKeys" (Ptr Word64) 'False 
+                                                            #{offset VkWin32KeyedMutexAcquireReleaseInfoNV, pReleaseKeys}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSubmitInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkWin32SurfaceCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkWin32SurfaceCreateFlagsKHR   flags;
+--   >     HINSTANCE                        hinstance;
+--   >     HWND                             hwnd;
+--   > } VkWin32SurfaceCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkWin32SurfaceCreateInfoKHR VkWin32SurfaceCreateInfoKHR registry at www.khronos.org>
+type VkWin32SurfaceCreateInfoKHR =
+     VkStruct VkWin32SurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+
+data VkWin32SurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkWin32SurfaceCreateInfoKHR where
+    type StructRep VkWin32SurfaceCreateInfoKHR =
+         'StructMeta "VkWin32SurfaceCreateInfoKHR" -- ' closing tick for hsc2hs
+           VkWin32SurfaceCreateInfoKHR
+           #{size VkWin32SurfaceCreateInfoKHR}
+           #{alignment VkWin32SurfaceCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkWin32SurfaceCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkWin32SurfaceCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkWin32SurfaceCreateFlagsKHR 'True 
+                                                                    #{offset VkWin32SurfaceCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "hinstance" HINSTANCE 'False 
+                                                      #{offset VkWin32SurfaceCreateInfoKHR, hinstance}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "hwnd" HWND 'False 
+                                            #{offset VkWin32SurfaceCreateInfoKHR, hwnd}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformXcbKhr.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformXcbKhr.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformXcbKhr.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformXcbKhr.hsc
@@ -2,20 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PlatformXcbKhr
-       (VkXcbSurfaceCreateInfoKHR, VkXcbSurfaceCreateInfoKHR') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkXcbSurfaceCreateInfoKHR) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkXcbSurfaceCreateFlagsKHR)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Include            (XcbConnectionT, XcbWindowT)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkXcbSurfaceCreateInfoKHR {
 --   >     VkStructureType sType;
@@ -27,217 +23,40 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkXcbSurfaceCreateInfoKHR VkXcbSurfaceCreateInfoKHR registry at www.khronos.org>
 type VkXcbSurfaceCreateInfoKHR =
-     VulkanStruct VkXcbSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+     VkStruct VkXcbSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
 
 data VkXcbSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkXcbSurfaceCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkXcbSurfaceCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkXcbSurfaceCreateInfoKHR where
-        sizeOf ~_ = #{size VkXcbSurfaceCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkXcbSurfaceCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkXcbSurfaceCreateInfoKHR where
-        type StructFields VkXcbSurfaceCreateInfoKHR =
-             '["sType", "pNext", "flags", "connection", "window"] -- ' closing tick for hsc2hs
-        type CUnionType VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkXcbSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkXcbSurfaceCreateInfoKHR where
-        type FieldType "sType" VkXcbSurfaceCreateInfoKHR = VkStructureType
-        type FieldOptional "sType" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkXcbSurfaceCreateInfoKHR =
-             #{offset VkXcbSurfaceCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXcbSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkXcbSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkXcbSurfaceCreateInfoKHR where
-        type FieldType "pNext" VkXcbSurfaceCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkXcbSurfaceCreateInfoKHR =
-             #{offset VkXcbSurfaceCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXcbSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkXcbSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkXcbSurfaceCreateInfoKHR where
-        type FieldType "flags" VkXcbSurfaceCreateInfoKHR =
-             VkXcbSurfaceCreateFlagsKHR
-        type FieldOptional "flags" VkXcbSurfaceCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkXcbSurfaceCreateInfoKHR =
-             #{offset VkXcbSurfaceCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXcbSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkXcbSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "connection" VkXcbSurfaceCreateInfoKHR where
-        type FieldType "connection" VkXcbSurfaceCreateInfoKHR =
-             Ptr XcbConnectionT
-        type FieldOptional "connection" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "connection" VkXcbSurfaceCreateInfoKHR =
-             #{offset VkXcbSurfaceCreateInfoKHR, connection}
-        type FieldIsArray "connection" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXcbSurfaceCreateInfoKHR, connection}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "connection" VkXcbSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, connection})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, connection}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "connection" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, connection}
-
-instance {-# OVERLAPPING #-}
-         HasField "window" VkXcbSurfaceCreateInfoKHR where
-        type FieldType "window" VkXcbSurfaceCreateInfoKHR = XcbWindowT
-        type FieldOptional "window" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "window" VkXcbSurfaceCreateInfoKHR =
-             #{offset VkXcbSurfaceCreateInfoKHR, window}
-        type FieldIsArray "window" VkXcbSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXcbSurfaceCreateInfoKHR, window}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "window" VkXcbSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXcbSurfaceCreateInfoKHR, window})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXcbSurfaceCreateInfoKHR, window}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "window" VkXcbSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXcbSurfaceCreateInfoKHR, window}
-
-instance Show VkXcbSurfaceCreateInfoKHR where
-        showsPrec d x
-          = showString "VkXcbSurfaceCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "connection = " .
-                                  showsPrec d (getField @"connection" x) .
-                                    showString ", " .
-                                      showString "window = " .
-                                        showsPrec d (getField @"window" x) . showChar '}'
+    type StructRep VkXcbSurfaceCreateInfoKHR =
+         'StructMeta "VkXcbSurfaceCreateInfoKHR" VkXcbSurfaceCreateInfoKHR -- ' closing tick for hsc2hs
+           #{size VkXcbSurfaceCreateInfoKHR}
+           #{alignment VkXcbSurfaceCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkXcbSurfaceCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkXcbSurfaceCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkXcbSurfaceCreateFlagsKHR 'True 
+                                                                  #{offset VkXcbSurfaceCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "connection" (Ptr XcbConnectionT) 'False 
+                                                                  #{offset VkXcbSurfaceCreateInfoKHR, connection}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "window" XcbWindowT 'False 
+                                                    #{offset VkXcbSurfaceCreateInfoKHR, window}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PlatformXlibKhr.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PlatformXlibKhr.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PlatformXlibKhr.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PlatformXlibKhr.hsc
@@ -2,20 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PlatformXlibKhr
-       (VkXlibSurfaceCreateInfoKHR, VkXlibSurfaceCreateInfoKHR') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkXlibSurfaceCreateInfoKHR) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkXlibSurfaceCreateFlagsKHR)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Include            (Display, Window)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkXlibSurfaceCreateInfoKHR {
 --   >     VkStructureType sType;
@@ -27,215 +23,40 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkXlibSurfaceCreateInfoKHR VkXlibSurfaceCreateInfoKHR registry at www.khronos.org>
 type VkXlibSurfaceCreateInfoKHR =
-     VulkanStruct VkXlibSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
+     VkStruct VkXlibSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
 
 data VkXlibSurfaceCreateInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkXlibSurfaceCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkXlibSurfaceCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkXlibSurfaceCreateInfoKHR where
-        sizeOf ~_ = #{size VkXlibSurfaceCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkXlibSurfaceCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkXlibSurfaceCreateInfoKHR where
-        type StructFields VkXlibSurfaceCreateInfoKHR =
-             '["sType", "pNext", "flags", "dpy", "window"] -- ' closing tick for hsc2hs
-        type CUnionType VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkXlibSurfaceCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkXlibSurfaceCreateInfoKHR where
-        type FieldType "sType" VkXlibSurfaceCreateInfoKHR = VkStructureType
-        type FieldOptional "sType" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkXlibSurfaceCreateInfoKHR =
-             #{offset VkXlibSurfaceCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXlibSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkXlibSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkXlibSurfaceCreateInfoKHR where
-        type FieldType "pNext" VkXlibSurfaceCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkXlibSurfaceCreateInfoKHR =
-             #{offset VkXlibSurfaceCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXlibSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkXlibSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkXlibSurfaceCreateInfoKHR where
-        type FieldType "flags" VkXlibSurfaceCreateInfoKHR =
-             VkXlibSurfaceCreateFlagsKHR
-        type FieldOptional "flags" VkXlibSurfaceCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkXlibSurfaceCreateInfoKHR =
-             #{offset VkXlibSurfaceCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXlibSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkXlibSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "dpy" VkXlibSurfaceCreateInfoKHR where
-        type FieldType "dpy" VkXlibSurfaceCreateInfoKHR = Ptr Display
-        type FieldOptional "dpy" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dpy" VkXlibSurfaceCreateInfoKHR =
-             #{offset VkXlibSurfaceCreateInfoKHR, dpy}
-        type FieldIsArray "dpy" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkXlibSurfaceCreateInfoKHR, dpy}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dpy" VkXlibSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, dpy})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, dpy}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dpy" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, dpy}
-
-instance {-# OVERLAPPING #-}
-         HasField "window" VkXlibSurfaceCreateInfoKHR where
-        type FieldType "window" VkXlibSurfaceCreateInfoKHR = Window
-        type FieldOptional "window" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "window" VkXlibSurfaceCreateInfoKHR =
-             #{offset VkXlibSurfaceCreateInfoKHR, window}
-        type FieldIsArray "window" VkXlibSurfaceCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkXlibSurfaceCreateInfoKHR, window}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "window" VkXlibSurfaceCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXlibSurfaceCreateInfoKHR, window})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkXlibSurfaceCreateInfoKHR, window}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "window" VkXlibSurfaceCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkXlibSurfaceCreateInfoKHR, window}
-
-instance Show VkXlibSurfaceCreateInfoKHR where
-        showsPrec d x
-          = showString "VkXlibSurfaceCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "dpy = " .
-                                  showsPrec d (getField @"dpy" x) .
-                                    showString ", " .
-                                      showString "window = " .
-                                        showsPrec d (getField @"window" x) . showChar '}'
+    type StructRep VkXlibSurfaceCreateInfoKHR =
+         'StructMeta "VkXlibSurfaceCreateInfoKHR" VkXlibSurfaceCreateInfoKHR -- ' closing tick for hsc2hs
+           #{size VkXlibSurfaceCreateInfoKHR}
+           #{alignment VkXlibSurfaceCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkXlibSurfaceCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkXlibSurfaceCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkXlibSurfaceCreateFlagsKHR 'True 
+                                                                   #{offset VkXlibSurfaceCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dpy" (Ptr Display) 'False 
+                                                    #{offset VkXlibSurfaceCreateInfoKHR, dpy}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "window" Window 'False 
+                                                #{offset VkXlibSurfaceCreateInfoKHR, window}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Present.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Present.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Present.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Present.hsc
@@ -2,949 +2,221 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Present
-       (VkPresentInfoKHR, VkPresentInfoKHR', VkPresentRegionKHR, -- ' closing tick for hsc2hs
-        VkPresentRegionKHR', VkPresentRegionsKHR, VkPresentRegionsKHR',
-        VkPresentTimeGOOGLE, VkPresentTimeGOOGLE', -- ' closing tick for hsc2hs
-        VkPresentTimesInfoGOOGLE, VkPresentTimesInfoGOOGLE') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.Enum.Result        (VkResult)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkSemaphore, VkSwapchainKHR)
-import Graphics.Vulkan.Types.Struct.Rect        (VkRectLayerKHR)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkPresentInfoKHR {
---   >     VkStructureType sType;
---   >     const void*  pNext;
---   >     uint32_t         waitSemaphoreCount;
---   >     const VkSemaphore* pWaitSemaphores;
---   >     uint32_t                         swapchainCount;
---   >     const VkSwapchainKHR* pSwapchains;
---   >     const uint32_t* pImageIndices;
---   >     VkResult* pResults;
---   > } VkPresentInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentInfoKHR VkPresentInfoKHR registry at www.khronos.org>
-type VkPresentInfoKHR = VulkanStruct VkPresentInfoKHR' -- ' closing tick for hsc2hs
-
-data VkPresentInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkPresentInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPresentInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPresentInfoKHR where
-        sizeOf ~_ = #{size VkPresentInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPresentInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPresentInfoKHR where
-        type StructFields VkPresentInfoKHR =
-             '["sType", "pNext", "waitSemaphoreCount", "pWaitSemaphores", -- ' closing tick for hsc2hs
-               "swapchainCount", "pSwapchains", "pImageIndices", "pResults"]
-        type CUnionType VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPresentInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkPresentInfoKHR
-         where
-        type FieldType "sType" VkPresentInfoKHR = VkStructureType
-        type FieldOptional "sType" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPresentInfoKHR =
-             #{offset VkPresentInfoKHR, sType}
-        type FieldIsArray "sType" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkPresentInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-} CanWriteField "sType" VkPresentInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentInfoKHR, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkPresentInfoKHR
-         where
-        type FieldType "pNext" VkPresentInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPresentInfoKHR =
-             #{offset VkPresentInfoKHR, pNext}
-        type FieldIsArray "pNext" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkPresentInfoKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-} CanWriteField "pNext" VkPresentInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "waitSemaphoreCount" VkPresentInfoKHR where
-        type FieldType "waitSemaphoreCount" VkPresentInfoKHR = Word32
-        type FieldOptional "waitSemaphoreCount" VkPresentInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "waitSemaphoreCount" VkPresentInfoKHR =
-             #{offset VkPresentInfoKHR, waitSemaphoreCount}
-        type FieldIsArray "waitSemaphoreCount" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPresentInfoKHR, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "waitSemaphoreCount" VkPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, waitSemaphoreCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentInfoKHR, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "waitSemaphoreCount" VkPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentInfoKHR, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pWaitSemaphores" VkPresentInfoKHR where
-        type FieldType "pWaitSemaphores" VkPresentInfoKHR = Ptr VkSemaphore
-        type FieldOptional "pWaitSemaphores" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pWaitSemaphores" VkPresentInfoKHR =
-             #{offset VkPresentInfoKHR, pWaitSemaphores}
-        type FieldIsArray "pWaitSemaphores" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPresentInfoKHR, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pWaitSemaphores" VkPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pWaitSemaphores})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentInfoKHR, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pWaitSemaphores" VkPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchainCount" VkPresentInfoKHR where
-        type FieldType "swapchainCount" VkPresentInfoKHR = Word32
-        type FieldOptional "swapchainCount" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "swapchainCount" VkPresentInfoKHR =
-             #{offset VkPresentInfoKHR, swapchainCount}
-        type FieldIsArray "swapchainCount" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPresentInfoKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "swapchainCount" VkPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, swapchainCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentInfoKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "swapchainCount" VkPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentInfoKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSwapchains" VkPresentInfoKHR where
-        type FieldType "pSwapchains" VkPresentInfoKHR = Ptr VkSwapchainKHR
-        type FieldOptional "pSwapchains" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSwapchains" VkPresentInfoKHR =
-             #{offset VkPresentInfoKHR, pSwapchains}
-        type FieldIsArray "pSwapchains" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentInfoKHR, pSwapchains}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSwapchains" VkPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pSwapchains})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentInfoKHR, pSwapchains}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSwapchains" VkPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pSwapchains}
-
-instance {-# OVERLAPPING #-}
-         HasField "pImageIndices" VkPresentInfoKHR where
-        type FieldType "pImageIndices" VkPresentInfoKHR = Ptr Word32
-        type FieldOptional "pImageIndices" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pImageIndices" VkPresentInfoKHR =
-             #{offset VkPresentInfoKHR, pImageIndices}
-        type FieldIsArray "pImageIndices" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentInfoKHR, pImageIndices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pImageIndices" VkPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pImageIndices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentInfoKHR, pImageIndices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pImageIndices" VkPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pImageIndices}
-
-instance {-# OVERLAPPING #-} HasField "pResults" VkPresentInfoKHR
-         where
-        type FieldType "pResults" VkPresentInfoKHR = Ptr VkResult
-        type FieldOptional "pResults" VkPresentInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pResults" VkPresentInfoKHR =
-             #{offset VkPresentInfoKHR, pResults}
-        type FieldIsArray "pResults" VkPresentInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentInfoKHR, pResults}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pResults" VkPresentInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentInfoKHR, pResults})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentInfoKHR, pResults}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pResults" VkPresentInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentInfoKHR, pResults}
-
-instance Show VkPresentInfoKHR where
-        showsPrec d x
-          = showString "VkPresentInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "waitSemaphoreCount = " .
-                            showsPrec d (getField @"waitSemaphoreCount" x) .
-                              showString ", " .
-                                showString "pWaitSemaphores = " .
-                                  showsPrec d (getField @"pWaitSemaphores" x) .
-                                    showString ", " .
-                                      showString "swapchainCount = " .
-                                        showsPrec d (getField @"swapchainCount" x) .
-                                          showString ", " .
-                                            showString "pSwapchains = " .
-                                              showsPrec d (getField @"pSwapchains" x) .
-                                                showString ", " .
-                                                  showString "pImageIndices = " .
-                                                    showsPrec d (getField @"pImageIndices" x) .
-                                                      showString ", " .
-                                                        showString "pResults = " .
-                                                          showsPrec d (getField @"pResults" x) .
-                                                            showChar '}'
-
--- | > typedef struct VkPresentRegionKHR {
---   >     uint32_t         rectangleCount;
---   >     const VkRectLayerKHR*   pRectangles;
---   > } VkPresentRegionKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentRegionKHR VkPresentRegionKHR registry at www.khronos.org>
-type VkPresentRegionKHR = VulkanStruct VkPresentRegionKHR' -- ' closing tick for hsc2hs
-
-data VkPresentRegionKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkPresentRegionKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPresentRegionKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPresentRegionKHR where
-        sizeOf ~_ = #{size VkPresentRegionKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPresentRegionKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPresentRegionKHR where
-        type StructFields VkPresentRegionKHR =
-             '["rectangleCount", "pRectangles"] -- ' closing tick for hsc2hs
-        type CUnionType VkPresentRegionKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPresentRegionKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPresentRegionKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "rectangleCount" VkPresentRegionKHR where
-        type FieldType "rectangleCount" VkPresentRegionKHR = Word32
-        type FieldOptional "rectangleCount" VkPresentRegionKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "rectangleCount" VkPresentRegionKHR =
-             #{offset VkPresentRegionKHR, rectangleCount}
-        type FieldIsArray "rectangleCount" VkPresentRegionKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPresentRegionKHR, rectangleCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "rectangleCount" VkPresentRegionKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionKHR, rectangleCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentRegionKHR, rectangleCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "rectangleCount" VkPresentRegionKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentRegionKHR, rectangleCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pRectangles" VkPresentRegionKHR where
-        type FieldType "pRectangles" VkPresentRegionKHR =
-             Ptr VkRectLayerKHR
-        type FieldOptional "pRectangles" VkPresentRegionKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pRectangles" VkPresentRegionKHR =
-             #{offset VkPresentRegionKHR, pRectangles}
-        type FieldIsArray "pRectangles" VkPresentRegionKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentRegionKHR, pRectangles}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pRectangles" VkPresentRegionKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionKHR, pRectangles})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentRegionKHR, pRectangles}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pRectangles" VkPresentRegionKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentRegionKHR, pRectangles}
-
-instance Show VkPresentRegionKHR where
-        showsPrec d x
-          = showString "VkPresentRegionKHR {" .
-              showString "rectangleCount = " .
-                showsPrec d (getField @"rectangleCount" x) .
-                  showString ", " .
-                    showString "pRectangles = " .
-                      showsPrec d (getField @"pRectangles" x) . showChar '}'
-
--- | > typedef struct VkPresentRegionsKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         swapchainCount;
---   >     const VkPresentRegionKHR*   pRegions;
---   > } VkPresentRegionsKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentRegionsKHR VkPresentRegionsKHR registry at www.khronos.org>
-type VkPresentRegionsKHR = VulkanStruct VkPresentRegionsKHR' -- ' closing tick for hsc2hs
-
-data VkPresentRegionsKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkPresentRegionsKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPresentRegionsKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPresentRegionsKHR where
-        sizeOf ~_ = #{size VkPresentRegionsKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPresentRegionsKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPresentRegionsKHR where
-        type StructFields VkPresentRegionsKHR =
-             '["sType", "pNext", "swapchainCount", "pRegions"] -- ' closing tick for hsc2hs
-        type CUnionType VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPresentRegionsKHR = '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkPresentRegionsKHR
-         where
-        type FieldType "sType" VkPresentRegionsKHR = VkStructureType
-        type FieldOptional "sType" VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPresentRegionsKHR =
-             #{offset VkPresentRegionsKHR, sType}
-        type FieldIsArray "sType" VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentRegionsKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPresentRegionsKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentRegionsKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPresentRegionsKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentRegionsKHR, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkPresentRegionsKHR
-         where
-        type FieldType "pNext" VkPresentRegionsKHR = Ptr Void
-        type FieldOptional "pNext" VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPresentRegionsKHR =
-             #{offset VkPresentRegionsKHR, pNext}
-        type FieldIsArray "pNext" VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentRegionsKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPresentRegionsKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentRegionsKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPresentRegionsKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentRegionsKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchainCount" VkPresentRegionsKHR where
-        type FieldType "swapchainCount" VkPresentRegionsKHR = Word32
-        type FieldOptional "swapchainCount" VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "swapchainCount" VkPresentRegionsKHR =
-             #{offset VkPresentRegionsKHR, swapchainCount}
-        type FieldIsArray "swapchainCount" VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPresentRegionsKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "swapchainCount" VkPresentRegionsKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, swapchainCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentRegionsKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "swapchainCount" VkPresentRegionsKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentRegionsKHR, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pRegions" VkPresentRegionsKHR where
-        type FieldType "pRegions" VkPresentRegionsKHR =
-             Ptr VkPresentRegionKHR
-        type FieldOptional "pRegions" VkPresentRegionsKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pRegions" VkPresentRegionsKHR =
-             #{offset VkPresentRegionsKHR, pRegions}
-        type FieldIsArray "pRegions" VkPresentRegionsKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentRegionsKHR, pRegions}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pRegions" VkPresentRegionsKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentRegionsKHR, pRegions})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentRegionsKHR, pRegions}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pRegions" VkPresentRegionsKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentRegionsKHR, pRegions}
-
-instance Show VkPresentRegionsKHR where
-        showsPrec d x
-          = showString "VkPresentRegionsKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "swapchainCount = " .
-                            showsPrec d (getField @"swapchainCount" x) .
-                              showString ", " .
-                                showString "pRegions = " .
-                                  showsPrec d (getField @"pRegions" x) . showChar '}'
-
--- | > typedef struct VkPresentTimeGOOGLE {
---   >     uint32_t                         presentID;
---   >     uint64_t                         desiredPresentTime;
---   > } VkPresentTimeGOOGLE;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentTimeGOOGLE VkPresentTimeGOOGLE registry at www.khronos.org>
-type VkPresentTimeGOOGLE = VulkanStruct VkPresentTimeGOOGLE' -- ' closing tick for hsc2hs
-
-data VkPresentTimeGOOGLE' -- ' closing tick for hsc2hs
-
-instance Eq VkPresentTimeGOOGLE where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPresentTimeGOOGLE where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPresentTimeGOOGLE where
-        sizeOf ~_ = #{size VkPresentTimeGOOGLE}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPresentTimeGOOGLE}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPresentTimeGOOGLE where
-        type StructFields VkPresentTimeGOOGLE =
-             '["presentID", "desiredPresentTime"] -- ' closing tick for hsc2hs
-        type CUnionType VkPresentTimeGOOGLE = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPresentTimeGOOGLE = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPresentTimeGOOGLE = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "presentID" VkPresentTimeGOOGLE where
-        type FieldType "presentID" VkPresentTimeGOOGLE = Word32
-        type FieldOptional "presentID" VkPresentTimeGOOGLE = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "presentID" VkPresentTimeGOOGLE =
-             #{offset VkPresentTimeGOOGLE, presentID}
-        type FieldIsArray "presentID" VkPresentTimeGOOGLE = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentTimeGOOGLE, presentID}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "presentID" VkPresentTimeGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimeGOOGLE, presentID})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentTimeGOOGLE, presentID}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "presentID" VkPresentTimeGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentTimeGOOGLE, presentID}
-
-instance {-# OVERLAPPING #-}
-         HasField "desiredPresentTime" VkPresentTimeGOOGLE where
-        type FieldType "desiredPresentTime" VkPresentTimeGOOGLE = Word64
-        type FieldOptional "desiredPresentTime" VkPresentTimeGOOGLE =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "desiredPresentTime" VkPresentTimeGOOGLE =
-             #{offset VkPresentTimeGOOGLE, desiredPresentTime}
-        type FieldIsArray "desiredPresentTime" VkPresentTimeGOOGLE = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPresentTimeGOOGLE, desiredPresentTime}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "desiredPresentTime" VkPresentTimeGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimeGOOGLE, desiredPresentTime})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentTimeGOOGLE, desiredPresentTime}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "desiredPresentTime" VkPresentTimeGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentTimeGOOGLE, desiredPresentTime}
-
-instance Show VkPresentTimeGOOGLE where
-        showsPrec d x
-          = showString "VkPresentTimeGOOGLE {" .
-              showString "presentID = " .
-                showsPrec d (getField @"presentID" x) .
-                  showString ", " .
-                    showString "desiredPresentTime = " .
-                      showsPrec d (getField @"desiredPresentTime" x) . showChar '}'
-
--- | > typedef struct VkPresentTimesInfoGOOGLE {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t                         swapchainCount;
---   >     const VkPresentTimeGOOGLE*   pTimes;
---   > } VkPresentTimesInfoGOOGLE;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentTimesInfoGOOGLE VkPresentTimesInfoGOOGLE registry at www.khronos.org>
-type VkPresentTimesInfoGOOGLE =
-     VulkanStruct VkPresentTimesInfoGOOGLE' -- ' closing tick for hsc2hs
-
-data VkPresentTimesInfoGOOGLE' -- ' closing tick for hsc2hs
-
-instance Eq VkPresentTimesInfoGOOGLE where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPresentTimesInfoGOOGLE where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPresentTimesInfoGOOGLE where
-        sizeOf ~_ = #{size VkPresentTimesInfoGOOGLE}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPresentTimesInfoGOOGLE}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkPresentTimesInfoGOOGLE where
-        type StructFields VkPresentTimesInfoGOOGLE =
-             '["sType", "pNext", "swapchainCount", "pTimes"] -- ' closing tick for hsc2hs
-        type CUnionType VkPresentTimesInfoGOOGLE = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPresentTimesInfoGOOGLE = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPresentTimesInfoGOOGLE = '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkPresentTimesInfoGOOGLE where
-        type FieldType "sType" VkPresentTimesInfoGOOGLE = VkStructureType
-        type FieldOptional "sType" VkPresentTimesInfoGOOGLE = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkPresentTimesInfoGOOGLE =
-             #{offset VkPresentTimesInfoGOOGLE, sType}
-        type FieldIsArray "sType" VkPresentTimesInfoGOOGLE = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentTimesInfoGOOGLE, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkPresentTimesInfoGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkPresentTimesInfoGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkPresentTimesInfoGOOGLE where
-        type FieldType "pNext" VkPresentTimesInfoGOOGLE = Ptr Void
-        type FieldOptional "pNext" VkPresentTimesInfoGOOGLE = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkPresentTimesInfoGOOGLE =
-             #{offset VkPresentTimesInfoGOOGLE, pNext}
-        type FieldIsArray "pNext" VkPresentTimesInfoGOOGLE = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPresentTimesInfoGOOGLE, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkPresentTimesInfoGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkPresentTimesInfoGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "swapchainCount" VkPresentTimesInfoGOOGLE where
-        type FieldType "swapchainCount" VkPresentTimesInfoGOOGLE = Word32
-        type FieldOptional "swapchainCount" VkPresentTimesInfoGOOGLE =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "swapchainCount" VkPresentTimesInfoGOOGLE =
-             #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
-        type FieldIsArray "swapchainCount" VkPresentTimesInfoGOOGLE =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "swapchainCount" VkPresentTimesInfoGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, swapchainCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "swapchainCount" VkPresentTimesInfoGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pTimes" VkPresentTimesInfoGOOGLE where
-        type FieldType "pTimes" VkPresentTimesInfoGOOGLE =
-             Ptr VkPresentTimeGOOGLE
-        type FieldOptional "pTimes" VkPresentTimesInfoGOOGLE = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "pTimes" VkPresentTimesInfoGOOGLE =
-             #{offset VkPresentTimesInfoGOOGLE, pTimes}
-        type FieldIsArray "pTimes" VkPresentTimesInfoGOOGLE = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkPresentTimesInfoGOOGLE, pTimes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pTimes" VkPresentTimesInfoGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPresentTimesInfoGOOGLE, pTimes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPresentTimesInfoGOOGLE, pTimes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pTimes" VkPresentTimesInfoGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPresentTimesInfoGOOGLE, pTimes}
-
-instance Show VkPresentTimesInfoGOOGLE where
-        showsPrec d x
-          = showString "VkPresentTimesInfoGOOGLE {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "swapchainCount = " .
-                            showsPrec d (getField @"swapchainCount" x) .
-                              showString ", " .
-                                showString "pTimes = " .
-                                  showsPrec d (getField @"pTimes" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Present
+       (VkPresentInfoKHR, VkPresentRegionKHR, VkPresentRegionsKHR,
+        VkPresentTimeGOOGLE, VkPresentTimesInfoGOOGLE)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.Enum.Result        (VkResult)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkSemaphore, VkSwapchainKHR)
+import Graphics.Vulkan.Types.Struct.Rect        (VkRectLayerKHR)
+
+-- | > typedef struct VkPresentInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*  pNext;
+--   >     uint32_t         waitSemaphoreCount;
+--   >     const VkSemaphore* pWaitSemaphores;
+--   >     uint32_t                         swapchainCount;
+--   >     const VkSwapchainKHR* pSwapchains;
+--   >     const uint32_t* pImageIndices;
+--   >     VkResult* pResults;
+--   > } VkPresentInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentInfoKHR VkPresentInfoKHR registry at www.khronos.org>
+type VkPresentInfoKHR = VkStruct VkPresentInfoKHR' -- ' closing tick for hsc2hs
+
+data VkPresentInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPresentInfoKHR where
+    type StructRep VkPresentInfoKHR =
+         'StructMeta "VkPresentInfoKHR" VkPresentInfoKHR  -- ' closing tick for hsc2hs
+                                                         #{size VkPresentInfoKHR}
+           #{alignment VkPresentInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPresentInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPresentInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "waitSemaphoreCount" Word32 'True 
+                                                           #{offset VkPresentInfoKHR, waitSemaphoreCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pWaitSemaphores" (Ptr VkSemaphore) 'False 
+                                                                    #{offset VkPresentInfoKHR, pWaitSemaphores}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "swapchainCount" Word32 'False 
+                                                        #{offset VkPresentInfoKHR, swapchainCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSwapchains" (Ptr VkSwapchainKHR) 'False 
+                                                                   #{offset VkPresentInfoKHR, pSwapchains}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pImageIndices" (Ptr Word32) 'False 
+                                                             #{offset VkPresentInfoKHR, pImageIndices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pResults" (Ptr VkResult) 'True 
+                                                         #{offset VkPresentInfoKHR, pResults}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPresentRegionKHR {
+--   >     uint32_t         rectangleCount;
+--   >     const VkRectLayerKHR*   pRectangles;
+--   > } VkPresentRegionKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentRegionKHR VkPresentRegionKHR registry at www.khronos.org>
+type VkPresentRegionKHR = VkStruct VkPresentRegionKHR' -- ' closing tick for hsc2hs
+
+data VkPresentRegionKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPresentRegionKHR where
+    type StructRep VkPresentRegionKHR =
+         'StructMeta "VkPresentRegionKHR" VkPresentRegionKHR  -- ' closing tick for hsc2hs
+                                                             #{size VkPresentRegionKHR}
+           #{alignment VkPresentRegionKHR}
+           '[('FieldMeta "rectangleCount" Word32 'True  -- ' closing tick for hsc2hs
+                                                       #{offset VkPresentRegionKHR, rectangleCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pRectangles" (Ptr VkRectLayerKHR) 'True 
+                                                                  #{offset VkPresentRegionKHR, pRectangles}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPresentRegionsKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         swapchainCount;
+--   >     const VkPresentRegionKHR*   pRegions;
+--   > } VkPresentRegionsKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentRegionsKHR VkPresentRegionsKHR registry at www.khronos.org>
+type VkPresentRegionsKHR = VkStruct VkPresentRegionsKHR' -- ' closing tick for hsc2hs
+
+data VkPresentRegionsKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPresentRegionsKHR where
+    type StructRep VkPresentRegionsKHR =
+         'StructMeta "VkPresentRegionsKHR" VkPresentRegionsKHR  -- ' closing tick for hsc2hs
+                                                               #{size VkPresentRegionsKHR}
+           #{alignment VkPresentRegionsKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPresentRegionsKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPresentRegionsKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "swapchainCount" Word32 'False 
+                                                        #{offset VkPresentRegionsKHR, swapchainCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pRegions" (Ptr VkPresentRegionKHR) 'True 
+                                                                   #{offset VkPresentRegionsKHR, pRegions}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPresentTimeGOOGLE {
+--   >     uint32_t                         presentID;
+--   >     uint64_t                         desiredPresentTime;
+--   > } VkPresentTimeGOOGLE;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentTimeGOOGLE VkPresentTimeGOOGLE registry at www.khronos.org>
+type VkPresentTimeGOOGLE = VkStruct VkPresentTimeGOOGLE' -- ' closing tick for hsc2hs
+
+data VkPresentTimeGOOGLE' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPresentTimeGOOGLE where
+    type StructRep VkPresentTimeGOOGLE =
+         'StructMeta "VkPresentTimeGOOGLE" VkPresentTimeGOOGLE  -- ' closing tick for hsc2hs
+                                                               #{size VkPresentTimeGOOGLE}
+           #{alignment VkPresentTimeGOOGLE}
+           '[('FieldMeta "presentID" Word32 'False  -- ' closing tick for hsc2hs
+                                                   #{offset VkPresentTimeGOOGLE, presentID}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "desiredPresentTime" Word64 'False 
+                                                            #{offset VkPresentTimeGOOGLE, desiredPresentTime}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkPresentTimesInfoGOOGLE {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t                         swapchainCount;
+--   >     const VkPresentTimeGOOGLE*   pTimes;
+--   > } VkPresentTimesInfoGOOGLE;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPresentTimesInfoGOOGLE VkPresentTimesInfoGOOGLE registry at www.khronos.org>
+type VkPresentTimesInfoGOOGLE = VkStruct VkPresentTimesInfoGOOGLE' -- ' closing tick for hsc2hs
+
+data VkPresentTimesInfoGOOGLE' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkPresentTimesInfoGOOGLE where
+    type StructRep VkPresentTimesInfoGOOGLE =
+         'StructMeta "VkPresentTimesInfoGOOGLE" VkPresentTimesInfoGOOGLE -- ' closing tick for hsc2hs
+           #{size VkPresentTimesInfoGOOGLE}
+           #{alignment VkPresentTimesInfoGOOGLE}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkPresentTimesInfoGOOGLE, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkPresentTimesInfoGOOGLE, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "swapchainCount" Word32 'False 
+                                                        #{offset VkPresentTimesInfoGOOGLE, swapchainCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pTimes" (Ptr VkPresentTimeGOOGLE) 'True 
+                                                                  #{offset VkPresentTimesInfoGOOGLE, pTimes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkPresentInfoKHR] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/ProtectedSubmitInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/ProtectedSubmitInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/ProtectedSubmitInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/ProtectedSubmitInfo.hsc
@@ -2,20 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.ProtectedSubmitInfo
-       (VkProtectedSubmitInfo, VkProtectedSubmitInfo') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkProtectedSubmitInfo) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.BaseTypes          (VkBool32)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Struct.SubmitInfo  (VkSubmitInfo)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkProtectedSubmitInfo {
 --   >     VkStructureType sType;
@@ -24,143 +20,30 @@
 --   > } VkProtectedSubmitInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkProtectedSubmitInfo VkProtectedSubmitInfo registry at www.khronos.org>
-type VkProtectedSubmitInfo = VulkanStruct VkProtectedSubmitInfo' -- ' closing tick for hsc2hs
+type VkProtectedSubmitInfo = VkStruct VkProtectedSubmitInfo' -- ' closing tick for hsc2hs
 
 data VkProtectedSubmitInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkProtectedSubmitInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkProtectedSubmitInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkProtectedSubmitInfo where
-        sizeOf ~_ = #{size VkProtectedSubmitInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkProtectedSubmitInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkProtectedSubmitInfo where
-        type StructFields VkProtectedSubmitInfo =
-             '["sType", "pNext", "protectedSubmit"] -- ' closing tick for hsc2hs
-        type CUnionType VkProtectedSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkProtectedSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkProtectedSubmitInfo = '[VkSubmitInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkProtectedSubmitInfo
-         where
-        type FieldType "sType" VkProtectedSubmitInfo = VkStructureType
-        type FieldOptional "sType" VkProtectedSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkProtectedSubmitInfo =
-             #{offset VkProtectedSubmitInfo, sType}
-        type FieldIsArray "sType" VkProtectedSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkProtectedSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkProtectedSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkProtectedSubmitInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkProtectedSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkProtectedSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkProtectedSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkProtectedSubmitInfo
-         where
-        type FieldType "pNext" VkProtectedSubmitInfo = Ptr Void
-        type FieldOptional "pNext" VkProtectedSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkProtectedSubmitInfo =
-             #{offset VkProtectedSubmitInfo, pNext}
-        type FieldIsArray "pNext" VkProtectedSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkProtectedSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkProtectedSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkProtectedSubmitInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkProtectedSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkProtectedSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkProtectedSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "protectedSubmit" VkProtectedSubmitInfo where
-        type FieldType "protectedSubmit" VkProtectedSubmitInfo = VkBool32
-        type FieldOptional "protectedSubmit" VkProtectedSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "protectedSubmit" VkProtectedSubmitInfo =
-             #{offset VkProtectedSubmitInfo, protectedSubmit}
-        type FieldIsArray "protectedSubmit" VkProtectedSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkProtectedSubmitInfo, protectedSubmit}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "protectedSubmit" VkProtectedSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkProtectedSubmitInfo, protectedSubmit})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkProtectedSubmitInfo, protectedSubmit}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "protectedSubmit" VkProtectedSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkProtectedSubmitInfo, protectedSubmit}
-
-instance Show VkProtectedSubmitInfo where
-        showsPrec d x
-          = showString "VkProtectedSubmitInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "protectedSubmit = " .
-                            showsPrec d (getField @"protectedSubmit" x) . showChar '}'
+    type StructRep VkProtectedSubmitInfo =
+         'StructMeta "VkProtectedSubmitInfo" VkProtectedSubmitInfo  -- ' closing tick for hsc2hs
+                                                                   #{size VkProtectedSubmitInfo}
+           #{alignment VkProtectedSubmitInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkProtectedSubmitInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkProtectedSubmitInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "protectedSubmit" VkBool32 'False 
+                                                           #{offset VkProtectedSubmitInfo, protectedSubmit}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSubmitInfo] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/PushConstantRange.hsc b/src-gen/Graphics/Vulkan/Types/Struct/PushConstantRange.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/PushConstantRange.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/PushConstantRange.hsc
@@ -2,18 +2,14 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.PushConstantRange
-       (VkPushConstantRange, VkPushConstantRange') where -- ' closing tick for hsc2hs
-import Foreign.Storable                  (Storable (..))
+       (VkPushConstantRange) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Shader (VkShaderStageFlags)
-import System.IO.Unsafe                  (unsafeDupablePerformIO)
 
 -- | > typedef struct VkPushConstantRange {
 --   >     VkShaderStageFlags     stageFlags;
@@ -22,143 +18,30 @@
 --   > } VkPushConstantRange;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkPushConstantRange VkPushConstantRange registry at www.khronos.org>
-type VkPushConstantRange = VulkanStruct VkPushConstantRange' -- ' closing tick for hsc2hs
+type VkPushConstantRange = VkStruct VkPushConstantRange' -- ' closing tick for hsc2hs
 
 data VkPushConstantRange' -- ' closing tick for hsc2hs
 
-instance Eq VkPushConstantRange where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkPushConstantRange where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkPushConstantRange where
-        sizeOf ~_ = #{size VkPushConstantRange}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkPushConstantRange}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkPushConstantRange where
-        type StructFields VkPushConstantRange =
-             '["stageFlags", "offset", "size"] -- ' closing tick for hsc2hs
-        type CUnionType VkPushConstantRange = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkPushConstantRange = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkPushConstantRange = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "stageFlags" VkPushConstantRange where
-        type FieldType "stageFlags" VkPushConstantRange =
-             VkShaderStageFlags
-        type FieldOptional "stageFlags" VkPushConstantRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "stageFlags" VkPushConstantRange =
-             #{offset VkPushConstantRange, stageFlags}
-        type FieldIsArray "stageFlags" VkPushConstantRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPushConstantRange, stageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stageFlags" VkPushConstantRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, stageFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPushConstantRange, stageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stageFlags" VkPushConstantRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPushConstantRange, stageFlags}
-
-instance {-# OVERLAPPING #-} HasField "offset" VkPushConstantRange
-         where
-        type FieldType "offset" VkPushConstantRange = Word32
-        type FieldOptional "offset" VkPushConstantRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkPushConstantRange =
-             #{offset VkPushConstantRange, offset}
-        type FieldIsArray "offset" VkPushConstantRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPushConstantRange, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkPushConstantRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPushConstantRange, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkPushConstantRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPushConstantRange, offset}
-
-instance {-# OVERLAPPING #-} HasField "size" VkPushConstantRange
-         where
-        type FieldType "size" VkPushConstantRange = Word32
-        type FieldOptional "size" VkPushConstantRange = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkPushConstantRange =
-             #{offset VkPushConstantRange, size}
-        type FieldIsArray "size" VkPushConstantRange = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkPushConstantRange, size}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "size" VkPushConstantRange where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkPushConstantRange, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkPushConstantRange, size}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "size" VkPushConstantRange where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkPushConstantRange, size}
-
-instance Show VkPushConstantRange where
-        showsPrec d x
-          = showString "VkPushConstantRange {" .
-              showString "stageFlags = " .
-                showsPrec d (getField @"stageFlags" x) .
-                  showString ", " .
-                    showString "offset = " .
-                      showsPrec d (getField @"offset" x) .
-                        showString ", " .
-                          showString "size = " .
-                            showsPrec d (getField @"size" x) . showChar '}'
+    type StructRep VkPushConstantRange =
+         'StructMeta "VkPushConstantRange" VkPushConstantRange  -- ' closing tick for hsc2hs
+                                                               #{size VkPushConstantRange}
+           #{alignment VkPushConstantRange}
+           '[('FieldMeta "stageFlags" VkShaderStageFlags 'False  -- ' closing tick for hsc2hs
+                                                                #{offset VkPushConstantRange, stageFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" Word32 'False 
+                                                #{offset VkPushConstantRange, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "size" Word32 'False 
+                                              #{offset VkPushConstantRange, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/QueryPoolCreateInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/QueryPoolCreateInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/QueryPoolCreateInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/QueryPoolCreateInfo.hsc
@@ -2,21 +2,17 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.QueryPoolCreateInfo
-       (VkQueryPoolCreateInfo, VkQueryPoolCreateInfo') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkQueryPoolCreateInfo) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkQueryPoolCreateFlags)
 import Graphics.Vulkan.Types.Enum.Query         (VkQueryPipelineStatisticFlags,
                                                  VkQueryType)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkQueryPoolCreateInfo {
 --   >     VkStructureType sType;
@@ -28,253 +24,46 @@
 --   > } VkQueryPoolCreateInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkQueryPoolCreateInfo VkQueryPoolCreateInfo registry at www.khronos.org>
-type VkQueryPoolCreateInfo = VulkanStruct VkQueryPoolCreateInfo' -- ' closing tick for hsc2hs
+type VkQueryPoolCreateInfo = VkStruct VkQueryPoolCreateInfo' -- ' closing tick for hsc2hs
 
 data VkQueryPoolCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkQueryPoolCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkQueryPoolCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkQueryPoolCreateInfo where
-        sizeOf ~_ = #{size VkQueryPoolCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkQueryPoolCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkQueryPoolCreateInfo where
-        type StructFields VkQueryPoolCreateInfo =
-             '["sType", "pNext", "flags", "queryType", "queryCount", -- ' closing tick for hsc2hs
-               "pipelineStatistics"]
-        type CUnionType VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkQueryPoolCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkQueryPoolCreateInfo
-         where
-        type FieldType "sType" VkQueryPoolCreateInfo = VkStructureType
-        type FieldOptional "sType" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkQueryPoolCreateInfo =
-             #{offset VkQueryPoolCreateInfo, sType}
-        type FieldIsArray "sType" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkQueryPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkQueryPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkQueryPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkQueryPoolCreateInfo
-         where
-        type FieldType "pNext" VkQueryPoolCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkQueryPoolCreateInfo =
-             #{offset VkQueryPoolCreateInfo, pNext}
-        type FieldIsArray "pNext" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkQueryPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkQueryPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkQueryPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkQueryPoolCreateInfo
-         where
-        type FieldType "flags" VkQueryPoolCreateInfo =
-             VkQueryPoolCreateFlags
-        type FieldOptional "flags" VkQueryPoolCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkQueryPoolCreateInfo =
-             #{offset VkQueryPoolCreateInfo, flags}
-        type FieldIsArray "flags" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkQueryPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkQueryPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkQueryPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "queryType" VkQueryPoolCreateInfo where
-        type FieldType "queryType" VkQueryPoolCreateInfo = VkQueryType
-        type FieldOptional "queryType" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "queryType" VkQueryPoolCreateInfo =
-             #{offset VkQueryPoolCreateInfo, queryType}
-        type FieldIsArray "queryType" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueryPoolCreateInfo, queryType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queryType" VkQueryPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, queryType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, queryType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queryType" VkQueryPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, queryType}
-
-instance {-# OVERLAPPING #-}
-         HasField "queryCount" VkQueryPoolCreateInfo where
-        type FieldType "queryCount" VkQueryPoolCreateInfo = Word32
-        type FieldOptional "queryCount" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "queryCount" VkQueryPoolCreateInfo =
-             #{offset VkQueryPoolCreateInfo, queryCount}
-        type FieldIsArray "queryCount" VkQueryPoolCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueryPoolCreateInfo, queryCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queryCount" VkQueryPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, queryCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, queryCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queryCount" VkQueryPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, queryCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineStatistics" VkQueryPoolCreateInfo where
-        type FieldType "pipelineStatistics" VkQueryPoolCreateInfo =
-             VkQueryPipelineStatisticFlags
-        type FieldOptional "pipelineStatistics" VkQueryPoolCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineStatistics" VkQueryPoolCreateInfo =
-             #{offset VkQueryPoolCreateInfo, pipelineStatistics}
-        type FieldIsArray "pipelineStatistics" VkQueryPoolCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueryPoolCreateInfo, pipelineStatistics}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineStatistics" VkQueryPoolCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueryPoolCreateInfo, pipelineStatistics})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueryPoolCreateInfo, pipelineStatistics}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineStatistics" VkQueryPoolCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueryPoolCreateInfo, pipelineStatistics}
-
-instance Show VkQueryPoolCreateInfo where
-        showsPrec d x
-          = showString "VkQueryPoolCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "queryType = " .
-                                  showsPrec d (getField @"queryType" x) .
-                                    showString ", " .
-                                      showString "queryCount = " .
-                                        showsPrec d (getField @"queryCount" x) .
-                                          showString ", " .
-                                            showString "pipelineStatistics = " .
-                                              showsPrec d (getField @"pipelineStatistics" x) .
-                                                showChar '}'
+    type StructRep VkQueryPoolCreateInfo =
+         'StructMeta "VkQueryPoolCreateInfo" VkQueryPoolCreateInfo  -- ' closing tick for hsc2hs
+                                                                   #{size VkQueryPoolCreateInfo}
+           #{alignment VkQueryPoolCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkQueryPoolCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkQueryPoolCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkQueryPoolCreateFlags 'True 
+                                                              #{offset VkQueryPoolCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queryType" VkQueryType 'False 
+                                                        #{offset VkQueryPoolCreateInfo, queryType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queryCount" Word32 'False 
+                                                    #{offset VkQueryPoolCreateInfo, queryCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineStatistics" VkQueryPipelineStatisticFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkQueryPoolCreateInfo, pipelineStatistics}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/QueueFamilyProperties.hsc b/src-gen/Graphics/Vulkan/Types/Struct/QueueFamilyProperties.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/QueueFamilyProperties.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/QueueFamilyProperties.hsc
@@ -2,23 +2,18 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.QueueFamilyProperties
-       (VkQueueFamilyProperties, VkQueueFamilyProperties', -- ' closing tick for hsc2hs
-        VkQueueFamilyProperties2, VkQueueFamilyProperties2', -- ' closing tick for hsc2hs
+       (VkQueueFamilyProperties, VkQueueFamilyProperties2,
         VkQueueFamilyProperties2KHR)
        where
-import Foreign.Storable                         (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Queue         (VkQueueFlags)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Struct.Extent      (VkExtent3D)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkQueueFamilyProperties {
 --   >     VkQueueFlags           queueFlags;
@@ -28,200 +23,38 @@
 --   > } VkQueueFamilyProperties;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkQueueFamilyProperties VkQueueFamilyProperties registry at www.khronos.org>
-type VkQueueFamilyProperties =
-     VulkanStruct VkQueueFamilyProperties' -- ' closing tick for hsc2hs
+type VkQueueFamilyProperties = VkStruct VkQueueFamilyProperties' -- ' closing tick for hsc2hs
 
 data VkQueueFamilyProperties' -- ' closing tick for hsc2hs
 
-instance Eq VkQueueFamilyProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkQueueFamilyProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkQueueFamilyProperties where
-        sizeOf ~_ = #{size VkQueueFamilyProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkQueueFamilyProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkQueueFamilyProperties where
-        type StructFields VkQueueFamilyProperties =
-             '["queueFlags", "queueCount", "timestampValidBits", -- ' closing tick for hsc2hs
-               "minImageTransferGranularity"]
-        type CUnionType VkQueueFamilyProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkQueueFamilyProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkQueueFamilyProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFlags" VkQueueFamilyProperties where
-        type FieldType "queueFlags" VkQueueFamilyProperties = VkQueueFlags
-        type FieldOptional "queueFlags" VkQueueFamilyProperties = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "queueFlags" VkQueueFamilyProperties =
-             #{offset VkQueueFamilyProperties, queueFlags}
-        type FieldIsArray "queueFlags" VkQueueFamilyProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueueFamilyProperties, queueFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueFlags" VkQueueFamilyProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, queueFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueueFamilyProperties, queueFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueFlags" VkQueueFamilyProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueueFamilyProperties, queueFlags}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueCount" VkQueueFamilyProperties where
-        type FieldType "queueCount" VkQueueFamilyProperties = Word32
-        type FieldOptional "queueCount" VkQueueFamilyProperties = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueCount" VkQueueFamilyProperties =
-             #{offset VkQueueFamilyProperties, queueCount}
-        type FieldIsArray "queueCount" VkQueueFamilyProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueueFamilyProperties, queueCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueCount" VkQueueFamilyProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, queueCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueueFamilyProperties, queueCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueCount" VkQueueFamilyProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueueFamilyProperties, queueCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "timestampValidBits" VkQueueFamilyProperties where
-        type FieldType "timestampValidBits" VkQueueFamilyProperties =
-             Word32
-        type FieldOptional "timestampValidBits" VkQueueFamilyProperties =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "timestampValidBits" VkQueueFamilyProperties =
-             #{offset VkQueueFamilyProperties, timestampValidBits}
-        type FieldIsArray "timestampValidBits" VkQueueFamilyProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueueFamilyProperties, timestampValidBits}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "timestampValidBits" VkQueueFamilyProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, timestampValidBits})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueueFamilyProperties, timestampValidBits}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "timestampValidBits" VkQueueFamilyProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueueFamilyProperties, timestampValidBits}
-
-instance {-# OVERLAPPING #-}
-         HasField "minImageTransferGranularity" VkQueueFamilyProperties
-         where
-        type FieldType "minImageTransferGranularity"
-               VkQueueFamilyProperties
-             = VkExtent3D
-        type FieldOptional "minImageTransferGranularity"
-               VkQueueFamilyProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minImageTransferGranularity"
-               VkQueueFamilyProperties
-             =
-             #{offset VkQueueFamilyProperties, minImageTransferGranularity}
-        type FieldIsArray "minImageTransferGranularity"
-               VkQueueFamilyProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueueFamilyProperties, minImageTransferGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minImageTransferGranularity" VkQueueFamilyProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties, minImageTransferGranularity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueueFamilyProperties, minImageTransferGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minImageTransferGranularity" VkQueueFamilyProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueueFamilyProperties, minImageTransferGranularity}
-
-instance Show VkQueueFamilyProperties where
-        showsPrec d x
-          = showString "VkQueueFamilyProperties {" .
-              showString "queueFlags = " .
-                showsPrec d (getField @"queueFlags" x) .
-                  showString ", " .
-                    showString "queueCount = " .
-                      showsPrec d (getField @"queueCount" x) .
-                        showString ", " .
-                          showString "timestampValidBits = " .
-                            showsPrec d (getField @"timestampValidBits" x) .
-                              showString ", " .
-                                showString "minImageTransferGranularity = " .
-                                  showsPrec d (getField @"minImageTransferGranularity" x) .
-                                    showChar '}'
+    type StructRep VkQueueFamilyProperties =
+         'StructMeta "VkQueueFamilyProperties" VkQueueFamilyProperties -- ' closing tick for hsc2hs
+           #{size VkQueueFamilyProperties}
+           #{alignment VkQueueFamilyProperties}
+           '[('FieldMeta "queueFlags" VkQueueFlags 'True  -- ' closing tick for hsc2hs
+                                                         #{offset VkQueueFamilyProperties, queueFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueCount" Word32 'False 
+                                                    #{offset VkQueueFamilyProperties, queueCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "timestampValidBits" Word32 'False 
+                                                            #{offset VkQueueFamilyProperties, timestampValidBits}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minImageTransferGranularity" VkExtent3D 'False
+                #{offset VkQueueFamilyProperties, minImageTransferGranularity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkQueueFamilyProperties2 {
 --   >     VkStructureType sType;
@@ -230,151 +63,33 @@
 --   > } VkQueueFamilyProperties2;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkQueueFamilyProperties2 VkQueueFamilyProperties2 registry at www.khronos.org>
-type VkQueueFamilyProperties2 =
-     VulkanStruct VkQueueFamilyProperties2' -- ' closing tick for hsc2hs
+type VkQueueFamilyProperties2 = VkStruct VkQueueFamilyProperties2' -- ' closing tick for hsc2hs
 
 data VkQueueFamilyProperties2' -- ' closing tick for hsc2hs
 
-instance Eq VkQueueFamilyProperties2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkQueueFamilyProperties2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkQueueFamilyProperties2 where
-        sizeOf ~_ = #{size VkQueueFamilyProperties2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkQueueFamilyProperties2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkQueueFamilyProperties2 where
-        type StructFields VkQueueFamilyProperties2 =
-             '["sType", "pNext", "queueFamilyProperties"] -- ' closing tick for hsc2hs
-        type CUnionType VkQueueFamilyProperties2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkQueueFamilyProperties2 = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkQueueFamilyProperties2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkQueueFamilyProperties2 where
-        type FieldType "sType" VkQueueFamilyProperties2 = VkStructureType
-        type FieldOptional "sType" VkQueueFamilyProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkQueueFamilyProperties2 =
-             #{offset VkQueueFamilyProperties2, sType}
-        type FieldIsArray "sType" VkQueueFamilyProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkQueueFamilyProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkQueueFamilyProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueueFamilyProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkQueueFamilyProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueueFamilyProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkQueueFamilyProperties2 where
-        type FieldType "pNext" VkQueueFamilyProperties2 = Ptr Void
-        type FieldOptional "pNext" VkQueueFamilyProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkQueueFamilyProperties2 =
-             #{offset VkQueueFamilyProperties2, pNext}
-        type FieldIsArray "pNext" VkQueueFamilyProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkQueueFamilyProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkQueueFamilyProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueueFamilyProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkQueueFamilyProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueueFamilyProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFamilyProperties" VkQueueFamilyProperties2 where
-        type FieldType "queueFamilyProperties" VkQueueFamilyProperties2 =
-             VkQueueFamilyProperties
-        type FieldOptional "queueFamilyProperties" VkQueueFamilyProperties2
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "queueFamilyProperties" VkQueueFamilyProperties2 =
-             #{offset VkQueueFamilyProperties2, queueFamilyProperties}
-        type FieldIsArray "queueFamilyProperties" VkQueueFamilyProperties2
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkQueueFamilyProperties2, queueFamilyProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueFamilyProperties" VkQueueFamilyProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkQueueFamilyProperties2, queueFamilyProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkQueueFamilyProperties2, queueFamilyProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueFamilyProperties" VkQueueFamilyProperties2
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkQueueFamilyProperties2, queueFamilyProperties}
-
-instance Show VkQueueFamilyProperties2 where
-        showsPrec d x
-          = showString "VkQueueFamilyProperties2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "queueFamilyProperties = " .
-                            showsPrec d (getField @"queueFamilyProperties" x) . showChar '}'
+    type StructRep VkQueueFamilyProperties2 =
+         'StructMeta "VkQueueFamilyProperties2" VkQueueFamilyProperties2 -- ' closing tick for hsc2hs
+           #{size VkQueueFamilyProperties2}
+           #{alignment VkQueueFamilyProperties2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkQueueFamilyProperties2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkQueueFamilyProperties2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueFamilyProperties" VkQueueFamilyProperties 'False
+                #{offset VkQueueFamilyProperties2, queueFamilyProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkQueueFamilyProperties2`
 type VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Rect.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Rect.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Rect.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Rect.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Rect
-       (VkRect2D, VkRect2D', VkRectLayerKHR, VkRectLayerKHR') where
-import Foreign.Storable                    (Storable (..))
+module Graphics.Vulkan.Types.Struct.Rect (VkRect2D, VkRectLayerKHR)
+       where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Struct.Extent (VkExtent2D)
 import Graphics.Vulkan.Types.Struct.Offset (VkOffset2D)
-import System.IO.Unsafe                    (unsafeDupablePerformIO)
 
 -- | > typedef struct VkRect2D {
 --   >     VkOffset2D     offset;
@@ -22,100 +18,28 @@
 --   > } VkRect2D;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRect2D VkRect2D registry at www.khronos.org>
-type VkRect2D = VulkanStruct VkRect2D' -- ' closing tick for hsc2hs
+type VkRect2D = VkStruct VkRect2D' -- ' closing tick for hsc2hs
 
 data VkRect2D' -- ' closing tick for hsc2hs
 
-instance Eq VkRect2D where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRect2D where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkRect2D where
-        sizeOf ~_ = #{size VkRect2D}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkRect2D}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkRect2D where
-        type StructFields VkRect2D = '["offset", "extent"] -- ' closing tick for hsc2hs
-        type CUnionType VkRect2D = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRect2D = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkRect2D = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "offset" VkRect2D where
-        type FieldType "offset" VkRect2D = VkOffset2D
-        type FieldOptional "offset" VkRect2D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkRect2D =
-             #{offset VkRect2D, offset}
-        type FieldIsArray "offset" VkRect2D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRect2D, offset}
-
-instance {-# OVERLAPPING #-} CanReadField "offset" VkRect2D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRect2D, offset})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkRect2D, offset}
-
-instance {-# OVERLAPPING #-} CanWriteField "offset" VkRect2D where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkRect2D, offset}
-
-instance {-# OVERLAPPING #-} HasField "extent" VkRect2D where
-        type FieldType "extent" VkRect2D = VkExtent2D
-        type FieldOptional "extent" VkRect2D = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extent" VkRect2D =
-             #{offset VkRect2D, extent}
-        type FieldIsArray "extent" VkRect2D = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRect2D, extent}
-
-instance {-# OVERLAPPING #-} CanReadField "extent" VkRect2D where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRect2D, extent})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkRect2D, extent}
-
-instance {-# OVERLAPPING #-} CanWriteField "extent" VkRect2D where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkRect2D, extent}
-
-instance Show VkRect2D where
-        showsPrec d x
-          = showString "VkRect2D {" .
-              showString "offset = " .
-                showsPrec d (getField @"offset" x) .
-                  showString ", " .
-                    showString "extent = " .
-                      showsPrec d (getField @"extent" x) . showChar '}'
+    type StructRep VkRect2D =
+         'StructMeta "VkRect2D" VkRect2D  -- ' closing tick for hsc2hs
+                                         #{size VkRect2D}
+           #{alignment VkRect2D}
+           '[('FieldMeta "offset" VkOffset2D 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkRect2D, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "extent" VkExtent2D 'False 
+                                                    #{offset VkRect2D, extent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkRectLayerKHR {
 --   >     VkOffset2D                       offset;
@@ -124,138 +48,30 @@
 --   > } VkRectLayerKHR;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRectLayerKHR VkRectLayerKHR registry at www.khronos.org>
-type VkRectLayerKHR = VulkanStruct VkRectLayerKHR' -- ' closing tick for hsc2hs
+type VkRectLayerKHR = VkStruct VkRectLayerKHR' -- ' closing tick for hsc2hs
 
 data VkRectLayerKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkRectLayerKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRectLayerKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkRectLayerKHR where
-        sizeOf ~_ = #{size VkRectLayerKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkRectLayerKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkRectLayerKHR where
-        type StructFields VkRectLayerKHR = '["offset", "extent", "layer"] -- ' closing tick for hsc2hs
-        type CUnionType VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkRectLayerKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "offset" VkRectLayerKHR where
-        type FieldType "offset" VkRectLayerKHR = VkOffset2D
-        type FieldOptional "offset" VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkRectLayerKHR =
-             #{offset VkRectLayerKHR, offset}
-        type FieldIsArray "offset" VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRectLayerKHR, offset}
-
-instance {-# OVERLAPPING #-} CanReadField "offset" VkRectLayerKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRectLayerKHR, offset}
-
-instance {-# OVERLAPPING #-} CanWriteField "offset" VkRectLayerKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRectLayerKHR, offset}
-
-instance {-# OVERLAPPING #-} HasField "extent" VkRectLayerKHR where
-        type FieldType "extent" VkRectLayerKHR = VkExtent2D
-        type FieldOptional "extent" VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extent" VkRectLayerKHR =
-             #{offset VkRectLayerKHR, extent}
-        type FieldIsArray "extent" VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRectLayerKHR, extent}
-
-instance {-# OVERLAPPING #-} CanReadField "extent" VkRectLayerKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, extent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRectLayerKHR, extent}
-
-instance {-# OVERLAPPING #-} CanWriteField "extent" VkRectLayerKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRectLayerKHR, extent}
-
-instance {-# OVERLAPPING #-} HasField "layer" VkRectLayerKHR where
-        type FieldType "layer" VkRectLayerKHR = Word32
-        type FieldOptional "layer" VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "layer" VkRectLayerKHR =
-             #{offset VkRectLayerKHR, layer}
-        type FieldIsArray "layer" VkRectLayerKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRectLayerKHR, layer}
-
-instance {-# OVERLAPPING #-} CanReadField "layer" VkRectLayerKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRectLayerKHR, layer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRectLayerKHR, layer}
-
-instance {-# OVERLAPPING #-} CanWriteField "layer" VkRectLayerKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRectLayerKHR, layer}
-
-instance Show VkRectLayerKHR where
-        showsPrec d x
-          = showString "VkRectLayerKHR {" .
-              showString "offset = " .
-                showsPrec d (getField @"offset" x) .
-                  showString ", " .
-                    showString "extent = " .
-                      showsPrec d (getField @"extent" x) .
-                        showString ", " .
-                          showString "layer = " .
-                            showsPrec d (getField @"layer" x) . showChar '}'
+    type StructRep VkRectLayerKHR =
+         'StructMeta "VkRectLayerKHR" VkRectLayerKHR  -- ' closing tick for hsc2hs
+                                                     #{size VkRectLayerKHR}
+           #{alignment VkRectLayerKHR}
+           '[('FieldMeta "offset" VkOffset2D 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkRectLayerKHR, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "extent" VkExtent2D 'False 
+                                                    #{offset VkRectLayerKHR, extent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "layer" Word32 'False 
+                                               #{offset VkRectLayerKHR, layer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/RefreshCycleDurationGOOGLE.hsc b/src-gen/Graphics/Vulkan/Types/Struct/RefreshCycleDurationGOOGLE.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/RefreshCycleDurationGOOGLE.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/RefreshCycleDurationGOOGLE.hsc
@@ -2,17 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.RefreshCycleDurationGOOGLE
-       (VkRefreshCycleDurationGOOGLE, VkRefreshCycleDurationGOOGLE') where -- ' closing tick for hsc2hs
-import Foreign.Storable                 (Storable (..))
+       (VkRefreshCycleDurationGOOGLE) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkRefreshCycleDurationGOOGLE {
 --   >     uint64_t                         refreshDuration;
@@ -20,79 +16,21 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRefreshCycleDurationGOOGLE VkRefreshCycleDurationGOOGLE registry at www.khronos.org>
 type VkRefreshCycleDurationGOOGLE =
-     VulkanStruct VkRefreshCycleDurationGOOGLE' -- ' closing tick for hsc2hs
+     VkStruct VkRefreshCycleDurationGOOGLE' -- ' closing tick for hsc2hs
 
 data VkRefreshCycleDurationGOOGLE' -- ' closing tick for hsc2hs
 
-instance Eq VkRefreshCycleDurationGOOGLE where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRefreshCycleDurationGOOGLE where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkRefreshCycleDurationGOOGLE where
-        sizeOf ~_ = #{size VkRefreshCycleDurationGOOGLE}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkRefreshCycleDurationGOOGLE}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkRefreshCycleDurationGOOGLE where
-        type StructFields VkRefreshCycleDurationGOOGLE =
-             '["refreshDuration"] -- ' closing tick for hsc2hs
-        type CUnionType VkRefreshCycleDurationGOOGLE = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRefreshCycleDurationGOOGLE = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkRefreshCycleDurationGOOGLE = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "refreshDuration" VkRefreshCycleDurationGOOGLE where
-        type FieldType "refreshDuration" VkRefreshCycleDurationGOOGLE =
-             Word64
-        type FieldOptional "refreshDuration" VkRefreshCycleDurationGOOGLE =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "refreshDuration" VkRefreshCycleDurationGOOGLE =
-             #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
-        type FieldIsArray "refreshDuration" VkRefreshCycleDurationGOOGLE =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "refreshDuration" VkRefreshCycleDurationGOOGLE where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRefreshCycleDurationGOOGLE, refreshDuration})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "refreshDuration" VkRefreshCycleDurationGOOGLE where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
-
-instance Show VkRefreshCycleDurationGOOGLE where
-        showsPrec d x
-          = showString "VkRefreshCycleDurationGOOGLE {" .
-              showString "refreshDuration = " .
-                showsPrec d (getField @"refreshDuration" x) . showChar '}'
+    type StructRep VkRefreshCycleDurationGOOGLE =
+         'StructMeta "VkRefreshCycleDurationGOOGLE" -- ' closing tick for hsc2hs
+           VkRefreshCycleDurationGOOGLE
+           #{size VkRefreshCycleDurationGOOGLE}
+           #{alignment VkRefreshCycleDurationGOOGLE}
+           '[('FieldMeta "refreshDuration" Word64 'False  -- ' closing tick for hsc2hs
+                                                         #{offset VkRefreshCycleDurationGOOGLE, refreshDuration}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/RenderPass.hsc b/src-gen/Graphics/Vulkan/Types/Struct/RenderPass.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/RenderPass.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/RenderPass.hsc
@@ -2,1655 +2,339 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.RenderPass
-       (VkRenderPassBeginInfo, VkRenderPassBeginInfo', -- ' closing tick for hsc2hs
-        VkRenderPassCreateInfo, VkRenderPassCreateInfo', -- ' closing tick for hsc2hs
-        VkRenderPassInputAttachmentAspectCreateInfo,
-        VkRenderPassInputAttachmentAspectCreateInfo', -- ' closing tick for hsc2hs
-        VkRenderPassInputAttachmentAspectCreateInfoKHR,
-        VkRenderPassMultiviewCreateInfo, VkRenderPassMultiviewCreateInfo', -- ' closing tick for hsc2hs
-        VkRenderPassMultiviewCreateInfoKHR,
-        VkRenderPassSampleLocationsBeginInfoEXT,
-        VkRenderPassSampleLocationsBeginInfoEXT') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                            (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.Bitmasks                              (VkRenderPassCreateFlags)
-import Graphics.Vulkan.Types.Enum.StructureType                    (VkStructureType)
-import Graphics.Vulkan.Types.Handles                               (VkFramebuffer,
-                                                                    VkRenderPass)
-import Graphics.Vulkan.Types.Struct.Attachment                     (VkAttachmentDescription,
-                                                                    VkAttachmentSampleLocationsEXT)
-import Graphics.Vulkan.Types.Struct.Clear                          (VkClearValue)
-import Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference (VkInputAttachmentAspectReference)
-import Graphics.Vulkan.Types.Struct.Rect                           (VkRect2D)
-import Graphics.Vulkan.Types.Struct.Subpass                        (VkSubpassDependency,
-                                                                    VkSubpassDescription,
-                                                                    VkSubpassSampleLocationsEXT)
-import System.IO.Unsafe                                            (unsafeDupablePerformIO)
-
--- | > typedef struct VkRenderPassBeginInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkRenderPass           renderPass;
---   >     VkFramebuffer          framebuffer;
---   >     VkRect2D               renderArea;
---   >     uint32_t               clearValueCount;
---   >     const VkClearValue*    pClearValues;
---   > } VkRenderPassBeginInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassBeginInfo VkRenderPassBeginInfo registry at www.khronos.org>
-type VkRenderPassBeginInfo = VulkanStruct VkRenderPassBeginInfo' -- ' closing tick for hsc2hs
-
-data VkRenderPassBeginInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkRenderPassBeginInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRenderPassBeginInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkRenderPassBeginInfo where
-        sizeOf ~_ = #{size VkRenderPassBeginInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkRenderPassBeginInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkRenderPassBeginInfo where
-        type StructFields VkRenderPassBeginInfo =
-             '["sType", "pNext", "renderPass", "framebuffer", "renderArea", -- ' closing tick for hsc2hs
-               "clearValueCount", "pClearValues"]
-        type CUnionType VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkRenderPassBeginInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkRenderPassBeginInfo
-         where
-        type FieldType "sType" VkRenderPassBeginInfo = VkStructureType
-        type FieldOptional "sType" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkRenderPassBeginInfo =
-             #{offset VkRenderPassBeginInfo, sType}
-        type FieldIsArray "sType" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRenderPassBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkRenderPassBeginInfo
-         where
-        type FieldType "pNext" VkRenderPassBeginInfo = Ptr Void
-        type FieldOptional "pNext" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkRenderPassBeginInfo =
-             #{offset VkRenderPassBeginInfo, pNext}
-        type FieldIsArray "pNext" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRenderPassBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "renderPass" VkRenderPassBeginInfo where
-        type FieldType "renderPass" VkRenderPassBeginInfo = VkRenderPass
-        type FieldOptional "renderPass" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "renderPass" VkRenderPassBeginInfo =
-             #{offset VkRenderPassBeginInfo, renderPass}
-        type FieldIsArray "renderPass" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassBeginInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "renderPass" VkRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, renderPass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "renderPass" VkRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, renderPass}
-
-instance {-# OVERLAPPING #-}
-         HasField "framebuffer" VkRenderPassBeginInfo where
-        type FieldType "framebuffer" VkRenderPassBeginInfo = VkFramebuffer
-        type FieldOptional "framebuffer" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "framebuffer" VkRenderPassBeginInfo =
-             #{offset VkRenderPassBeginInfo, framebuffer}
-        type FieldIsArray "framebuffer" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassBeginInfo, framebuffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "framebuffer" VkRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, framebuffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, framebuffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "framebuffer" VkRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, framebuffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "renderArea" VkRenderPassBeginInfo where
-        type FieldType "renderArea" VkRenderPassBeginInfo = VkRect2D
-        type FieldOptional "renderArea" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "renderArea" VkRenderPassBeginInfo =
-             #{offset VkRenderPassBeginInfo, renderArea}
-        type FieldIsArray "renderArea" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassBeginInfo, renderArea}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "renderArea" VkRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, renderArea})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, renderArea}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "renderArea" VkRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, renderArea}
-
-instance {-# OVERLAPPING #-}
-         HasField "clearValueCount" VkRenderPassBeginInfo where
-        type FieldType "clearValueCount" VkRenderPassBeginInfo = Word32
-        type FieldOptional "clearValueCount" VkRenderPassBeginInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "clearValueCount" VkRenderPassBeginInfo =
-             #{offset VkRenderPassBeginInfo, clearValueCount}
-        type FieldIsArray "clearValueCount" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassBeginInfo, clearValueCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "clearValueCount" VkRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, clearValueCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, clearValueCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "clearValueCount" VkRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, clearValueCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pClearValues" VkRenderPassBeginInfo where
-        type FieldType "pClearValues" VkRenderPassBeginInfo =
-             Ptr VkClearValue
-        type FieldOptional "pClearValues" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pClearValues" VkRenderPassBeginInfo =
-             #{offset VkRenderPassBeginInfo, pClearValues}
-        type FieldIsArray "pClearValues" VkRenderPassBeginInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassBeginInfo, pClearValues}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pClearValues" VkRenderPassBeginInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassBeginInfo, pClearValues})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassBeginInfo, pClearValues}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pClearValues" VkRenderPassBeginInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassBeginInfo, pClearValues}
-
-instance Show VkRenderPassBeginInfo where
-        showsPrec d x
-          = showString "VkRenderPassBeginInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "renderPass = " .
-                            showsPrec d (getField @"renderPass" x) .
-                              showString ", " .
-                                showString "framebuffer = " .
-                                  showsPrec d (getField @"framebuffer" x) .
-                                    showString ", " .
-                                      showString "renderArea = " .
-                                        showsPrec d (getField @"renderArea" x) .
-                                          showString ", " .
-                                            showString "clearValueCount = " .
-                                              showsPrec d (getField @"clearValueCount" x) .
-                                                showString ", " .
-                                                  showString "pClearValues = " .
-                                                    showsPrec d (getField @"pClearValues" x) .
-                                                      showChar '}'
-
--- | > typedef struct VkRenderPassCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkRenderPassCreateFlags    flags;
---   >     uint32_t   attachmentCount;
---   >     const VkAttachmentDescription* pAttachments;
---   >     uint32_t               subpassCount;
---   >     const VkSubpassDescription* pSubpasses;
---   >     uint32_t       dependencyCount;
---   >     const VkSubpassDependency* pDependencies;
---   > } VkRenderPassCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassCreateInfo VkRenderPassCreateInfo registry at www.khronos.org>
-type VkRenderPassCreateInfo = VulkanStruct VkRenderPassCreateInfo' -- ' closing tick for hsc2hs
-
-data VkRenderPassCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkRenderPassCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRenderPassCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkRenderPassCreateInfo where
-        sizeOf ~_ = #{size VkRenderPassCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkRenderPassCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkRenderPassCreateInfo where
-        type StructFields VkRenderPassCreateInfo =
-             '["sType", "pNext", "flags", "attachmentCount", "pAttachments", -- ' closing tick for hsc2hs
-               "subpassCount", "pSubpasses", "dependencyCount", "pDependencies"]
-        type CUnionType VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkRenderPassCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkRenderPassCreateInfo where
-        type FieldType "sType" VkRenderPassCreateInfo = VkStructureType
-        type FieldOptional "sType" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, sType}
-        type FieldIsArray "sType" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRenderPassCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkRenderPassCreateInfo where
-        type FieldType "pNext" VkRenderPassCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, pNext}
-        type FieldIsArray "pNext" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRenderPassCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkRenderPassCreateInfo where
-        type FieldType "flags" VkRenderPassCreateInfo =
-             VkRenderPassCreateFlags
-        type FieldOptional "flags" VkRenderPassCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, flags}
-        type FieldIsArray "flags" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkRenderPassCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "attachmentCount" VkRenderPassCreateInfo where
-        type FieldType "attachmentCount" VkRenderPassCreateInfo = Word32
-        type FieldOptional "attachmentCount" VkRenderPassCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "attachmentCount" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, attachmentCount}
-        type FieldIsArray "attachmentCount" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "attachmentCount" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, attachmentCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "attachmentCount" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, attachmentCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAttachments" VkRenderPassCreateInfo where
-        type FieldType "pAttachments" VkRenderPassCreateInfo =
-             Ptr VkAttachmentDescription
-        type FieldOptional "pAttachments" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAttachments" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, pAttachments}
-        type FieldIsArray "pAttachments" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAttachments" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAttachments" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, pAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "subpassCount" VkRenderPassCreateInfo where
-        type FieldType "subpassCount" VkRenderPassCreateInfo = Word32
-        type FieldOptional "subpassCount" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "subpassCount" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, subpassCount}
-        type FieldIsArray "subpassCount" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassCreateInfo, subpassCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subpassCount" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, subpassCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, subpassCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subpassCount" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, subpassCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSubpasses" VkRenderPassCreateInfo where
-        type FieldType "pSubpasses" VkRenderPassCreateInfo =
-             Ptr VkSubpassDescription
-        type FieldOptional "pSubpasses" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSubpasses" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, pSubpasses}
-        type FieldIsArray "pSubpasses" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassCreateInfo, pSubpasses}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSubpasses" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pSubpasses})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, pSubpasses}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSubpasses" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, pSubpasses}
-
-instance {-# OVERLAPPING #-}
-         HasField "dependencyCount" VkRenderPassCreateInfo where
-        type FieldType "dependencyCount" VkRenderPassCreateInfo = Word32
-        type FieldOptional "dependencyCount" VkRenderPassCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dependencyCount" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, dependencyCount}
-        type FieldIsArray "dependencyCount" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassCreateInfo, dependencyCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dependencyCount" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, dependencyCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, dependencyCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dependencyCount" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, dependencyCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDependencies" VkRenderPassCreateInfo where
-        type FieldType "pDependencies" VkRenderPassCreateInfo =
-             Ptr VkSubpassDependency
-        type FieldOptional "pDependencies" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDependencies" VkRenderPassCreateInfo =
-             #{offset VkRenderPassCreateInfo, pDependencies}
-        type FieldIsArray "pDependencies" VkRenderPassCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassCreateInfo, pDependencies}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDependencies" VkRenderPassCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassCreateInfo, pDependencies})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassCreateInfo, pDependencies}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDependencies" VkRenderPassCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassCreateInfo, pDependencies}
-
-instance Show VkRenderPassCreateInfo where
-        showsPrec d x
-          = showString "VkRenderPassCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "attachmentCount = " .
-                                  showsPrec d (getField @"attachmentCount" x) .
-                                    showString ", " .
-                                      showString "pAttachments = " .
-                                        showsPrec d (getField @"pAttachments" x) .
-                                          showString ", " .
-                                            showString "subpassCount = " .
-                                              showsPrec d (getField @"subpassCount" x) .
-                                                showString ", " .
-                                                  showString "pSubpasses = " .
-                                                    showsPrec d (getField @"pSubpasses" x) .
-                                                      showString ", " .
-                                                        showString "dependencyCount = " .
-                                                          showsPrec d
-                                                            (getField @"dependencyCount" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "pDependencies = " .
-                                                                showsPrec d
-                                                                  (getField @"pDependencies" x)
-                                                                  . showChar '}'
-
--- | > typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
---   >     VkStructureType sType;
---   >     const void*                     pNext;
---   >     uint32_t                        aspectReferenceCount;
---   >     const VkInputAttachmentAspectReference* pAspectReferences;
---   > } VkRenderPassInputAttachmentAspectCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfo registry at www.khronos.org>
-type VkRenderPassInputAttachmentAspectCreateInfo =
-     VulkanStruct VkRenderPassInputAttachmentAspectCreateInfo' -- ' closing tick for hsc2hs
-
-data VkRenderPassInputAttachmentAspectCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkRenderPassInputAttachmentAspectCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRenderPassInputAttachmentAspectCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkRenderPassInputAttachmentAspectCreateInfo where
-        sizeOf ~_
-          = #{size VkRenderPassInputAttachmentAspectCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkRenderPassInputAttachmentAspectCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        type StructFields VkRenderPassInputAttachmentAspectCreateInfo =
-             '["sType", "pNext", "aspectReferenceCount", "pAspectReferences"] -- ' closing tick for hsc2hs
-        type CUnionType VkRenderPassInputAttachmentAspectCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRenderPassInputAttachmentAspectCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkRenderPassInputAttachmentAspectCreateInfo =
-             '[VkRenderPassCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkRenderPassInputAttachmentAspectCreateInfo where
-        type FieldType "sType" VkRenderPassInputAttachmentAspectCreateInfo
-             = VkStructureType
-        type FieldOptional "sType"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             =
-             #{offset VkRenderPassInputAttachmentAspectCreateInfo, sType}
-        type FieldIsArray "sType"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassInputAttachmentAspectCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkRenderPassInputAttachmentAspectCreateInfo where
-        type FieldType "pNext" VkRenderPassInputAttachmentAspectCreateInfo
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             =
-             #{offset VkRenderPassInputAttachmentAspectCreateInfo, pNext}
-        type FieldIsArray "pNext"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassInputAttachmentAspectCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectReferenceCount"
-           VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        type FieldType "aspectReferenceCount"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = Word32
-        type FieldOptional "aspectReferenceCount"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "aspectReferenceCount"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             =
-             #{offset VkRenderPassInputAttachmentAspectCreateInfo, aspectReferenceCount}
-        type FieldIsArray "aspectReferenceCount"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfo, aspectReferenceCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "aspectReferenceCount"
-           VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassInputAttachmentAspectCreateInfo, aspectReferenceCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfo, aspectReferenceCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "aspectReferenceCount"
-           VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfo, aspectReferenceCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAspectReferences"
-           VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        type FieldType "pAspectReferences"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = Ptr VkInputAttachmentAspectReference
-        type FieldOptional "pAspectReferences"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAspectReferences"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             =
-             #{offset VkRenderPassInputAttachmentAspectCreateInfo, pAspectReferences}
-        type FieldIsArray "pAspectReferences"
-               VkRenderPassInputAttachmentAspectCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassInputAttachmentAspectCreateInfo, pAspectReferences}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAspectReferences"
-           VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassInputAttachmentAspectCreateInfo, pAspectReferences})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfo, pAspectReferences}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAspectReferences"
-           VkRenderPassInputAttachmentAspectCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassInputAttachmentAspectCreateInfo, pAspectReferences}
-
-instance Show VkRenderPassInputAttachmentAspectCreateInfo where
-        showsPrec d x
-          = showString "VkRenderPassInputAttachmentAspectCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "aspectReferenceCount = " .
-                            showsPrec d (getField @"aspectReferenceCount" x) .
-                              showString ", " .
-                                showString "pAspectReferences = " .
-                                  showsPrec d (getField @"pAspectReferences" x) . showChar '}'
-
--- | Alias for `VkRenderPassInputAttachmentAspectCreateInfo`
-type VkRenderPassInputAttachmentAspectCreateInfoKHR =
-     VkRenderPassInputAttachmentAspectCreateInfo
-
--- | > typedef struct VkRenderPassMultiviewCreateInfo {
---   >     VkStructureType        sType;
---   >     const void*            pNext;
---   >     uint32_t               subpassCount;
---   >     const uint32_t*     pViewMasks;
---   >     uint32_t               dependencyCount;
---   >     const int32_t*   pViewOffsets;
---   >     uint32_t               correlationMaskCount;
---   >     const uint32_t* pCorrelationMasks;
---   > } VkRenderPassMultiviewCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfo registry at www.khronos.org>
-type VkRenderPassMultiviewCreateInfo =
-     VulkanStruct VkRenderPassMultiviewCreateInfo' -- ' closing tick for hsc2hs
-
-data VkRenderPassMultiviewCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkRenderPassMultiviewCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRenderPassMultiviewCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkRenderPassMultiviewCreateInfo where
-        sizeOf ~_ = #{size VkRenderPassMultiviewCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkRenderPassMultiviewCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkRenderPassMultiviewCreateInfo where
-        type StructFields VkRenderPassMultiviewCreateInfo =
-             '["sType", "pNext", "subpassCount", "pViewMasks", -- ' closing tick for hsc2hs
-               "dependencyCount", "pViewOffsets", "correlationMaskCount",
-               "pCorrelationMasks"]
-        type CUnionType VkRenderPassMultiviewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRenderPassMultiviewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkRenderPassMultiviewCreateInfo =
-             '[VkRenderPassCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkRenderPassMultiviewCreateInfo where
-        type FieldType "sType" VkRenderPassMultiviewCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkRenderPassMultiviewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkRenderPassMultiviewCreateInfo =
-             #{offset VkRenderPassMultiviewCreateInfo, sType}
-        type FieldIsArray "sType" VkRenderPassMultiviewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkRenderPassMultiviewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkRenderPassMultiviewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkRenderPassMultiviewCreateInfo where
-        type FieldType "pNext" VkRenderPassMultiviewCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkRenderPassMultiviewCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkRenderPassMultiviewCreateInfo =
-             #{offset VkRenderPassMultiviewCreateInfo, pNext}
-        type FieldIsArray "pNext" VkRenderPassMultiviewCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkRenderPassMultiviewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkRenderPassMultiviewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "subpassCount" VkRenderPassMultiviewCreateInfo where
-        type FieldType "subpassCount" VkRenderPassMultiviewCreateInfo =
-             Word32
-        type FieldOptional "subpassCount" VkRenderPassMultiviewCreateInfo =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "subpassCount" VkRenderPassMultiviewCreateInfo =
-             #{offset VkRenderPassMultiviewCreateInfo, subpassCount}
-        type FieldIsArray "subpassCount" VkRenderPassMultiviewCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfo, subpassCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subpassCount" VkRenderPassMultiviewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfo, subpassCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfo, subpassCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subpassCount" VkRenderPassMultiviewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfo, subpassCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewMasks" VkRenderPassMultiviewCreateInfo where
-        type FieldType "pViewMasks" VkRenderPassMultiviewCreateInfo =
-             Ptr Word32
-        type FieldOptional "pViewMasks" VkRenderPassMultiviewCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pViewMasks" VkRenderPassMultiviewCreateInfo =
-             #{offset VkRenderPassMultiviewCreateInfo, pViewMasks}
-        type FieldIsArray "pViewMasks" VkRenderPassMultiviewCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfo, pViewMasks}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pViewMasks" VkRenderPassMultiviewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfo, pViewMasks})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfo, pViewMasks}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pViewMasks" VkRenderPassMultiviewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfo, pViewMasks}
-
-instance {-# OVERLAPPING #-}
-         HasField "dependencyCount" VkRenderPassMultiviewCreateInfo where
-        type FieldType "dependencyCount" VkRenderPassMultiviewCreateInfo =
-             Word32
-        type FieldOptional "dependencyCount"
-               VkRenderPassMultiviewCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dependencyCount" VkRenderPassMultiviewCreateInfo
-             =
-             #{offset VkRenderPassMultiviewCreateInfo, dependencyCount}
-        type FieldIsArray "dependencyCount" VkRenderPassMultiviewCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfo, dependencyCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dependencyCount" VkRenderPassMultiviewCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfo, dependencyCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfo, dependencyCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dependencyCount" VkRenderPassMultiviewCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfo, dependencyCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pViewOffsets" VkRenderPassMultiviewCreateInfo where
-        type FieldType "pViewOffsets" VkRenderPassMultiviewCreateInfo =
-             Ptr Int32
-        type FieldOptional "pViewOffsets" VkRenderPassMultiviewCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pViewOffsets" VkRenderPassMultiviewCreateInfo =
-             #{offset VkRenderPassMultiviewCreateInfo, pViewOffsets}
-        type FieldIsArray "pViewOffsets" VkRenderPassMultiviewCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfo, pViewOffsets}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pViewOffsets" VkRenderPassMultiviewCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfo, pViewOffsets})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfo, pViewOffsets}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pViewOffsets" VkRenderPassMultiviewCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfo, pViewOffsets}
-
-instance {-# OVERLAPPING #-}
-         HasField "correlationMaskCount" VkRenderPassMultiviewCreateInfo
-         where
-        type FieldType "correlationMaskCount"
-               VkRenderPassMultiviewCreateInfo
-             = Word32
-        type FieldOptional "correlationMaskCount"
-               VkRenderPassMultiviewCreateInfo
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "correlationMaskCount"
-               VkRenderPassMultiviewCreateInfo
-             =
-             #{offset VkRenderPassMultiviewCreateInfo, correlationMaskCount}
-        type FieldIsArray "correlationMaskCount"
-               VkRenderPassMultiviewCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfo, correlationMaskCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "correlationMaskCount" VkRenderPassMultiviewCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfo, correlationMaskCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfo, correlationMaskCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "correlationMaskCount"
-           VkRenderPassMultiviewCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfo, correlationMaskCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pCorrelationMasks" VkRenderPassMultiviewCreateInfo where
-        type FieldType "pCorrelationMasks" VkRenderPassMultiviewCreateInfo
-             = Ptr Word32
-        type FieldOptional "pCorrelationMasks"
-               VkRenderPassMultiviewCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pCorrelationMasks"
-               VkRenderPassMultiviewCreateInfo
-             =
-             #{offset VkRenderPassMultiviewCreateInfo, pCorrelationMasks}
-        type FieldIsArray "pCorrelationMasks"
-               VkRenderPassMultiviewCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassMultiviewCreateInfo, pCorrelationMasks}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pCorrelationMasks" VkRenderPassMultiviewCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassMultiviewCreateInfo, pCorrelationMasks})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassMultiviewCreateInfo, pCorrelationMasks}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pCorrelationMasks" VkRenderPassMultiviewCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassMultiviewCreateInfo, pCorrelationMasks}
-
-instance Show VkRenderPassMultiviewCreateInfo where
-        showsPrec d x
-          = showString "VkRenderPassMultiviewCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "subpassCount = " .
-                            showsPrec d (getField @"subpassCount" x) .
-                              showString ", " .
-                                showString "pViewMasks = " .
-                                  showsPrec d (getField @"pViewMasks" x) .
-                                    showString ", " .
-                                      showString "dependencyCount = " .
-                                        showsPrec d (getField @"dependencyCount" x) .
-                                          showString ", " .
-                                            showString "pViewOffsets = " .
-                                              showsPrec d (getField @"pViewOffsets" x) .
-                                                showString ", " .
-                                                  showString "correlationMaskCount = " .
-                                                    showsPrec d (getField @"correlationMaskCount" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "pCorrelationMasks = " .
-                                                          showsPrec d
-                                                            (getField @"pCorrelationMasks" x)
-                                                            . showChar '}'
-
--- | Alias for `VkRenderPassMultiviewCreateInfo`
-type VkRenderPassMultiviewCreateInfoKHR =
-     VkRenderPassMultiviewCreateInfo
-
--- | > typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     uint32_t         attachmentInitialSampleLocationsCount;
---   >     const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
---   >     uint32_t         postSubpassSampleLocationsCount;
---   >     const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations;
---   > } VkRenderPassSampleLocationsBeginInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassSampleLocationsBeginInfoEXT VkRenderPassSampleLocationsBeginInfoEXT registry at www.khronos.org>
-type VkRenderPassSampleLocationsBeginInfoEXT =
-     VulkanStruct VkRenderPassSampleLocationsBeginInfoEXT' -- ' closing tick for hsc2hs
-
-data VkRenderPassSampleLocationsBeginInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkRenderPassSampleLocationsBeginInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkRenderPassSampleLocationsBeginInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkRenderPassSampleLocationsBeginInfoEXT where
-        sizeOf ~_
-          = #{size VkRenderPassSampleLocationsBeginInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkRenderPassSampleLocationsBeginInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        type StructFields VkRenderPassSampleLocationsBeginInfoEXT =
-             '["sType", "pNext", "attachmentInitialSampleLocationsCount", -- ' closing tick for hsc2hs
-               "pAttachmentInitialSampleLocations",
-               "postSubpassSampleLocationsCount", "pPostSubpassSampleLocations"]
-        type CUnionType VkRenderPassSampleLocationsBeginInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkRenderPassSampleLocationsBeginInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkRenderPassSampleLocationsBeginInfoEXT =
-             '[VkRenderPassBeginInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkRenderPassSampleLocationsBeginInfoEXT where
-        type FieldType "sType" VkRenderPassSampleLocationsBeginInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkRenderPassSampleLocationsBeginInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkRenderPassSampleLocationsBeginInfoEXT =
-             #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
-        type FieldIsArray "sType" VkRenderPassSampleLocationsBeginInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkRenderPassSampleLocationsBeginInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkRenderPassSampleLocationsBeginInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkRenderPassSampleLocationsBeginInfoEXT where
-        type FieldType "pNext" VkRenderPassSampleLocationsBeginInfoEXT =
-             Ptr Void
-        type FieldOptional "pNext" VkRenderPassSampleLocationsBeginInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkRenderPassSampleLocationsBeginInfoEXT =
-             #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
-        type FieldIsArray "pNext" VkRenderPassSampleLocationsBeginInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkRenderPassSampleLocationsBeginInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkRenderPassSampleLocationsBeginInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "attachmentInitialSampleLocationsCount"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        type FieldType "attachmentInitialSampleLocationsCount"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = Word32
-        type FieldOptional "attachmentInitialSampleLocationsCount"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "attachmentInitialSampleLocationsCount"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             =
-             #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
-        type FieldIsArray "attachmentInitialSampleLocationsCount"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "attachmentInitialSampleLocationsCount"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "attachmentInitialSampleLocationsCount"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pAttachmentInitialSampleLocations"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        type FieldType "pAttachmentInitialSampleLocations"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = Ptr VkAttachmentSampleLocationsEXT
-        type FieldOptional "pAttachmentInitialSampleLocations"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pAttachmentInitialSampleLocations"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             =
-             #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
-        type FieldIsArray "pAttachmentInitialSampleLocations"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pAttachmentInitialSampleLocations"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pAttachmentInitialSampleLocations"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         HasField "postSubpassSampleLocationsCount"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        type FieldType "postSubpassSampleLocationsCount"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = Word32
-        type FieldOptional "postSubpassSampleLocationsCount"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "postSubpassSampleLocationsCount"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             =
-             #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
-        type FieldIsArray "postSubpassSampleLocationsCount"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "postSubpassSampleLocationsCount"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "postSubpassSampleLocationsCount"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pPostSubpassSampleLocations"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        type FieldType "pPostSubpassSampleLocations"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = Ptr VkSubpassSampleLocationsEXT
-        type FieldOptional "pPostSubpassSampleLocations"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pPostSubpassSampleLocations"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             =
-             #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
-        type FieldIsArray "pPostSubpassSampleLocations"
-               VkRenderPassSampleLocationsBeginInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pPostSubpassSampleLocations"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pPostSubpassSampleLocations"
-           VkRenderPassSampleLocationsBeginInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
-
-instance Show VkRenderPassSampleLocationsBeginInfoEXT where
-        showsPrec d x
-          = showString "VkRenderPassSampleLocationsBeginInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "attachmentInitialSampleLocationsCount = " .
-                            showsPrec d (getField @"attachmentInitialSampleLocationsCount" x) .
-                              showString ", " .
-                                showString "pAttachmentInitialSampleLocations = " .
-                                  showsPrec d (getField @"pAttachmentInitialSampleLocations" x) .
-                                    showString ", " .
-                                      showString "postSubpassSampleLocationsCount = " .
-                                        showsPrec d (getField @"postSubpassSampleLocationsCount" x)
-                                          .
-                                          showString ", " .
-                                            showString "pPostSubpassSampleLocations = " .
-                                              showsPrec d
-                                                (getField @"pPostSubpassSampleLocations" x)
-                                                . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.RenderPass
+       (VkRenderPassBeginInfo, VkRenderPassCreateInfo,
+        VkRenderPassInputAttachmentAspectCreateInfo,
+        VkRenderPassInputAttachmentAspectCreateInfoKHR,
+        VkRenderPassMultiviewCreateInfo,
+        VkRenderPassMultiviewCreateInfoKHR,
+        VkRenderPassSampleLocationsBeginInfoEXT)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.Bitmasks                              (VkRenderPassCreateFlags)
+import Graphics.Vulkan.Types.Enum.StructureType                    (VkStructureType)
+import Graphics.Vulkan.Types.Handles                               (VkFramebuffer,
+                                                                    VkRenderPass)
+import Graphics.Vulkan.Types.Struct.Attachment                     (VkAttachmentDescription,
+                                                                    VkAttachmentSampleLocationsEXT)
+import Graphics.Vulkan.Types.Struct.Clear                          (VkClearValue)
+import Graphics.Vulkan.Types.Struct.InputAttachmentAspectReference (VkInputAttachmentAspectReference)
+import Graphics.Vulkan.Types.Struct.Rect                           (VkRect2D)
+import Graphics.Vulkan.Types.Struct.Subpass                        (VkSubpassDependency,
+                                                                    VkSubpassDescription,
+                                                                    VkSubpassSampleLocationsEXT)
+
+-- | > typedef struct VkRenderPassBeginInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkRenderPass           renderPass;
+--   >     VkFramebuffer          framebuffer;
+--   >     VkRect2D               renderArea;
+--   >     uint32_t               clearValueCount;
+--   >     const VkClearValue*    pClearValues;
+--   > } VkRenderPassBeginInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassBeginInfo VkRenderPassBeginInfo registry at www.khronos.org>
+type VkRenderPassBeginInfo = VkStruct VkRenderPassBeginInfo' -- ' closing tick for hsc2hs
+
+data VkRenderPassBeginInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkRenderPassBeginInfo where
+    type StructRep VkRenderPassBeginInfo =
+         'StructMeta "VkRenderPassBeginInfo" VkRenderPassBeginInfo  -- ' closing tick for hsc2hs
+                                                                   #{size VkRenderPassBeginInfo}
+           #{alignment VkRenderPassBeginInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkRenderPassBeginInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkRenderPassBeginInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "renderPass" VkRenderPass 'False 
+                                                          #{offset VkRenderPassBeginInfo, renderPass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "framebuffer" VkFramebuffer 'False 
+                                                            #{offset VkRenderPassBeginInfo, framebuffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "renderArea" VkRect2D 'False 
+                                                      #{offset VkRenderPassBeginInfo, renderArea}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "clearValueCount" Word32 'True 
+                                                        #{offset VkRenderPassBeginInfo, clearValueCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pClearValues" (Ptr VkClearValue) 'False 
+                                                                  #{offset VkRenderPassBeginInfo, pClearValues}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkRenderPassCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkRenderPassCreateFlags    flags;
+--   >     uint32_t   attachmentCount;
+--   >     const VkAttachmentDescription* pAttachments;
+--   >     uint32_t               subpassCount;
+--   >     const VkSubpassDescription* pSubpasses;
+--   >     uint32_t       dependencyCount;
+--   >     const VkSubpassDependency* pDependencies;
+--   > } VkRenderPassCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassCreateInfo VkRenderPassCreateInfo registry at www.khronos.org>
+type VkRenderPassCreateInfo = VkStruct VkRenderPassCreateInfo' -- ' closing tick for hsc2hs
+
+data VkRenderPassCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkRenderPassCreateInfo where
+    type StructRep VkRenderPassCreateInfo =
+         'StructMeta "VkRenderPassCreateInfo" VkRenderPassCreateInfo -- ' closing tick for hsc2hs
+           #{size VkRenderPassCreateInfo}
+           #{alignment VkRenderPassCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkRenderPassCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkRenderPassCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkRenderPassCreateFlags 'True 
+                                                               #{offset VkRenderPassCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "attachmentCount" Word32 'True 
+                                                        #{offset VkRenderPassCreateInfo, attachmentCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAttachments" (Ptr VkAttachmentDescription) 'False
+                #{offset VkRenderPassCreateInfo, pAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subpassCount" Word32 'False 
+                                                      #{offset VkRenderPassCreateInfo, subpassCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSubpasses" (Ptr VkSubpassDescription) 'False
+                #{offset VkRenderPassCreateInfo, pSubpasses}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dependencyCount" Word32 'True 
+                                                        #{offset VkRenderPassCreateInfo, dependencyCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDependencies" (Ptr VkSubpassDependency) 'False
+                #{offset VkRenderPassCreateInfo, pDependencies}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                     pNext;
+--   >     uint32_t                        aspectReferenceCount;
+--   >     const VkInputAttachmentAspectReference* pAspectReferences;
+--   > } VkRenderPassInputAttachmentAspectCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfo registry at www.khronos.org>
+type VkRenderPassInputAttachmentAspectCreateInfo =
+     VkStruct VkRenderPassInputAttachmentAspectCreateInfo' -- ' closing tick for hsc2hs
+
+data VkRenderPassInputAttachmentAspectCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkRenderPassInputAttachmentAspectCreateInfo
+         where
+    type StructRep VkRenderPassInputAttachmentAspectCreateInfo =
+         'StructMeta "VkRenderPassInputAttachmentAspectCreateInfo" -- ' closing tick for hsc2hs
+           VkRenderPassInputAttachmentAspectCreateInfo
+           #{size VkRenderPassInputAttachmentAspectCreateInfo}
+           #{alignment VkRenderPassInputAttachmentAspectCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkRenderPassInputAttachmentAspectCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkRenderPassInputAttachmentAspectCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "aspectReferenceCount" Word32 'False 
+                                                              #{offset VkRenderPassInputAttachmentAspectCreateInfo, aspectReferenceCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAspectReferences" -- ' closing tick for hsc2hs
+                (Ptr VkInputAttachmentAspectReference)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkRenderPassInputAttachmentAspectCreateInfo, pAspectReferences}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkRenderPassCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkRenderPassInputAttachmentAspectCreateInfo`
+type VkRenderPassInputAttachmentAspectCreateInfoKHR =
+     VkRenderPassInputAttachmentAspectCreateInfo
+
+-- | > typedef struct VkRenderPassMultiviewCreateInfo {
+--   >     VkStructureType        sType;
+--   >     const void*            pNext;
+--   >     uint32_t               subpassCount;
+--   >     const uint32_t*     pViewMasks;
+--   >     uint32_t               dependencyCount;
+--   >     const int32_t*   pViewOffsets;
+--   >     uint32_t               correlationMaskCount;
+--   >     const uint32_t* pCorrelationMasks;
+--   > } VkRenderPassMultiviewCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfo registry at www.khronos.org>
+type VkRenderPassMultiviewCreateInfo =
+     VkStruct VkRenderPassMultiviewCreateInfo' -- ' closing tick for hsc2hs
+
+data VkRenderPassMultiviewCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkRenderPassMultiviewCreateInfo where
+    type StructRep VkRenderPassMultiviewCreateInfo =
+         'StructMeta "VkRenderPassMultiviewCreateInfo" -- ' closing tick for hsc2hs
+           VkRenderPassMultiviewCreateInfo
+           #{size VkRenderPassMultiviewCreateInfo}
+           #{alignment VkRenderPassMultiviewCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkRenderPassMultiviewCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkRenderPassMultiviewCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "subpassCount" Word32 'True 
+                                                     #{offset VkRenderPassMultiviewCreateInfo, subpassCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pViewMasks" (Ptr Word32) 'False 
+                                                          #{offset VkRenderPassMultiviewCreateInfo, pViewMasks}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dependencyCount" Word32 'True 
+                                                        #{offset VkRenderPassMultiviewCreateInfo, dependencyCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pViewOffsets" (Ptr Int32) 'False 
+                                                           #{offset VkRenderPassMultiviewCreateInfo, pViewOffsets}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "correlationMaskCount" Word32 'True 
+                                                             #{offset VkRenderPassMultiviewCreateInfo, correlationMaskCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pCorrelationMasks" (Ptr Word32) 'False 
+                                                                 #{offset VkRenderPassMultiviewCreateInfo, pCorrelationMasks}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkRenderPassCreateInfo] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkRenderPassMultiviewCreateInfo`
+type VkRenderPassMultiviewCreateInfoKHR =
+     VkRenderPassMultiviewCreateInfo
+
+-- | > typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     uint32_t         attachmentInitialSampleLocationsCount;
+--   >     const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
+--   >     uint32_t         postSubpassSampleLocationsCount;
+--   >     const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations;
+--   > } VkRenderPassSampleLocationsBeginInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkRenderPassSampleLocationsBeginInfoEXT VkRenderPassSampleLocationsBeginInfoEXT registry at www.khronos.org>
+type VkRenderPassSampleLocationsBeginInfoEXT =
+     VkStruct VkRenderPassSampleLocationsBeginInfoEXT' -- ' closing tick for hsc2hs
+
+data VkRenderPassSampleLocationsBeginInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkRenderPassSampleLocationsBeginInfoEXT
+         where
+    type StructRep VkRenderPassSampleLocationsBeginInfoEXT =
+         'StructMeta "VkRenderPassSampleLocationsBeginInfoEXT" -- ' closing tick for hsc2hs
+           VkRenderPassSampleLocationsBeginInfoEXT
+           #{size VkRenderPassSampleLocationsBeginInfoEXT}
+           #{alignment VkRenderPassSampleLocationsBeginInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkRenderPassSampleLocationsBeginInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkRenderPassSampleLocationsBeginInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "attachmentInitialSampleLocationsCount" Word32 'True
+                #{offset VkRenderPassSampleLocationsBeginInfoEXT, attachmentInitialSampleLocationsCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pAttachmentInitialSampleLocations" -- ' closing tick for hsc2hs
+                (Ptr VkAttachmentSampleLocationsEXT)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkRenderPassSampleLocationsBeginInfoEXT, pAttachmentInitialSampleLocations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "postSubpassSampleLocationsCount" Word32 'True
+                #{offset VkRenderPassSampleLocationsBeginInfoEXT, postSubpassSampleLocationsCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pPostSubpassSampleLocations" -- ' closing tick for hsc2hs
+                (Ptr VkSubpassSampleLocationsEXT)
+                'False -- ' closing tick for hsc2hs
+                #{offset VkRenderPassSampleLocationsBeginInfoEXT, pPostSubpassSampleLocations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkRenderPassBeginInfo] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/SampleLocation.hsc b/src-gen/Graphics/Vulkan/Types/Struct/SampleLocation.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/SampleLocation.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/SampleLocation.hsc
@@ -2,23 +2,17 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.SampleLocation
-       (VkSampleLocationEXT, VkSampleLocationEXT', -- ' closing tick for hsc2hs
-        VkSampleLocationsInfoEXT, VkSampleLocationsInfoEXT') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                            (Storable (..))
+       (VkSampleLocationEXT, VkSampleLocationsInfoEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.SampleCountFlags (VkSampleCountFlagBits)
 import Graphics.Vulkan.Types.Enum.StructureType    (VkStructureType)
 import Graphics.Vulkan.Types.Struct.Extent         (VkExtent2D)
 import Graphics.Vulkan.Types.Struct.Image          (VkImageMemoryBarrier)
-import System.IO.Unsafe                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSampleLocationEXT {
 --   >     float                            x;
@@ -26,107 +20,32 @@
 --   > } VkSampleLocationEXT;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSampleLocationEXT VkSampleLocationEXT registry at www.khronos.org>
-type VkSampleLocationEXT = VulkanStruct VkSampleLocationEXT' -- ' closing tick for hsc2hs
+type VkSampleLocationEXT = VkStruct VkSampleLocationEXT' -- ' closing tick for hsc2hs
 
 data VkSampleLocationEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkSampleLocationEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSampleLocationEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSampleLocationEXT where
-        sizeOf ~_ = #{size VkSampleLocationEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSampleLocationEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSampleLocationEXT where
-        type StructFields VkSampleLocationEXT = '["x", "y"] -- ' closing tick for hsc2hs
-        type CUnionType VkSampleLocationEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSampleLocationEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSampleLocationEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "x" VkSampleLocationEXT where
-        type FieldType "x" VkSampleLocationEXT = #{type float}
-        type FieldOptional "x" VkSampleLocationEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "x" VkSampleLocationEXT =
-             #{offset VkSampleLocationEXT, x}
-        type FieldIsArray "x" VkSampleLocationEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSampleLocationEXT, x}
-
-instance {-# OVERLAPPING #-} CanReadField "x" VkSampleLocationEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationEXT, x})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSampleLocationEXT, x}
-
-instance {-# OVERLAPPING #-} CanWriteField "x" VkSampleLocationEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSampleLocationEXT, x}
-
-instance {-# OVERLAPPING #-} HasField "y" VkSampleLocationEXT where
-        type FieldType "y" VkSampleLocationEXT = #{type float}
-        type FieldOptional "y" VkSampleLocationEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "y" VkSampleLocationEXT =
-             #{offset VkSampleLocationEXT, y}
-        type FieldIsArray "y" VkSampleLocationEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSampleLocationEXT, y}
-
-instance {-# OVERLAPPING #-} CanReadField "y" VkSampleLocationEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationEXT, y})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSampleLocationEXT, y}
-
-instance {-# OVERLAPPING #-} CanWriteField "y" VkSampleLocationEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSampleLocationEXT, y}
-
-instance Show VkSampleLocationEXT where
-        showsPrec d x
-          = showString "VkSampleLocationEXT {" .
-              showString "x = " .
-                showsPrec d (getField @"x" x) .
-                  showString ", " .
-                    showString "y = " . showsPrec d (getField @"y" x) . showChar '}'
+    type StructRep VkSampleLocationEXT =
+         'StructMeta "VkSampleLocationEXT" VkSampleLocationEXT  -- ' closing tick for hsc2hs
+                                                               #{size VkSampleLocationEXT}
+           #{alignment VkSampleLocationEXT}
+           '[('FieldMeta "x" (
+                              #{type float}
+                              ) 'False  -- ' closing tick for hsc2hs
+                                       #{offset VkSampleLocationEXT, x}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "y" ( -- ' closing tick for hsc2hs
+                              #{type float}
+                              ) 'False  -- ' closing tick for hsc2hs
+                                       #{offset VkSampleLocationEXT, y}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkSampleLocationsInfoEXT {
 --   >     VkStructureType sType;
@@ -138,274 +57,45 @@
 --   > } VkSampleLocationsInfoEXT;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSampleLocationsInfoEXT VkSampleLocationsInfoEXT registry at www.khronos.org>
-type VkSampleLocationsInfoEXT =
-     VulkanStruct VkSampleLocationsInfoEXT' -- ' closing tick for hsc2hs
+type VkSampleLocationsInfoEXT = VkStruct VkSampleLocationsInfoEXT' -- ' closing tick for hsc2hs
 
 data VkSampleLocationsInfoEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkSampleLocationsInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSampleLocationsInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSampleLocationsInfoEXT where
-        sizeOf ~_ = #{size VkSampleLocationsInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSampleLocationsInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSampleLocationsInfoEXT where
-        type StructFields VkSampleLocationsInfoEXT =
-             '["sType", "pNext", "sampleLocationsPerPixel", -- ' closing tick for hsc2hs
-               "sampleLocationGridSize", "sampleLocationsCount",
-               "pSampleLocations"]
-        type CUnionType VkSampleLocationsInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSampleLocationsInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSampleLocationsInfoEXT =
-             '[VkImageMemoryBarrier] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSampleLocationsInfoEXT where
-        type FieldType "sType" VkSampleLocationsInfoEXT = VkStructureType
-        type FieldOptional "sType" VkSampleLocationsInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSampleLocationsInfoEXT =
-             #{offset VkSampleLocationsInfoEXT, sType}
-        type FieldIsArray "sType" VkSampleLocationsInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSampleLocationsInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSampleLocationsInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSampleLocationsInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSampleLocationsInfoEXT where
-        type FieldType "pNext" VkSampleLocationsInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkSampleLocationsInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSampleLocationsInfoEXT =
-             #{offset VkSampleLocationsInfoEXT, pNext}
-        type FieldIsArray "pNext" VkSampleLocationsInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSampleLocationsInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSampleLocationsInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSampleLocationsInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationsPerPixel" VkSampleLocationsInfoEXT where
-        type FieldType "sampleLocationsPerPixel" VkSampleLocationsInfoEXT =
-             VkSampleCountFlagBits
-        type FieldOptional "sampleLocationsPerPixel"
-               VkSampleLocationsInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationsPerPixel" VkSampleLocationsInfoEXT
-             =
-             #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
-        type FieldIsArray "sampleLocationsPerPixel"
-               VkSampleLocationsInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationsPerPixel" VkSampleLocationsInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationsPerPixel" VkSampleLocationsInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationGridSize" VkSampleLocationsInfoEXT where
-        type FieldType "sampleLocationGridSize" VkSampleLocationsInfoEXT =
-             VkExtent2D
-        type FieldOptional "sampleLocationGridSize"
-               VkSampleLocationsInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationGridSize" VkSampleLocationsInfoEXT
-             =
-             #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
-        type FieldIsArray "sampleLocationGridSize" VkSampleLocationsInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationGridSize" VkSampleLocationsInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationGridSize" VkSampleLocationsInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationsCount" VkSampleLocationsInfoEXT where
-        type FieldType "sampleLocationsCount" VkSampleLocationsInfoEXT =
-             Word32
-        type FieldOptional "sampleLocationsCount" VkSampleLocationsInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationsCount" VkSampleLocationsInfoEXT =
-             #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
-        type FieldIsArray "sampleLocationsCount" VkSampleLocationsInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationsCount" VkSampleLocationsInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, sampleLocationsCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationsCount" VkSampleLocationsInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSampleLocations" VkSampleLocationsInfoEXT where
-        type FieldType "pSampleLocations" VkSampleLocationsInfoEXT =
-             Ptr VkSampleLocationEXT
-        type FieldOptional "pSampleLocations" VkSampleLocationsInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSampleLocations" VkSampleLocationsInfoEXT =
-             #{offset VkSampleLocationsInfoEXT, pSampleLocations}
-        type FieldIsArray "pSampleLocations" VkSampleLocationsInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSampleLocationsInfoEXT, pSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSampleLocations" VkSampleLocationsInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSampleLocationsInfoEXT, pSampleLocations})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSampleLocationsInfoEXT, pSampleLocations}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSampleLocations" VkSampleLocationsInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSampleLocationsInfoEXT, pSampleLocations}
-
-instance Show VkSampleLocationsInfoEXT where
-        showsPrec d x
-          = showString "VkSampleLocationsInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "sampleLocationsPerPixel = " .
-                            showsPrec d (getField @"sampleLocationsPerPixel" x) .
-                              showString ", " .
-                                showString "sampleLocationGridSize = " .
-                                  showsPrec d (getField @"sampleLocationGridSize" x) .
-                                    showString ", " .
-                                      showString "sampleLocationsCount = " .
-                                        showsPrec d (getField @"sampleLocationsCount" x) .
-                                          showString ", " .
-                                            showString "pSampleLocations = " .
-                                              showsPrec d (getField @"pSampleLocations" x) .
-                                                showChar '}'
+    type StructRep VkSampleLocationsInfoEXT =
+         'StructMeta "VkSampleLocationsInfoEXT" VkSampleLocationsInfoEXT -- ' closing tick for hsc2hs
+           #{size VkSampleLocationsInfoEXT}
+           #{alignment VkSampleLocationsInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSampleLocationsInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSampleLocationsInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationsPerPixel" VkSampleCountFlagBits 'False
+                #{offset VkSampleLocationsInfoEXT, sampleLocationsPerPixel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationGridSize" VkExtent2D 'False 
+                                                                    #{offset VkSampleLocationsInfoEXT, sampleLocationGridSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationsCount" Word32 'False 
+                                                              #{offset VkSampleLocationsInfoEXT, sampleLocationsCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSampleLocations" (Ptr VkSampleLocationEXT) 'False
+                #{offset VkSampleLocationsInfoEXT, pSampleLocations}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkImageMemoryBarrier] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Sampler.hsc
@@ -2,1809 +2,369 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Sampler
-       (VkSamplerCreateInfo, VkSamplerCreateInfo', -- ' closing tick for hsc2hs
-        VkSamplerReductionModeCreateInfoEXT,
-        VkSamplerReductionModeCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkSamplerYcbcrConversionCreateInfo,
-        VkSamplerYcbcrConversionCreateInfo', -- ' closing tick for hsc2hs
-        VkSamplerYcbcrConversionCreateInfoKHR,
-        VkSamplerYcbcrConversionImageFormatProperties,
-        VkSamplerYcbcrConversionImageFormatProperties', -- ' closing tick for hsc2hs
-        VkSamplerYcbcrConversionImageFormatPropertiesKHR,
-        VkSamplerYcbcrConversionInfo, VkSamplerYcbcrConversionInfo', -- ' closing tick for hsc2hs
-        VkSamplerYcbcrConversionInfoKHR)
-       where
-import Foreign.Storable                              (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes               (VkBool32)
-import Graphics.Vulkan.Types.Bitmasks                (VkSamplerCreateFlags)
-import Graphics.Vulkan.Types.Enum.BorderColor        (VkBorderColor)
-import Graphics.Vulkan.Types.Enum.ChromaLocation     (VkChromaLocation)
-import Graphics.Vulkan.Types.Enum.CompareOp          (VkCompareOp)
-import Graphics.Vulkan.Types.Enum.Filter             (VkFilter)
-import Graphics.Vulkan.Types.Enum.Format             (VkFormat)
-import Graphics.Vulkan.Types.Enum.Sampler            (VkSamplerAddressMode,
-                                                      VkSamplerMipmapMode,
-                                                      VkSamplerReductionModeEXT,
-                                                      VkSamplerYcbcrModelConversion,
-                                                      VkSamplerYcbcrRange)
-import Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
-import Graphics.Vulkan.Types.Handles                 (VkSamplerYcbcrConversion)
-import Graphics.Vulkan.Types.Struct.ComponentMapping (VkComponentMapping)
-import Graphics.Vulkan.Types.Struct.Image            (VkImageFormatProperties2,
-                                                      VkImageViewCreateInfo)
-import System.IO.Unsafe                              (unsafeDupablePerformIO)
-
--- | > typedef struct VkSamplerCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkSamplerCreateFlags   flags;
---   >     VkFilter               magFilter;
---   >     VkFilter               minFilter;
---   >     VkSamplerMipmapMode    mipmapMode;
---   >     VkSamplerAddressMode   addressModeU;
---   >     VkSamplerAddressMode   addressModeV;
---   >     VkSamplerAddressMode   addressModeW;
---   >     float                  mipLodBias;
---   >     VkBool32               anisotropyEnable;
---   >     float                  maxAnisotropy;
---   >     VkBool32               compareEnable;
---   >     VkCompareOp            compareOp;
---   >     float                  minLod;
---   >     float                  maxLod;
---   >     VkBorderColor          borderColor;
---   >     VkBool32               unnormalizedCoordinates;
---   > } VkSamplerCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerCreateInfo VkSamplerCreateInfo registry at www.khronos.org>
-type VkSamplerCreateInfo = VulkanStruct VkSamplerCreateInfo' -- ' closing tick for hsc2hs
-
-data VkSamplerCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkSamplerCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSamplerCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSamplerCreateInfo where
-        sizeOf ~_ = #{size VkSamplerCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSamplerCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSamplerCreateInfo where
-        type StructFields VkSamplerCreateInfo =
-             '["sType", "pNext", "flags", "magFilter", "minFilter", -- ' closing tick for hsc2hs
-               "mipmapMode", "addressModeU", "addressModeV", "addressModeW",
-               "mipLodBias", "anisotropyEnable", "maxAnisotropy", "compareEnable",
-               "compareOp", "minLod", "maxLod", "borderColor",
-               "unnormalizedCoordinates"]
-        type CUnionType VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSamplerCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkSamplerCreateInfo
-         where
-        type FieldType "sType" VkSamplerCreateInfo = VkStructureType
-        type FieldOptional "sType" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, sType}
-        type FieldIsArray "sType" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkSamplerCreateInfo
-         where
-        type FieldType "pNext" VkSamplerCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, pNext}
-        type FieldIsArray "pNext" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkSamplerCreateInfo
-         where
-        type FieldType "flags" VkSamplerCreateInfo = VkSamplerCreateFlags
-        type FieldOptional "flags" VkSamplerCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, flags}
-        type FieldIsArray "flags" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "magFilter" VkSamplerCreateInfo where
-        type FieldType "magFilter" VkSamplerCreateInfo = VkFilter
-        type FieldOptional "magFilter" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "magFilter" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, magFilter}
-        type FieldIsArray "magFilter" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, magFilter}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "magFilter" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, magFilter})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, magFilter}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "magFilter" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, magFilter}
-
-instance {-# OVERLAPPING #-}
-         HasField "minFilter" VkSamplerCreateInfo where
-        type FieldType "minFilter" VkSamplerCreateInfo = VkFilter
-        type FieldOptional "minFilter" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minFilter" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, minFilter}
-        type FieldIsArray "minFilter" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, minFilter}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minFilter" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, minFilter})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, minFilter}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minFilter" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, minFilter}
-
-instance {-# OVERLAPPING #-}
-         HasField "mipmapMode" VkSamplerCreateInfo where
-        type FieldType "mipmapMode" VkSamplerCreateInfo =
-             VkSamplerMipmapMode
-        type FieldOptional "mipmapMode" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mipmapMode" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, mipmapMode}
-        type FieldIsArray "mipmapMode" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, mipmapMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mipmapMode" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, mipmapMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, mipmapMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mipmapMode" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, mipmapMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "addressModeU" VkSamplerCreateInfo where
-        type FieldType "addressModeU" VkSamplerCreateInfo =
-             VkSamplerAddressMode
-        type FieldOptional "addressModeU" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "addressModeU" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, addressModeU}
-        type FieldIsArray "addressModeU" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerCreateInfo, addressModeU}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "addressModeU" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeU})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeU}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "addressModeU" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeU}
-
-instance {-# OVERLAPPING #-}
-         HasField "addressModeV" VkSamplerCreateInfo where
-        type FieldType "addressModeV" VkSamplerCreateInfo =
-             VkSamplerAddressMode
-        type FieldOptional "addressModeV" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "addressModeV" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, addressModeV}
-        type FieldIsArray "addressModeV" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerCreateInfo, addressModeV}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "addressModeV" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeV})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeV}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "addressModeV" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeV}
-
-instance {-# OVERLAPPING #-}
-         HasField "addressModeW" VkSamplerCreateInfo where
-        type FieldType "addressModeW" VkSamplerCreateInfo =
-             VkSamplerAddressMode
-        type FieldOptional "addressModeW" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "addressModeW" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, addressModeW}
-        type FieldIsArray "addressModeW" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerCreateInfo, addressModeW}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "addressModeW" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, addressModeW})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, addressModeW}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "addressModeW" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, addressModeW}
-
-instance {-# OVERLAPPING #-}
-         HasField "mipLodBias" VkSamplerCreateInfo where
-        type FieldType "mipLodBias" VkSamplerCreateInfo =
-             #{type float}
-        type FieldOptional "mipLodBias" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "mipLodBias" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, mipLodBias}
-        type FieldIsArray "mipLodBias" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, mipLodBias}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mipLodBias" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, mipLodBias})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, mipLodBias}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mipLodBias" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, mipLodBias}
-
-instance {-# OVERLAPPING #-}
-         HasField "anisotropyEnable" VkSamplerCreateInfo where
-        type FieldType "anisotropyEnable" VkSamplerCreateInfo = VkBool32
-        type FieldOptional "anisotropyEnable" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "anisotropyEnable" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, anisotropyEnable}
-        type FieldIsArray "anisotropyEnable" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerCreateInfo, anisotropyEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "anisotropyEnable" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, anisotropyEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, anisotropyEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "anisotropyEnable" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, anisotropyEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxAnisotropy" VkSamplerCreateInfo where
-        type FieldType "maxAnisotropy" VkSamplerCreateInfo =
-             #{type float}
-        type FieldOptional "maxAnisotropy" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxAnisotropy" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, maxAnisotropy}
-        type FieldIsArray "maxAnisotropy" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerCreateInfo, maxAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxAnisotropy" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, maxAnisotropy})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, maxAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxAnisotropy" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, maxAnisotropy}
-
-instance {-# OVERLAPPING #-}
-         HasField "compareEnable" VkSamplerCreateInfo where
-        type FieldType "compareEnable" VkSamplerCreateInfo = VkBool32
-        type FieldOptional "compareEnable" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compareEnable" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, compareEnable}
-        type FieldIsArray "compareEnable" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerCreateInfo, compareEnable}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compareEnable" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, compareEnable})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, compareEnable}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compareEnable" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, compareEnable}
-
-instance {-# OVERLAPPING #-}
-         HasField "compareOp" VkSamplerCreateInfo where
-        type FieldType "compareOp" VkSamplerCreateInfo = VkCompareOp
-        type FieldOptional "compareOp" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compareOp" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, compareOp}
-        type FieldIsArray "compareOp" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, compareOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compareOp" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, compareOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, compareOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compareOp" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, compareOp}
-
-instance {-# OVERLAPPING #-} HasField "minLod" VkSamplerCreateInfo
-         where
-        type FieldType "minLod" VkSamplerCreateInfo =
-             #{type float}
-        type FieldOptional "minLod" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minLod" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, minLod}
-        type FieldIsArray "minLod" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, minLod}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minLod" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, minLod})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, minLod}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minLod" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, minLod}
-
-instance {-# OVERLAPPING #-} HasField "maxLod" VkSamplerCreateInfo
-         where
-        type FieldType "maxLod" VkSamplerCreateInfo =
-             #{type float}
-        type FieldOptional "maxLod" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxLod" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, maxLod}
-        type FieldIsArray "maxLod" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSamplerCreateInfo, maxLod}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxLod" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, maxLod})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, maxLod}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxLod" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, maxLod}
-
-instance {-# OVERLAPPING #-}
-         HasField "borderColor" VkSamplerCreateInfo where
-        type FieldType "borderColor" VkSamplerCreateInfo = VkBorderColor
-        type FieldOptional "borderColor" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "borderColor" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, borderColor}
-        type FieldIsArray "borderColor" VkSamplerCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerCreateInfo, borderColor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "borderColor" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, borderColor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, borderColor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "borderColor" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, borderColor}
-
-instance {-# OVERLAPPING #-}
-         HasField "unnormalizedCoordinates" VkSamplerCreateInfo where
-        type FieldType "unnormalizedCoordinates" VkSamplerCreateInfo =
-             VkBool32
-        type FieldOptional "unnormalizedCoordinates" VkSamplerCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "unnormalizedCoordinates" VkSamplerCreateInfo =
-             #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
-        type FieldIsArray "unnormalizedCoordinates" VkSamplerCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "unnormalizedCoordinates" VkSamplerCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerCreateInfo, unnormalizedCoordinates})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "unnormalizedCoordinates" VkSamplerCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
-
-instance Show VkSamplerCreateInfo where
-        showsPrec d x
-          = showString "VkSamplerCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "magFilter = " .
-                                  showsPrec d (getField @"magFilter" x) .
-                                    showString ", " .
-                                      showString "minFilter = " .
-                                        showsPrec d (getField @"minFilter" x) .
-                                          showString ", " .
-                                            showString "mipmapMode = " .
-                                              showsPrec d (getField @"mipmapMode" x) .
-                                                showString ", " .
-                                                  showString "addressModeU = " .
-                                                    showsPrec d (getField @"addressModeU" x) .
-                                                      showString ", " .
-                                                        showString "addressModeV = " .
-                                                          showsPrec d (getField @"addressModeV" x) .
-                                                            showString ", " .
-                                                              showString "addressModeW = " .
-                                                                showsPrec d
-                                                                  (getField @"addressModeW" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "mipLodBias = " .
-                                                                      showsPrec d
-                                                                        (getField @"mipLodBias" x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "anisotropyEnable = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"anisotropyEnable"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "maxAnisotropy = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"maxAnisotropy"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "compareEnable = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"compareEnable"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "compareOp = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"compareOp"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "minLod = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"minLod"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "maxLod = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (getField
-                                                                                                               @"maxLod"
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "borderColor = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (getField
-                                                                                                                     @"borderColor"
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "unnormalizedCoordinates = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (getField
-                                                                                                                           @"unnormalizedCoordinates"
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showChar
-                                                                                                                          '}'
-
--- | > typedef struct VkSamplerReductionModeCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkSamplerReductionModeEXT reductionMode;
---   > } VkSamplerReductionModeCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerReductionModeCreateInfoEXT VkSamplerReductionModeCreateInfoEXT registry at www.khronos.org>
-type VkSamplerReductionModeCreateInfoEXT =
-     VulkanStruct VkSamplerReductionModeCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkSamplerReductionModeCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkSamplerReductionModeCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSamplerReductionModeCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSamplerReductionModeCreateInfoEXT where
-        sizeOf ~_ = #{size VkSamplerReductionModeCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSamplerReductionModeCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSamplerReductionModeCreateInfoEXT where
-        type StructFields VkSamplerReductionModeCreateInfoEXT =
-             '["sType", "pNext", "reductionMode"] -- ' closing tick for hsc2hs
-        type CUnionType VkSamplerReductionModeCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSamplerReductionModeCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSamplerReductionModeCreateInfoEXT =
-             '[VkSamplerCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSamplerReductionModeCreateInfoEXT where
-        type FieldType "sType" VkSamplerReductionModeCreateInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkSamplerReductionModeCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSamplerReductionModeCreateInfoEXT =
-             #{offset VkSamplerReductionModeCreateInfoEXT, sType}
-        type FieldIsArray "sType" VkSamplerReductionModeCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerReductionModeCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSamplerReductionModeCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSamplerReductionModeCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSamplerReductionModeCreateInfoEXT where
-        type FieldType "pNext" VkSamplerReductionModeCreateInfoEXT =
-             Ptr Void
-        type FieldOptional "pNext" VkSamplerReductionModeCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSamplerReductionModeCreateInfoEXT =
-             #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
-        type FieldIsArray "pNext" VkSamplerReductionModeCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSamplerReductionModeCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSamplerReductionModeCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "reductionMode" VkSamplerReductionModeCreateInfoEXT where
-        type FieldType "reductionMode" VkSamplerReductionModeCreateInfoEXT
-             = VkSamplerReductionModeEXT
-        type FieldOptional "reductionMode"
-               VkSamplerReductionModeCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "reductionMode"
-               VkSamplerReductionModeCreateInfoEXT
-             =
-             #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
-        type FieldIsArray "reductionMode"
-               VkSamplerReductionModeCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "reductionMode" VkSamplerReductionModeCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "reductionMode" VkSamplerReductionModeCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
-
-instance Show VkSamplerReductionModeCreateInfoEXT where
-        showsPrec d x
-          = showString "VkSamplerReductionModeCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "reductionMode = " .
-                            showsPrec d (getField @"reductionMode" x) . showChar '}'
-
--- | > typedef struct VkSamplerYcbcrConversionCreateInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkFormat                         format;
---   >     VkSamplerYcbcrModelConversion ycbcrModel;
---   >     VkSamplerYcbcrRange           ycbcrRange;
---   >     VkComponentMapping               components;
---   >     VkChromaLocation              xChromaOffset;
---   >     VkChromaLocation              yChromaOffset;
---   >     VkFilter                         chromaFilter;
---   >     VkBool32                         forceExplicitReconstruction;
---   > } VkSamplerYcbcrConversionCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfo registry at www.khronos.org>
-type VkSamplerYcbcrConversionCreateInfo =
-     VulkanStruct VkSamplerYcbcrConversionCreateInfo' -- ' closing tick for hsc2hs
-
-data VkSamplerYcbcrConversionCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkSamplerYcbcrConversionCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSamplerYcbcrConversionCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSamplerYcbcrConversionCreateInfo where
-        sizeOf ~_ = #{size VkSamplerYcbcrConversionCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSamplerYcbcrConversionCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSamplerYcbcrConversionCreateInfo where
-        type StructFields VkSamplerYcbcrConversionCreateInfo =
-             '["sType", "pNext", "format", "ycbcrModel", "ycbcrRange", -- ' closing tick for hsc2hs
-               "components", "xChromaOffset", "yChromaOffset", "chromaFilter",
-               "forceExplicitReconstruction"]
-        type CUnionType VkSamplerYcbcrConversionCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSamplerYcbcrConversionCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSamplerYcbcrConversionCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "sType" VkSamplerYcbcrConversionCreateInfo =
-             VkStructureType
-        type FieldOptional "sType" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSamplerYcbcrConversionCreateInfo =
-             #{offset VkSamplerYcbcrConversionCreateInfo, sType}
-        type FieldIsArray "sType" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSamplerYcbcrConversionCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSamplerYcbcrConversionCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "pNext" VkSamplerYcbcrConversionCreateInfo =
-             Ptr Void
-        type FieldOptional "pNext" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSamplerYcbcrConversionCreateInfo =
-             #{offset VkSamplerYcbcrConversionCreateInfo, pNext}
-        type FieldIsArray "pNext" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSamplerYcbcrConversionCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSamplerYcbcrConversionCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "format" VkSamplerYcbcrConversionCreateInfo =
-             VkFormat
-        type FieldOptional "format" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkSamplerYcbcrConversionCreateInfo =
-             #{offset VkSamplerYcbcrConversionCreateInfo, format}
-        type FieldIsArray "format" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkSamplerYcbcrConversionCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkSamplerYcbcrConversionCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "ycbcrModel" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "ycbcrModel" VkSamplerYcbcrConversionCreateInfo =
-             VkSamplerYcbcrModelConversion
-        type FieldOptional "ycbcrModel" VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "ycbcrModel" VkSamplerYcbcrConversionCreateInfo =
-             #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrModel}
-        type FieldIsArray "ycbcrModel" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrModel}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ycbcrModel" VkSamplerYcbcrConversionCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrModel})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrModel}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ycbcrModel" VkSamplerYcbcrConversionCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrModel}
-
-instance {-# OVERLAPPING #-}
-         HasField "ycbcrRange" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "ycbcrRange" VkSamplerYcbcrConversionCreateInfo =
-             VkSamplerYcbcrRange
-        type FieldOptional "ycbcrRange" VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "ycbcrRange" VkSamplerYcbcrConversionCreateInfo =
-             #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrRange}
-        type FieldIsArray "ycbcrRange" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrRange}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ycbcrRange" VkSamplerYcbcrConversionCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrRange})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrRange}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ycbcrRange" VkSamplerYcbcrConversionCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrRange}
-
-instance {-# OVERLAPPING #-}
-         HasField "components" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "components" VkSamplerYcbcrConversionCreateInfo =
-             VkComponentMapping
-        type FieldOptional "components" VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "components" VkSamplerYcbcrConversionCreateInfo =
-             #{offset VkSamplerYcbcrConversionCreateInfo, components}
-        type FieldIsArray "components" VkSamplerYcbcrConversionCreateInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, components}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "components" VkSamplerYcbcrConversionCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, components})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, components}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "components" VkSamplerYcbcrConversionCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, components}
-
-instance {-# OVERLAPPING #-}
-         HasField "xChromaOffset" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "xChromaOffset" VkSamplerYcbcrConversionCreateInfo =
-             VkChromaLocation
-        type FieldOptional "xChromaOffset"
-               VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "xChromaOffset" VkSamplerYcbcrConversionCreateInfo
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfo, xChromaOffset}
-        type FieldIsArray "xChromaOffset"
-               VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, xChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "xChromaOffset" VkSamplerYcbcrConversionCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, xChromaOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, xChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "xChromaOffset" VkSamplerYcbcrConversionCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, xChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "yChromaOffset" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "yChromaOffset" VkSamplerYcbcrConversionCreateInfo =
-             VkChromaLocation
-        type FieldOptional "yChromaOffset"
-               VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "yChromaOffset" VkSamplerYcbcrConversionCreateInfo
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfo, yChromaOffset}
-        type FieldIsArray "yChromaOffset"
-               VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, yChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "yChromaOffset" VkSamplerYcbcrConversionCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, yChromaOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, yChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "yChromaOffset" VkSamplerYcbcrConversionCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, yChromaOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "chromaFilter" VkSamplerYcbcrConversionCreateInfo where
-        type FieldType "chromaFilter" VkSamplerYcbcrConversionCreateInfo =
-             VkFilter
-        type FieldOptional "chromaFilter"
-               VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "chromaFilter" VkSamplerYcbcrConversionCreateInfo
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfo, chromaFilter}
-        type FieldIsArray "chromaFilter" VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, chromaFilter}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "chromaFilter" VkSamplerYcbcrConversionCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, chromaFilter})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, chromaFilter}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "chromaFilter" VkSamplerYcbcrConversionCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, chromaFilter}
-
-instance {-# OVERLAPPING #-}
-         HasField "forceExplicitReconstruction"
-           VkSamplerYcbcrConversionCreateInfo
-         where
-        type FieldType "forceExplicitReconstruction"
-               VkSamplerYcbcrConversionCreateInfo
-             = VkBool32
-        type FieldOptional "forceExplicitReconstruction"
-               VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "forceExplicitReconstruction"
-               VkSamplerYcbcrConversionCreateInfo
-             =
-             #{offset VkSamplerYcbcrConversionCreateInfo, forceExplicitReconstruction}
-        type FieldIsArray "forceExplicitReconstruction"
-               VkSamplerYcbcrConversionCreateInfo
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionCreateInfo, forceExplicitReconstruction}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "forceExplicitReconstruction"
-           VkSamplerYcbcrConversionCreateInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionCreateInfo, forceExplicitReconstruction})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, forceExplicitReconstruction}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "forceExplicitReconstruction"
-           VkSamplerYcbcrConversionCreateInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionCreateInfo, forceExplicitReconstruction}
-
-instance Show VkSamplerYcbcrConversionCreateInfo where
-        showsPrec d x
-          = showString "VkSamplerYcbcrConversionCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "format = " .
-                            showsPrec d (getField @"format" x) .
-                              showString ", " .
-                                showString "ycbcrModel = " .
-                                  showsPrec d (getField @"ycbcrModel" x) .
-                                    showString ", " .
-                                      showString "ycbcrRange = " .
-                                        showsPrec d (getField @"ycbcrRange" x) .
-                                          showString ", " .
-                                            showString "components = " .
-                                              showsPrec d (getField @"components" x) .
-                                                showString ", " .
-                                                  showString "xChromaOffset = " .
-                                                    showsPrec d (getField @"xChromaOffset" x) .
-                                                      showString ", " .
-                                                        showString "yChromaOffset = " .
-                                                          showsPrec d (getField @"yChromaOffset" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "chromaFilter = " .
-                                                                showsPrec d
-                                                                  (getField @"chromaFilter" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "forceExplicitReconstruction = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"forceExplicitReconstruction"
-                                                                           x)
-                                                                        . showChar '}'
-
--- | Alias for `VkSamplerYcbcrConversionCreateInfo`
-type VkSamplerYcbcrConversionCreateInfoKHR =
-     VkSamplerYcbcrConversionCreateInfo
-
--- | > typedef struct VkSamplerYcbcrConversionImageFormatProperties {
---   >     VkStructureType sType;
---   >     void*      pNext;
---   >     uint32_t                         combinedImageSamplerDescriptorCount;
---   > } VkSamplerYcbcrConversionImageFormatProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatProperties registry at www.khronos.org>
-type VkSamplerYcbcrConversionImageFormatProperties =
-     VulkanStruct VkSamplerYcbcrConversionImageFormatProperties' -- ' closing tick for hsc2hs
-
-data VkSamplerYcbcrConversionImageFormatProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkSamplerYcbcrConversionImageFormatProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSamplerYcbcrConversionImageFormatProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSamplerYcbcrConversionImageFormatProperties
-         where
-        sizeOf ~_
-          = #{size VkSamplerYcbcrConversionImageFormatProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSamplerYcbcrConversionImageFormatProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal
-           VkSamplerYcbcrConversionImageFormatProperties
-         where
-        type StructFields VkSamplerYcbcrConversionImageFormatProperties =
-             '["sType", "pNext", "combinedImageSamplerDescriptorCount"] -- ' closing tick for hsc2hs
-        type CUnionType VkSamplerYcbcrConversionImageFormatProperties =
-             'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSamplerYcbcrConversionImageFormatProperties =
-             'True -- ' closing tick for hsc2hs
-        type StructExtends VkSamplerYcbcrConversionImageFormatProperties =
-             '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSamplerYcbcrConversionImageFormatProperties
-         where
-        type FieldType "sType"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = VkStructureType
-        type FieldOptional "sType"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType"
-               VkSamplerYcbcrConversionImageFormatProperties
-             =
-             #{offset VkSamplerYcbcrConversionImageFormatProperties, sType}
-        type FieldIsArray "sType"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionImageFormatProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSamplerYcbcrConversionImageFormatProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionImageFormatProperties, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionImageFormatProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSamplerYcbcrConversionImageFormatProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionImageFormatProperties, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSamplerYcbcrConversionImageFormatProperties
-         where
-        type FieldType "pNext"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = Ptr Void
-        type FieldOptional "pNext"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext"
-               VkSamplerYcbcrConversionImageFormatProperties
-             =
-             #{offset VkSamplerYcbcrConversionImageFormatProperties, pNext}
-        type FieldIsArray "pNext"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionImageFormatProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSamplerYcbcrConversionImageFormatProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionImageFormatProperties, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionImageFormatProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSamplerYcbcrConversionImageFormatProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionImageFormatProperties, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "combinedImageSamplerDescriptorCount"
-           VkSamplerYcbcrConversionImageFormatProperties
-         where
-        type FieldType "combinedImageSamplerDescriptorCount"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = Word32
-        type FieldOptional "combinedImageSamplerDescriptorCount"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "combinedImageSamplerDescriptorCount"
-               VkSamplerYcbcrConversionImageFormatProperties
-             =
-             #{offset VkSamplerYcbcrConversionImageFormatProperties, combinedImageSamplerDescriptorCount}
-        type FieldIsArray "combinedImageSamplerDescriptorCount"
-               VkSamplerYcbcrConversionImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionImageFormatProperties, combinedImageSamplerDescriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "combinedImageSamplerDescriptorCount"
-           VkSamplerYcbcrConversionImageFormatProperties
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionImageFormatProperties, combinedImageSamplerDescriptorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionImageFormatProperties, combinedImageSamplerDescriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "combinedImageSamplerDescriptorCount"
-           VkSamplerYcbcrConversionImageFormatProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionImageFormatProperties, combinedImageSamplerDescriptorCount}
-
-instance Show VkSamplerYcbcrConversionImageFormatProperties where
-        showsPrec d x
-          = showString "VkSamplerYcbcrConversionImageFormatProperties {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "combinedImageSamplerDescriptorCount = " .
-                            showsPrec d (getField @"combinedImageSamplerDescriptorCount" x) .
-                              showChar '}'
-
--- | Alias for `VkSamplerYcbcrConversionImageFormatProperties`
-type VkSamplerYcbcrConversionImageFormatPropertiesKHR =
-     VkSamplerYcbcrConversionImageFormatProperties
-
--- | > typedef struct VkSamplerYcbcrConversionInfo {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSamplerYcbcrConversion      conversion;
---   > } VkSamplerYcbcrConversionInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfo registry at www.khronos.org>
-type VkSamplerYcbcrConversionInfo =
-     VulkanStruct VkSamplerYcbcrConversionInfo' -- ' closing tick for hsc2hs
-
-data VkSamplerYcbcrConversionInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkSamplerYcbcrConversionInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSamplerYcbcrConversionInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSamplerYcbcrConversionInfo where
-        sizeOf ~_ = #{size VkSamplerYcbcrConversionInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSamplerYcbcrConversionInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSamplerYcbcrConversionInfo where
-        type StructFields VkSamplerYcbcrConversionInfo =
-             '["sType", "pNext", "conversion"] -- ' closing tick for hsc2hs
-        type CUnionType VkSamplerYcbcrConversionInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSamplerYcbcrConversionInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSamplerYcbcrConversionInfo =
-             '[VkSamplerCreateInfo, VkImageViewCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSamplerYcbcrConversionInfo where
-        type FieldType "sType" VkSamplerYcbcrConversionInfo =
-             VkStructureType
-        type FieldOptional "sType" VkSamplerYcbcrConversionInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSamplerYcbcrConversionInfo =
-             #{offset VkSamplerYcbcrConversionInfo, sType}
-        type FieldIsArray "sType" VkSamplerYcbcrConversionInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSamplerYcbcrConversionInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSamplerYcbcrConversionInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSamplerYcbcrConversionInfo where
-        type FieldType "pNext" VkSamplerYcbcrConversionInfo = Ptr Void
-        type FieldOptional "pNext" VkSamplerYcbcrConversionInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSamplerYcbcrConversionInfo =
-             #{offset VkSamplerYcbcrConversionInfo, pNext}
-        type FieldIsArray "pNext" VkSamplerYcbcrConversionInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSamplerYcbcrConversionInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSamplerYcbcrConversionInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "conversion" VkSamplerYcbcrConversionInfo where
-        type FieldType "conversion" VkSamplerYcbcrConversionInfo =
-             VkSamplerYcbcrConversion
-        type FieldOptional "conversion" VkSamplerYcbcrConversionInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "conversion" VkSamplerYcbcrConversionInfo =
-             #{offset VkSamplerYcbcrConversionInfo, conversion}
-        type FieldIsArray "conversion" VkSamplerYcbcrConversionInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSamplerYcbcrConversionInfo, conversion}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "conversion" VkSamplerYcbcrConversionInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSamplerYcbcrConversionInfo, conversion})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSamplerYcbcrConversionInfo, conversion}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "conversion" VkSamplerYcbcrConversionInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSamplerYcbcrConversionInfo, conversion}
-
-instance Show VkSamplerYcbcrConversionInfo where
-        showsPrec d x
-          = showString "VkSamplerYcbcrConversionInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "conversion = " .
-                            showsPrec d (getField @"conversion" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Sampler
+       (VkSamplerCreateInfo, VkSamplerReductionModeCreateInfoEXT,
+        VkSamplerYcbcrConversionCreateInfo,
+        VkSamplerYcbcrConversionCreateInfoKHR,
+        VkSamplerYcbcrConversionImageFormatProperties,
+        VkSamplerYcbcrConversionImageFormatPropertiesKHR,
+        VkSamplerYcbcrConversionInfo, VkSamplerYcbcrConversionInfoKHR)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes               (VkBool32)
+import Graphics.Vulkan.Types.Bitmasks                (VkSamplerCreateFlags)
+import Graphics.Vulkan.Types.Enum.BorderColor        (VkBorderColor)
+import Graphics.Vulkan.Types.Enum.ChromaLocation     (VkChromaLocation)
+import Graphics.Vulkan.Types.Enum.CompareOp          (VkCompareOp)
+import Graphics.Vulkan.Types.Enum.Filter             (VkFilter)
+import Graphics.Vulkan.Types.Enum.Format             (VkFormat)
+import Graphics.Vulkan.Types.Enum.Sampler            (VkSamplerAddressMode,
+                                                      VkSamplerMipmapMode,
+                                                      VkSamplerReductionModeEXT,
+                                                      VkSamplerYcbcrModelConversion,
+                                                      VkSamplerYcbcrRange)
+import Graphics.Vulkan.Types.Enum.StructureType      (VkStructureType)
+import Graphics.Vulkan.Types.Handles                 (VkSamplerYcbcrConversion)
+import Graphics.Vulkan.Types.Struct.ComponentMapping (VkComponentMapping)
+import Graphics.Vulkan.Types.Struct.Image            (VkImageFormatProperties2,
+                                                      VkImageViewCreateInfo)
+
+-- | > typedef struct VkSamplerCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkSamplerCreateFlags   flags;
+--   >     VkFilter               magFilter;
+--   >     VkFilter               minFilter;
+--   >     VkSamplerMipmapMode    mipmapMode;
+--   >     VkSamplerAddressMode   addressModeU;
+--   >     VkSamplerAddressMode   addressModeV;
+--   >     VkSamplerAddressMode   addressModeW;
+--   >     float                  mipLodBias;
+--   >     VkBool32               anisotropyEnable;
+--   >     float                  maxAnisotropy;
+--   >     VkBool32               compareEnable;
+--   >     VkCompareOp            compareOp;
+--   >     float                  minLod;
+--   >     float                  maxLod;
+--   >     VkBorderColor          borderColor;
+--   >     VkBool32               unnormalizedCoordinates;
+--   > } VkSamplerCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerCreateInfo VkSamplerCreateInfo registry at www.khronos.org>
+type VkSamplerCreateInfo = VkStruct VkSamplerCreateInfo' -- ' closing tick for hsc2hs
+
+data VkSamplerCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSamplerCreateInfo where
+    type StructRep VkSamplerCreateInfo =
+         'StructMeta "VkSamplerCreateInfo" VkSamplerCreateInfo  -- ' closing tick for hsc2hs
+                                                               #{size VkSamplerCreateInfo}
+           #{alignment VkSamplerCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSamplerCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSamplerCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkSamplerCreateFlags 'True 
+                                                            #{offset VkSamplerCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "magFilter" VkFilter 'False 
+                                                     #{offset VkSamplerCreateInfo, magFilter}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minFilter" VkFilter 'False 
+                                                     #{offset VkSamplerCreateInfo, minFilter}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mipmapMode" VkSamplerMipmapMode 'False 
+                                                                 #{offset VkSamplerCreateInfo, mipmapMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "addressModeU" VkSamplerAddressMode 'False 
+                                                                    #{offset VkSamplerCreateInfo, addressModeU}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "addressModeV" VkSamplerAddressMode 'False 
+                                                                    #{offset VkSamplerCreateInfo, addressModeV}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "addressModeW" VkSamplerAddressMode 'False 
+                                                                    #{offset VkSamplerCreateInfo, addressModeW}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "mipLodBias" ( -- ' closing tick for hsc2hs
+                                       #{type float}
+                                       ) 'False -- ' closing tick for hsc2hs
+                #{offset VkSamplerCreateInfo, mipLodBias}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "anisotropyEnable" VkBool32 'False 
+                                                            #{offset VkSamplerCreateInfo, anisotropyEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxAnisotropy" ( -- ' closing tick for hsc2hs
+                                          #{type float}
+                                          ) 'False -- ' closing tick for hsc2hs
+                #{offset VkSamplerCreateInfo, maxAnisotropy}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compareEnable" VkBool32 'False 
+                                                         #{offset VkSamplerCreateInfo, compareEnable}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compareOp" VkCompareOp 'False 
+                                                        #{offset VkSamplerCreateInfo, compareOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minLod" ( -- ' closing tick for hsc2hs
+                                   #{type float}
+                                   ) 'False  -- ' closing tick for hsc2hs
+                                            #{offset VkSamplerCreateInfo, minLod}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxLod" ( -- ' closing tick for hsc2hs
+                                   #{type float}
+                                   ) 'False  -- ' closing tick for hsc2hs
+                                            #{offset VkSamplerCreateInfo, maxLod}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "borderColor" VkBorderColor 'False 
+                                                            #{offset VkSamplerCreateInfo, borderColor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "unnormalizedCoordinates" VkBool32 'False 
+                                                                   #{offset VkSamplerCreateInfo, unnormalizedCoordinates}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSamplerReductionModeCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkSamplerReductionModeEXT reductionMode;
+--   > } VkSamplerReductionModeCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerReductionModeCreateInfoEXT VkSamplerReductionModeCreateInfoEXT registry at www.khronos.org>
+type VkSamplerReductionModeCreateInfoEXT =
+     VkStruct VkSamplerReductionModeCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkSamplerReductionModeCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSamplerReductionModeCreateInfoEXT where
+    type StructRep VkSamplerReductionModeCreateInfoEXT =
+         'StructMeta "VkSamplerReductionModeCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkSamplerReductionModeCreateInfoEXT
+           #{size VkSamplerReductionModeCreateInfoEXT}
+           #{alignment VkSamplerReductionModeCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSamplerReductionModeCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSamplerReductionModeCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "reductionMode" VkSamplerReductionModeEXT 'False
+                #{offset VkSamplerReductionModeCreateInfoEXT, reductionMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSamplerCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSamplerYcbcrConversionCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkFormat                         format;
+--   >     VkSamplerYcbcrModelConversion ycbcrModel;
+--   >     VkSamplerYcbcrRange           ycbcrRange;
+--   >     VkComponentMapping               components;
+--   >     VkChromaLocation              xChromaOffset;
+--   >     VkChromaLocation              yChromaOffset;
+--   >     VkFilter                         chromaFilter;
+--   >     VkBool32                         forceExplicitReconstruction;
+--   > } VkSamplerYcbcrConversionCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfo registry at www.khronos.org>
+type VkSamplerYcbcrConversionCreateInfo =
+     VkStruct VkSamplerYcbcrConversionCreateInfo' -- ' closing tick for hsc2hs
+
+data VkSamplerYcbcrConversionCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSamplerYcbcrConversionCreateInfo where
+    type StructRep VkSamplerYcbcrConversionCreateInfo =
+         'StructMeta "VkSamplerYcbcrConversionCreateInfo" -- ' closing tick for hsc2hs
+           VkSamplerYcbcrConversionCreateInfo
+           #{size VkSamplerYcbcrConversionCreateInfo}
+           #{alignment VkSamplerYcbcrConversionCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSamplerYcbcrConversionCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSamplerYcbcrConversionCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkSamplerYcbcrConversionCreateInfo, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ycbcrModel" VkSamplerYcbcrModelConversion 'False
+                #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrModel}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ycbcrRange" VkSamplerYcbcrRange 'False 
+                                                                 #{offset VkSamplerYcbcrConversionCreateInfo, ycbcrRange}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "components" VkComponentMapping 'False 
+                                                                #{offset VkSamplerYcbcrConversionCreateInfo, components}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "xChromaOffset" VkChromaLocation 'False 
+                                                                 #{offset VkSamplerYcbcrConversionCreateInfo, xChromaOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "yChromaOffset" VkChromaLocation 'False 
+                                                                 #{offset VkSamplerYcbcrConversionCreateInfo, yChromaOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "chromaFilter" VkFilter 'False 
+                                                        #{offset VkSamplerYcbcrConversionCreateInfo, chromaFilter}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "forceExplicitReconstruction" VkBool32 'False 
+                                                                       #{offset VkSamplerYcbcrConversionCreateInfo, forceExplicitReconstruction}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkSamplerYcbcrConversionCreateInfo`
+type VkSamplerYcbcrConversionCreateInfoKHR =
+     VkSamplerYcbcrConversionCreateInfo
+
+-- | > typedef struct VkSamplerYcbcrConversionImageFormatProperties {
+--   >     VkStructureType sType;
+--   >     void*      pNext;
+--   >     uint32_t                         combinedImageSamplerDescriptorCount;
+--   > } VkSamplerYcbcrConversionImageFormatProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatProperties registry at www.khronos.org>
+type VkSamplerYcbcrConversionImageFormatProperties =
+     VkStruct VkSamplerYcbcrConversionImageFormatProperties' -- ' closing tick for hsc2hs
+
+data VkSamplerYcbcrConversionImageFormatProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal
+           VkSamplerYcbcrConversionImageFormatProperties
+         where
+    type StructRep VkSamplerYcbcrConversionImageFormatProperties =
+         'StructMeta "VkSamplerYcbcrConversionImageFormatProperties" -- ' closing tick for hsc2hs
+           VkSamplerYcbcrConversionImageFormatProperties
+           #{size VkSamplerYcbcrConversionImageFormatProperties}
+           #{alignment VkSamplerYcbcrConversionImageFormatProperties}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSamplerYcbcrConversionImageFormatProperties, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSamplerYcbcrConversionImageFormatProperties, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "combinedImageSamplerDescriptorCount" Word32 'False
+                #{offset VkSamplerYcbcrConversionImageFormatProperties, combinedImageSamplerDescriptorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkSamplerYcbcrConversionImageFormatProperties`
+type VkSamplerYcbcrConversionImageFormatPropertiesKHR =
+     VkSamplerYcbcrConversionImageFormatProperties
+
+-- | > typedef struct VkSamplerYcbcrConversionInfo {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSamplerYcbcrConversion      conversion;
+--   > } VkSamplerYcbcrConversionInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfo registry at www.khronos.org>
+type VkSamplerYcbcrConversionInfo =
+     VkStruct VkSamplerYcbcrConversionInfo' -- ' closing tick for hsc2hs
+
+data VkSamplerYcbcrConversionInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSamplerYcbcrConversionInfo where
+    type StructRep VkSamplerYcbcrConversionInfo =
+         'StructMeta "VkSamplerYcbcrConversionInfo" -- ' closing tick for hsc2hs
+           VkSamplerYcbcrConversionInfo
+           #{size VkSamplerYcbcrConversionInfo}
+           #{alignment VkSamplerYcbcrConversionInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSamplerYcbcrConversionInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSamplerYcbcrConversionInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "conversion" VkSamplerYcbcrConversion 'False 
+                                                                      #{offset VkSamplerYcbcrConversionInfo, conversion}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSamplerCreateInfo, VkImageViewCreateInfo] -- ' closing tick for hsc2hs
 
 -- | Alias for `VkSamplerYcbcrConversionInfo`
 type VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Semaphore.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Semaphore.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Semaphore.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Semaphore.hsc
@@ -2,23 +2,17 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Semaphore
-       (VkSemaphoreCreateInfo, VkSemaphoreCreateInfo', -- ' closing tick for hsc2hs
-        VkSemaphoreGetFdInfoKHR, VkSemaphoreGetFdInfoKHR') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
+       (VkSemaphoreCreateInfo, VkSemaphoreGetFdInfoKHR) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks           (VkSemaphoreCreateFlags)
 import Graphics.Vulkan.Types.Enum.External      (VkExternalSemaphoreHandleTypeFlagBits)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Handles            (VkSemaphore)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSemaphoreCreateInfo {
 --   >     VkStructureType sType;
@@ -27,146 +21,33 @@
 --   > } VkSemaphoreCreateInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSemaphoreCreateInfo VkSemaphoreCreateInfo registry at www.khronos.org>
-type VkSemaphoreCreateInfo = VulkanStruct VkSemaphoreCreateInfo' -- ' closing tick for hsc2hs
+type VkSemaphoreCreateInfo = VkStruct VkSemaphoreCreateInfo' -- ' closing tick for hsc2hs
 
 data VkSemaphoreCreateInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkSemaphoreCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSemaphoreCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSemaphoreCreateInfo where
-        sizeOf ~_ = #{size VkSemaphoreCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSemaphoreCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSemaphoreCreateInfo where
-        type StructFields VkSemaphoreCreateInfo =
-             '["sType", "pNext", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSemaphoreCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkSemaphoreCreateInfo
-         where
-        type FieldType "sType" VkSemaphoreCreateInfo = VkStructureType
-        type FieldOptional "sType" VkSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSemaphoreCreateInfo =
-             #{offset VkSemaphoreCreateInfo, sType}
-        type FieldIsArray "sType" VkSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSemaphoreCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSemaphoreCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSemaphoreCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreCreateInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkSemaphoreCreateInfo
-         where
-        type FieldType "pNext" VkSemaphoreCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSemaphoreCreateInfo =
-             #{offset VkSemaphoreCreateInfo, pNext}
-        type FieldIsArray "pNext" VkSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSemaphoreCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSemaphoreCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSemaphoreCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkSemaphoreCreateInfo
-         where
-        type FieldType "flags" VkSemaphoreCreateInfo =
-             VkSemaphoreCreateFlags
-        type FieldOptional "flags" VkSemaphoreCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkSemaphoreCreateInfo =
-             #{offset VkSemaphoreCreateInfo, flags}
-        type FieldIsArray "flags" VkSemaphoreCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSemaphoreCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkSemaphoreCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkSemaphoreCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreCreateInfo, flags}
-
-instance Show VkSemaphoreCreateInfo where
-        showsPrec d x
-          = showString "VkSemaphoreCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) . showChar '}'
+    type StructRep VkSemaphoreCreateInfo =
+         'StructMeta "VkSemaphoreCreateInfo" VkSemaphoreCreateInfo  -- ' closing tick for hsc2hs
+                                                                   #{size VkSemaphoreCreateInfo}
+           #{alignment VkSemaphoreCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSemaphoreCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSemaphoreCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkSemaphoreCreateFlags 'True 
+                                                              #{offset VkSemaphoreCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkSemaphoreGetFdInfoKHR {
 --   >     VkStructureType sType;
@@ -176,180 +57,36 @@
 --   > } VkSemaphoreGetFdInfoKHR;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSemaphoreGetFdInfoKHR VkSemaphoreGetFdInfoKHR registry at www.khronos.org>
-type VkSemaphoreGetFdInfoKHR =
-     VulkanStruct VkSemaphoreGetFdInfoKHR' -- ' closing tick for hsc2hs
+type VkSemaphoreGetFdInfoKHR = VkStruct VkSemaphoreGetFdInfoKHR' -- ' closing tick for hsc2hs
 
 data VkSemaphoreGetFdInfoKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkSemaphoreGetFdInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSemaphoreGetFdInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSemaphoreGetFdInfoKHR where
-        sizeOf ~_ = #{size VkSemaphoreGetFdInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSemaphoreGetFdInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSemaphoreGetFdInfoKHR where
-        type StructFields VkSemaphoreGetFdInfoKHR =
-             '["sType", "pNext", "semaphore", "handleType"] -- ' closing tick for hsc2hs
-        type CUnionType VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSemaphoreGetFdInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSemaphoreGetFdInfoKHR where
-        type FieldType "sType" VkSemaphoreGetFdInfoKHR = VkStructureType
-        type FieldOptional "sType" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSemaphoreGetFdInfoKHR =
-             #{offset VkSemaphoreGetFdInfoKHR, sType}
-        type FieldIsArray "sType" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSemaphoreGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSemaphoreGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSemaphoreGetFdInfoKHR where
-        type FieldType "pNext" VkSemaphoreGetFdInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSemaphoreGetFdInfoKHR =
-             #{offset VkSemaphoreGetFdInfoKHR, pNext}
-        type FieldIsArray "pNext" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSemaphoreGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSemaphoreGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "semaphore" VkSemaphoreGetFdInfoKHR where
-        type FieldType "semaphore" VkSemaphoreGetFdInfoKHR = VkSemaphore
-        type FieldOptional "semaphore" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "semaphore" VkSemaphoreGetFdInfoKHR =
-             #{offset VkSemaphoreGetFdInfoKHR, semaphore}
-        type FieldIsArray "semaphore" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSemaphoreGetFdInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "semaphore" VkSemaphoreGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, semaphore})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "semaphore" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, semaphore}
-
-instance {-# OVERLAPPING #-}
-         HasField "handleType" VkSemaphoreGetFdInfoKHR where
-        type FieldType "handleType" VkSemaphoreGetFdInfoKHR =
-             VkExternalSemaphoreHandleTypeFlagBits
-        type FieldOptional "handleType" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "handleType" VkSemaphoreGetFdInfoKHR =
-             #{offset VkSemaphoreGetFdInfoKHR, handleType}
-        type FieldIsArray "handleType" VkSemaphoreGetFdInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSemaphoreGetFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "handleType" VkSemaphoreGetFdInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSemaphoreGetFdInfoKHR, handleType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSemaphoreGetFdInfoKHR, handleType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "handleType" VkSemaphoreGetFdInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSemaphoreGetFdInfoKHR, handleType}
-
-instance Show VkSemaphoreGetFdInfoKHR where
-        showsPrec d x
-          = showString "VkSemaphoreGetFdInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "semaphore = " .
-                            showsPrec d (getField @"semaphore" x) .
-                              showString ", " .
-                                showString "handleType = " .
-                                  showsPrec d (getField @"handleType" x) . showChar '}'
+    type StructRep VkSemaphoreGetFdInfoKHR =
+         'StructMeta "VkSemaphoreGetFdInfoKHR" VkSemaphoreGetFdInfoKHR -- ' closing tick for hsc2hs
+           #{size VkSemaphoreGetFdInfoKHR}
+           #{alignment VkSemaphoreGetFdInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSemaphoreGetFdInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSemaphoreGetFdInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "semaphore" VkSemaphore 'False 
+                                                        #{offset VkSemaphoreGetFdInfoKHR, semaphore}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "handleType" VkExternalSemaphoreHandleTypeFlagBits -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkSemaphoreGetFdInfoKHR, handleType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Shader.hsc
@@ -1,1030 +1,210 @@
 #include "vulkan/vulkan.h"
 
 {-# LANGUAGE DataKinds             #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternSynonyms       #-}
-{-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-{-# LANGUAGE UndecidableInstances  #-}
-module Graphics.Vulkan.Types.Struct.Shader
-       (VkShaderModuleCreateInfo, VkShaderModuleCreateInfo', -- ' closing tick for hsc2hs
-        VkShaderModuleValidationCacheCreateInfoEXT,
-        VkShaderModuleValidationCacheCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkShaderResourceUsageAMD, VkShaderResourceUsageAMD', -- ' closing tick for hsc2hs
-        VkShaderStatisticsInfoAMD, VkShaderStatisticsInfoAMD') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.Bitmasks           (VkShaderModuleCreateFlags)
-import Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkValidationCacheEXT)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkShaderModuleCreateInfo {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkShaderModuleCreateFlags flags;
---   >     size_t                 codeSize;
---   >     const uint32_t*            pCode;
---   > } VkShaderModuleCreateInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderModuleCreateInfo VkShaderModuleCreateInfo registry at www.khronos.org>
-type VkShaderModuleCreateInfo =
-     VulkanStruct VkShaderModuleCreateInfo' -- ' closing tick for hsc2hs
-
-data VkShaderModuleCreateInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkShaderModuleCreateInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkShaderModuleCreateInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkShaderModuleCreateInfo where
-        sizeOf ~_ = #{size VkShaderModuleCreateInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkShaderModuleCreateInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkShaderModuleCreateInfo where
-        type StructFields VkShaderModuleCreateInfo =
-             '["sType", "pNext", "flags", "codeSize", "pCode"] -- ' closing tick for hsc2hs
-        type CUnionType VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkShaderModuleCreateInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkShaderModuleCreateInfo where
-        type FieldType "sType" VkShaderModuleCreateInfo = VkStructureType
-        type FieldOptional "sType" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkShaderModuleCreateInfo =
-             #{offset VkShaderModuleCreateInfo, sType}
-        type FieldIsArray "sType" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkShaderModuleCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkShaderModuleCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkShaderModuleCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkShaderModuleCreateInfo where
-        type FieldType "pNext" VkShaderModuleCreateInfo = Ptr Void
-        type FieldOptional "pNext" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkShaderModuleCreateInfo =
-             #{offset VkShaderModuleCreateInfo, pNext}
-        type FieldIsArray "pNext" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkShaderModuleCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkShaderModuleCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkShaderModuleCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkShaderModuleCreateInfo where
-        type FieldType "flags" VkShaderModuleCreateInfo =
-             VkShaderModuleCreateFlags
-        type FieldOptional "flags" VkShaderModuleCreateInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkShaderModuleCreateInfo =
-             #{offset VkShaderModuleCreateInfo, flags}
-        type FieldIsArray "flags" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkShaderModuleCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkShaderModuleCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkShaderModuleCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "codeSize" VkShaderModuleCreateInfo where
-        type FieldType "codeSize" VkShaderModuleCreateInfo = CSize
-        type FieldOptional "codeSize" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "codeSize" VkShaderModuleCreateInfo =
-             #{offset VkShaderModuleCreateInfo, codeSize}
-        type FieldIsArray "codeSize" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderModuleCreateInfo, codeSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "codeSize" VkShaderModuleCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, codeSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, codeSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "codeSize" VkShaderModuleCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, codeSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "pCode" VkShaderModuleCreateInfo where
-        type FieldType "pCode" VkShaderModuleCreateInfo = Ptr Word32
-        type FieldOptional "pCode" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pCode" VkShaderModuleCreateInfo =
-             #{offset VkShaderModuleCreateInfo, pCode}
-        type FieldIsArray "pCode" VkShaderModuleCreateInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkShaderModuleCreateInfo, pCode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pCode" VkShaderModuleCreateInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleCreateInfo, pCode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderModuleCreateInfo, pCode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pCode" VkShaderModuleCreateInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderModuleCreateInfo, pCode}
-
-instance Show VkShaderModuleCreateInfo where
-        showsPrec d x
-          = showString "VkShaderModuleCreateInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "codeSize = " .
-                                  showsPrec d (getField @"codeSize" x) .
-                                    showString ", " .
-                                      showString "pCode = " .
-                                        showsPrec d (getField @"pCode" x) . showChar '}'
-
--- | > typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*            pNext;
---   >     VkValidationCacheEXT    validationCache;
---   > } VkShaderModuleValidationCacheCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderModuleValidationCacheCreateInfoEXT VkShaderModuleValidationCacheCreateInfoEXT registry at www.khronos.org>
-type VkShaderModuleValidationCacheCreateInfoEXT =
-     VulkanStruct VkShaderModuleValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkShaderModuleValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkShaderModuleValidationCacheCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkShaderModuleValidationCacheCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkShaderModuleValidationCacheCreateInfoEXT where
-        sizeOf ~_
-          = #{size VkShaderModuleValidationCacheCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkShaderModuleValidationCacheCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        type StructFields VkShaderModuleValidationCacheCreateInfoEXT =
-             '["sType", "pNext", "validationCache"] -- ' closing tick for hsc2hs
-        type CUnionType VkShaderModuleValidationCacheCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkShaderModuleValidationCacheCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkShaderModuleValidationCacheCreateInfoEXT =
-             '[VkShaderModuleCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkShaderModuleValidationCacheCreateInfoEXT where
-        type FieldType "sType" VkShaderModuleValidationCacheCreateInfoEXT =
-             VkStructureType
-        type FieldOptional "sType"
-               VkShaderModuleValidationCacheCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkShaderModuleValidationCacheCreateInfoEXT
-             =
-             #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
-        type FieldIsArray "sType"
-               VkShaderModuleValidationCacheCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkShaderModuleValidationCacheCreateInfoEXT where
-        type FieldType "pNext" VkShaderModuleValidationCacheCreateInfoEXT =
-             Ptr Void
-        type FieldOptional "pNext"
-               VkShaderModuleValidationCacheCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkShaderModuleValidationCacheCreateInfoEXT
-             =
-             #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
-        type FieldIsArray "pNext"
-               VkShaderModuleValidationCacheCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "validationCache"
-           VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        type FieldType "validationCache"
-               VkShaderModuleValidationCacheCreateInfoEXT
-             = VkValidationCacheEXT
-        type FieldOptional "validationCache"
-               VkShaderModuleValidationCacheCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "validationCache"
-               VkShaderModuleValidationCacheCreateInfoEXT
-             =
-             #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
-        type FieldIsArray "validationCache"
-               VkShaderModuleValidationCacheCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "validationCache"
-           VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "validationCache"
-           VkShaderModuleValidationCacheCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
-
-instance Show VkShaderModuleValidationCacheCreateInfoEXT where
-        showsPrec d x
-          = showString "VkShaderModuleValidationCacheCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "validationCache = " .
-                            showsPrec d (getField @"validationCache" x) . showChar '}'
-
--- | > typedef struct VkShaderResourceUsageAMD {
---   >     uint32_t numUsedVgprs;
---   >     uint32_t numUsedSgprs;
---   >     uint32_t ldsSizePerLocalWorkGroup;
---   >     size_t ldsUsageSizeInBytes;
---   >     size_t scratchMemUsageInBytes;
---   > } VkShaderResourceUsageAMD;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderResourceUsageAMD VkShaderResourceUsageAMD registry at www.khronos.org>
-type VkShaderResourceUsageAMD =
-     VulkanStruct VkShaderResourceUsageAMD' -- ' closing tick for hsc2hs
-
-data VkShaderResourceUsageAMD' -- ' closing tick for hsc2hs
-
-instance Eq VkShaderResourceUsageAMD where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkShaderResourceUsageAMD where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkShaderResourceUsageAMD where
-        sizeOf ~_ = #{size VkShaderResourceUsageAMD}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkShaderResourceUsageAMD}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkShaderResourceUsageAMD where
-        type StructFields VkShaderResourceUsageAMD =
-             '["numUsedVgprs", "numUsedSgprs", "ldsSizePerLocalWorkGroup", -- ' closing tick for hsc2hs
-               "ldsUsageSizeInBytes", "scratchMemUsageInBytes"]
-        type CUnionType VkShaderResourceUsageAMD = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkShaderResourceUsageAMD = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkShaderResourceUsageAMD = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "numUsedVgprs" VkShaderResourceUsageAMD where
-        type FieldType "numUsedVgprs" VkShaderResourceUsageAMD = Word32
-        type FieldOptional "numUsedVgprs" VkShaderResourceUsageAMD = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "numUsedVgprs" VkShaderResourceUsageAMD =
-             #{offset VkShaderResourceUsageAMD, numUsedVgprs}
-        type FieldIsArray "numUsedVgprs" VkShaderResourceUsageAMD = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderResourceUsageAMD, numUsedVgprs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "numUsedVgprs" VkShaderResourceUsageAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, numUsedVgprs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, numUsedVgprs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "numUsedVgprs" VkShaderResourceUsageAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, numUsedVgprs}
-
-instance {-# OVERLAPPING #-}
-         HasField "numUsedSgprs" VkShaderResourceUsageAMD where
-        type FieldType "numUsedSgprs" VkShaderResourceUsageAMD = Word32
-        type FieldOptional "numUsedSgprs" VkShaderResourceUsageAMD = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "numUsedSgprs" VkShaderResourceUsageAMD =
-             #{offset VkShaderResourceUsageAMD, numUsedSgprs}
-        type FieldIsArray "numUsedSgprs" VkShaderResourceUsageAMD = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderResourceUsageAMD, numUsedSgprs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "numUsedSgprs" VkShaderResourceUsageAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, numUsedSgprs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, numUsedSgprs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "numUsedSgprs" VkShaderResourceUsageAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, numUsedSgprs}
-
-instance {-# OVERLAPPING #-}
-         HasField "ldsSizePerLocalWorkGroup" VkShaderResourceUsageAMD where
-        type FieldType "ldsSizePerLocalWorkGroup" VkShaderResourceUsageAMD
-             = Word32
-        type FieldOptional "ldsSizePerLocalWorkGroup"
-               VkShaderResourceUsageAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "ldsSizePerLocalWorkGroup"
-               VkShaderResourceUsageAMD
-             =
-             #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
-        type FieldIsArray "ldsSizePerLocalWorkGroup"
-               VkShaderResourceUsageAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ldsSizePerLocalWorkGroup" VkShaderResourceUsageAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ldsSizePerLocalWorkGroup" VkShaderResourceUsageAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
-
-instance {-# OVERLAPPING #-}
-         HasField "ldsUsageSizeInBytes" VkShaderResourceUsageAMD where
-        type FieldType "ldsUsageSizeInBytes" VkShaderResourceUsageAMD =
-             CSize
-        type FieldOptional "ldsUsageSizeInBytes" VkShaderResourceUsageAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "ldsUsageSizeInBytes" VkShaderResourceUsageAMD =
-             #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
-        type FieldIsArray "ldsUsageSizeInBytes" VkShaderResourceUsageAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ldsUsageSizeInBytes" VkShaderResourceUsageAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ldsUsageSizeInBytes" VkShaderResourceUsageAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
-
-instance {-# OVERLAPPING #-}
-         HasField "scratchMemUsageInBytes" VkShaderResourceUsageAMD where
-        type FieldType "scratchMemUsageInBytes" VkShaderResourceUsageAMD =
-             CSize
-        type FieldOptional "scratchMemUsageInBytes"
-               VkShaderResourceUsageAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "scratchMemUsageInBytes" VkShaderResourceUsageAMD
-             =
-             #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
-        type FieldIsArray "scratchMemUsageInBytes" VkShaderResourceUsageAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "scratchMemUsageInBytes" VkShaderResourceUsageAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "scratchMemUsageInBytes" VkShaderResourceUsageAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
-
-instance Show VkShaderResourceUsageAMD where
-        showsPrec d x
-          = showString "VkShaderResourceUsageAMD {" .
-              showString "numUsedVgprs = " .
-                showsPrec d (getField @"numUsedVgprs" x) .
-                  showString ", " .
-                    showString "numUsedSgprs = " .
-                      showsPrec d (getField @"numUsedSgprs" x) .
-                        showString ", " .
-                          showString "ldsSizePerLocalWorkGroup = " .
-                            showsPrec d (getField @"ldsSizePerLocalWorkGroup" x) .
-                              showString ", " .
-                                showString "ldsUsageSizeInBytes = " .
-                                  showsPrec d (getField @"ldsUsageSizeInBytes" x) .
-                                    showString ", " .
-                                      showString "scratchMemUsageInBytes = " .
-                                        showsPrec d (getField @"scratchMemUsageInBytes" x) .
-                                          showChar '}'
-
--- | > typedef struct VkShaderStatisticsInfoAMD {
---   >     VkShaderStageFlags shaderStageMask;
---   >     VkShaderResourceUsageAMD resourceUsage;
---   >     uint32_t numPhysicalVgprs;
---   >     uint32_t numPhysicalSgprs;
---   >     uint32_t numAvailableVgprs;
---   >     uint32_t numAvailableSgprs;
---   >     uint32_t computeWorkGroupSize[3];
---   > } VkShaderStatisticsInfoAMD;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderStatisticsInfoAMD VkShaderStatisticsInfoAMD registry at www.khronos.org>
-type VkShaderStatisticsInfoAMD =
-     VulkanStruct VkShaderStatisticsInfoAMD' -- ' closing tick for hsc2hs
-
-data VkShaderStatisticsInfoAMD' -- ' closing tick for hsc2hs
-
-instance Eq VkShaderStatisticsInfoAMD where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkShaderStatisticsInfoAMD where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkShaderStatisticsInfoAMD where
-        sizeOf ~_ = #{size VkShaderStatisticsInfoAMD}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkShaderStatisticsInfoAMD}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkShaderStatisticsInfoAMD where
-        type StructFields VkShaderStatisticsInfoAMD =
-             '["shaderStageMask", "resourceUsage", "numPhysicalVgprs", -- ' closing tick for hsc2hs
-               "numPhysicalSgprs", "numAvailableVgprs", "numAvailableSgprs",
-               "computeWorkGroupSize"]
-        type CUnionType VkShaderStatisticsInfoAMD = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkShaderStatisticsInfoAMD = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkShaderStatisticsInfoAMD = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "shaderStageMask" VkShaderStatisticsInfoAMD where
-        type FieldType "shaderStageMask" VkShaderStatisticsInfoAMD =
-             VkShaderStageFlags
-        type FieldOptional "shaderStageMask" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "shaderStageMask" VkShaderStatisticsInfoAMD =
-             #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
-        type FieldIsArray "shaderStageMask" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "shaderStageMask" VkShaderStatisticsInfoAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, shaderStageMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "shaderStageMask" VkShaderStatisticsInfoAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "resourceUsage" VkShaderStatisticsInfoAMD where
-        type FieldType "resourceUsage" VkShaderStatisticsInfoAMD =
-             VkShaderResourceUsageAMD
-        type FieldOptional "resourceUsage" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "resourceUsage" VkShaderStatisticsInfoAMD =
-             #{offset VkShaderStatisticsInfoAMD, resourceUsage}
-        type FieldIsArray "resourceUsage" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderStatisticsInfoAMD, resourceUsage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "resourceUsage" VkShaderStatisticsInfoAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, resourceUsage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, resourceUsage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "resourceUsage" VkShaderStatisticsInfoAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, resourceUsage}
-
-instance {-# OVERLAPPING #-}
-         HasField "numPhysicalVgprs" VkShaderStatisticsInfoAMD where
-        type FieldType "numPhysicalVgprs" VkShaderStatisticsInfoAMD =
-             Word32
-        type FieldOptional "numPhysicalVgprs" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "numPhysicalVgprs" VkShaderStatisticsInfoAMD =
-             #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
-        type FieldIsArray "numPhysicalVgprs" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "numPhysicalVgprs" VkShaderStatisticsInfoAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "numPhysicalVgprs" VkShaderStatisticsInfoAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
-
-instance {-# OVERLAPPING #-}
-         HasField "numPhysicalSgprs" VkShaderStatisticsInfoAMD where
-        type FieldType "numPhysicalSgprs" VkShaderStatisticsInfoAMD =
-             Word32
-        type FieldOptional "numPhysicalSgprs" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "numPhysicalSgprs" VkShaderStatisticsInfoAMD =
-             #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
-        type FieldIsArray "numPhysicalSgprs" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "numPhysicalSgprs" VkShaderStatisticsInfoAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "numPhysicalSgprs" VkShaderStatisticsInfoAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
-
-instance {-# OVERLAPPING #-}
-         HasField "numAvailableVgprs" VkShaderStatisticsInfoAMD where
-        type FieldType "numAvailableVgprs" VkShaderStatisticsInfoAMD =
-             Word32
-        type FieldOptional "numAvailableVgprs" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "numAvailableVgprs" VkShaderStatisticsInfoAMD =
-             #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
-        type FieldIsArray "numAvailableVgprs" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "numAvailableVgprs" VkShaderStatisticsInfoAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "numAvailableVgprs" VkShaderStatisticsInfoAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
-
-instance {-# OVERLAPPING #-}
-         HasField "numAvailableSgprs" VkShaderStatisticsInfoAMD where
-        type FieldType "numAvailableSgprs" VkShaderStatisticsInfoAMD =
-             Word32
-        type FieldOptional "numAvailableSgprs" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "numAvailableSgprs" VkShaderStatisticsInfoAMD =
-             #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
-        type FieldIsArray "numAvailableSgprs" VkShaderStatisticsInfoAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "numAvailableSgprs" VkShaderStatisticsInfoAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "numAvailableSgprs" VkShaderStatisticsInfoAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
-
-instance {-# OVERLAPPING #-}
-         HasField "computeWorkGroupSize" VkShaderStatisticsInfoAMD where
-        type FieldType "computeWorkGroupSize" VkShaderStatisticsInfoAMD =
-             Word32
-        type FieldOptional "computeWorkGroupSize" VkShaderStatisticsInfoAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "computeWorkGroupSize" VkShaderStatisticsInfoAMD =
-             #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
-        type FieldIsArray "computeWorkGroupSize" VkShaderStatisticsInfoAMD
-             = 'True -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadFieldArray "computeWorkGroupSize" VkShaderStatisticsInfoAMD
-         where
-        type FieldArrayLength "computeWorkGroupSize"
-               VkShaderStatisticsInfoAMD
-             = 3
-
-        {-# INLINE fieldArrayLength #-}
-        fieldArrayLength = 3
-
-        {-# INLINE getFieldArrayUnsafe #-}
-        getFieldArrayUnsafe i = f
-          where {-# NOINLINE f #-}
-                f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
-                off
-                  = #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
-                      + sizeOf (undefined :: Word32) * i
-
-        {-# INLINE readFieldArrayUnsafe #-}
-        readFieldArrayUnsafe i p
-          = peekByteOff p
-              (#{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance {-# OVERLAPPING #-}
-         CanWriteFieldArray "computeWorkGroupSize" VkShaderStatisticsInfoAMD
-         where
-        {-# INLINE writeFieldArrayUnsafe #-}
-        writeFieldArrayUnsafe i p
-          = pokeByteOff p
-              (#{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
-                 + sizeOf (undefined :: Word32) * i)
-
-instance Show VkShaderStatisticsInfoAMD where
-        showsPrec d x
-          = showString "VkShaderStatisticsInfoAMD {" .
-              showString "shaderStageMask = " .
-                showsPrec d (getField @"shaderStageMask" x) .
-                  showString ", " .
-                    showString "resourceUsage = " .
-                      showsPrec d (getField @"resourceUsage" x) .
-                        showString ", " .
-                          showString "numPhysicalVgprs = " .
-                            showsPrec d (getField @"numPhysicalVgprs" x) .
-                              showString ", " .
-                                showString "numPhysicalSgprs = " .
-                                  showsPrec d (getField @"numPhysicalSgprs" x) .
-                                    showString ", " .
-                                      showString "numAvailableVgprs = " .
-                                        showsPrec d (getField @"numAvailableVgprs" x) .
-                                          showString ", " .
-                                            showString "numAvailableSgprs = " .
-                                              showsPrec d (getField @"numAvailableSgprs" x) .
-                                                showString ", " .
-                                                  (showString "computeWorkGroupSize = [" .
-                                                     showsPrec d
-                                                       (let s = sizeOf
-                                                                  (undefined ::
-                                                                     FieldType
-                                                                       "computeWorkGroupSize"
-                                                                       VkShaderStatisticsInfoAMD)
-                                                            o = fieldOffset @"computeWorkGroupSize"
-                                                                  @VkShaderStatisticsInfoAMD
-                                                            f i
-                                                              = peekByteOff (unsafePtr x) i ::
-                                                                  IO
-                                                                    (FieldType
-                                                                       "computeWorkGroupSize"
-                                                                       VkShaderStatisticsInfoAMD)
-                                                          in
-                                                          unsafeDupablePerformIO . mapM f $
-                                                            map (\ i -> o + i * s) [0 .. 3 - 1])
-                                                       . showChar ']')
-                                                    . showChar '}'
+{-# LANGUAGE FlexibleInstances     #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Shader
+       (VkShaderModuleCreateInfo,
+        VkShaderModuleValidationCacheCreateInfoEXT,
+        VkShaderResourceUsageAMD, VkShaderStatisticsInfoAMD)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.Bitmasks           (VkShaderModuleCreateFlags)
+import Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkValidationCacheEXT)
+
+-- | > typedef struct VkShaderModuleCreateInfo {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkShaderModuleCreateFlags flags;
+--   >     size_t                 codeSize;
+--   >     const uint32_t*            pCode;
+--   > } VkShaderModuleCreateInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderModuleCreateInfo VkShaderModuleCreateInfo registry at www.khronos.org>
+type VkShaderModuleCreateInfo = VkStruct VkShaderModuleCreateInfo' -- ' closing tick for hsc2hs
+
+data VkShaderModuleCreateInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkShaderModuleCreateInfo where
+    type StructRep VkShaderModuleCreateInfo =
+         'StructMeta "VkShaderModuleCreateInfo" VkShaderModuleCreateInfo -- ' closing tick for hsc2hs
+           #{size VkShaderModuleCreateInfo}
+           #{alignment VkShaderModuleCreateInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkShaderModuleCreateInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkShaderModuleCreateInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkShaderModuleCreateFlags 'True 
+                                                                 #{offset VkShaderModuleCreateInfo, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "codeSize" CSize 'False 
+                                                 #{offset VkShaderModuleCreateInfo, codeSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pCode" (Ptr Word32) 'False 
+                                                     #{offset VkShaderModuleCreateInfo, pCode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*            pNext;
+--   >     VkValidationCacheEXT    validationCache;
+--   > } VkShaderModuleValidationCacheCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderModuleValidationCacheCreateInfoEXT VkShaderModuleValidationCacheCreateInfoEXT registry at www.khronos.org>
+type VkShaderModuleValidationCacheCreateInfoEXT =
+     VkStruct VkShaderModuleValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkShaderModuleValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkShaderModuleValidationCacheCreateInfoEXT
+         where
+    type StructRep VkShaderModuleValidationCacheCreateInfoEXT =
+         'StructMeta "VkShaderModuleValidationCacheCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkShaderModuleValidationCacheCreateInfoEXT
+           #{size VkShaderModuleValidationCacheCreateInfoEXT}
+           #{alignment VkShaderModuleValidationCacheCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkShaderModuleValidationCacheCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkShaderModuleValidationCacheCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "validationCache" VkValidationCacheEXT 'False 
+                                                                       #{offset VkShaderModuleValidationCacheCreateInfoEXT, validationCache}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkShaderModuleCreateInfo] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkShaderResourceUsageAMD {
+--   >     uint32_t numUsedVgprs;
+--   >     uint32_t numUsedSgprs;
+--   >     uint32_t ldsSizePerLocalWorkGroup;
+--   >     size_t ldsUsageSizeInBytes;
+--   >     size_t scratchMemUsageInBytes;
+--   > } VkShaderResourceUsageAMD;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderResourceUsageAMD VkShaderResourceUsageAMD registry at www.khronos.org>
+type VkShaderResourceUsageAMD = VkStruct VkShaderResourceUsageAMD' -- ' closing tick for hsc2hs
+
+data VkShaderResourceUsageAMD' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkShaderResourceUsageAMD where
+    type StructRep VkShaderResourceUsageAMD =
+         'StructMeta "VkShaderResourceUsageAMD" VkShaderResourceUsageAMD -- ' closing tick for hsc2hs
+           #{size VkShaderResourceUsageAMD}
+           #{alignment VkShaderResourceUsageAMD}
+           '[('FieldMeta "numUsedVgprs" Word32 'False  -- ' closing tick for hsc2hs
+                                                      #{offset VkShaderResourceUsageAMD, numUsedVgprs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "numUsedSgprs" Word32 'False 
+                                                      #{offset VkShaderResourceUsageAMD, numUsedSgprs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ldsSizePerLocalWorkGroup" Word32 'False 
+                                                                  #{offset VkShaderResourceUsageAMD, ldsSizePerLocalWorkGroup}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ldsUsageSizeInBytes" CSize 'False 
+                                                            #{offset VkShaderResourceUsageAMD, ldsUsageSizeInBytes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "scratchMemUsageInBytes" CSize 'False 
+                                                               #{offset VkShaderResourceUsageAMD, scratchMemUsageInBytes}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkShaderStatisticsInfoAMD {
+--   >     VkShaderStageFlags shaderStageMask;
+--   >     VkShaderResourceUsageAMD resourceUsage;
+--   >     uint32_t numPhysicalVgprs;
+--   >     uint32_t numPhysicalSgprs;
+--   >     uint32_t numAvailableVgprs;
+--   >     uint32_t numAvailableSgprs;
+--   >     uint32_t computeWorkGroupSize[3];
+--   > } VkShaderStatisticsInfoAMD;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkShaderStatisticsInfoAMD VkShaderStatisticsInfoAMD registry at www.khronos.org>
+type VkShaderStatisticsInfoAMD =
+     VkStruct VkShaderStatisticsInfoAMD' -- ' closing tick for hsc2hs
+
+data VkShaderStatisticsInfoAMD' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkShaderStatisticsInfoAMD where
+    type StructRep VkShaderStatisticsInfoAMD =
+         'StructMeta "VkShaderStatisticsInfoAMD" VkShaderStatisticsInfoAMD -- ' closing tick for hsc2hs
+           #{size VkShaderStatisticsInfoAMD}
+           #{alignment VkShaderStatisticsInfoAMD}
+           '[('FieldMeta "shaderStageMask" VkShaderStageFlags 'False  -- ' closing tick for hsc2hs
+                                                                     #{offset VkShaderStatisticsInfoAMD, shaderStageMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "resourceUsage" VkShaderResourceUsageAMD 'False
+                #{offset VkShaderStatisticsInfoAMD, resourceUsage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "numPhysicalVgprs" Word32 'False 
+                                                          #{offset VkShaderStatisticsInfoAMD, numPhysicalVgprs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "numPhysicalSgprs" Word32 'False 
+                                                          #{offset VkShaderStatisticsInfoAMD, numPhysicalSgprs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "numAvailableVgprs" Word32 'False 
+                                                           #{offset VkShaderStatisticsInfoAMD, numAvailableVgprs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "numAvailableSgprs" Word32 'False 
+                                                           #{offset VkShaderStatisticsInfoAMD, numAvailableSgprs}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "computeWorkGroupSize" Word32 'False 
+                                                              #{offset VkShaderStatisticsInfoAMD, computeWorkGroupSize}
+                3
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/SharedPresentSurfaceCapabilitiesKHR.hsc b/src-gen/Graphics/Vulkan/Types/Struct/SharedPresentSurfaceCapabilitiesKHR.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/SharedPresentSurfaceCapabilitiesKHR.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/SharedPresentSurfaceCapabilitiesKHR.hsc
@@ -2,22 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.SharedPresentSurfaceCapabilitiesKHR
-       (VkSharedPresentSurfaceCapabilitiesKHR,
-        VkSharedPresentSurfaceCapabilitiesKHR') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
+       (VkSharedPresentSurfaceCapabilitiesKHR) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Image         (VkImageUsageFlags)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Struct.Surface     (VkSurfaceCapabilities2KHR)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
 --   >     VkStructureType sType;
@@ -27,169 +21,32 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSharedPresentSurfaceCapabilitiesKHR VkSharedPresentSurfaceCapabilitiesKHR registry at www.khronos.org>
 type VkSharedPresentSurfaceCapabilitiesKHR =
-     VulkanStruct VkSharedPresentSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs
+     VkStruct VkSharedPresentSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs
 
 data VkSharedPresentSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs
 
-instance Eq VkSharedPresentSurfaceCapabilitiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSharedPresentSurfaceCapabilitiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSharedPresentSurfaceCapabilitiesKHR where
-        sizeOf ~_
-          = #{size VkSharedPresentSurfaceCapabilitiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSharedPresentSurfaceCapabilitiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSharedPresentSurfaceCapabilitiesKHR where
-        type StructFields VkSharedPresentSurfaceCapabilitiesKHR =
-             '["sType", "pNext", "sharedPresentSupportedUsageFlags"] -- ' closing tick for hsc2hs
-        type CUnionType VkSharedPresentSurfaceCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSharedPresentSurfaceCapabilitiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSharedPresentSurfaceCapabilitiesKHR =
-             '[VkSurfaceCapabilities2KHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSharedPresentSurfaceCapabilitiesKHR where
-        type FieldType "sType" VkSharedPresentSurfaceCapabilitiesKHR =
-             VkStructureType
-        type FieldOptional "sType" VkSharedPresentSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSharedPresentSurfaceCapabilitiesKHR =
-             #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
-        type FieldIsArray "sType" VkSharedPresentSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSharedPresentSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSharedPresentSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSharedPresentSurfaceCapabilitiesKHR where
-        type FieldType "pNext" VkSharedPresentSurfaceCapabilitiesKHR =
-             Ptr Void
-        type FieldOptional "pNext" VkSharedPresentSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSharedPresentSurfaceCapabilitiesKHR =
-             #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
-        type FieldIsArray "pNext" VkSharedPresentSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSharedPresentSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSharedPresentSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "sharedPresentSupportedUsageFlags"
-           VkSharedPresentSurfaceCapabilitiesKHR
-         where
-        type FieldType "sharedPresentSupportedUsageFlags"
-               VkSharedPresentSurfaceCapabilitiesKHR
-             = VkImageUsageFlags
-        type FieldOptional "sharedPresentSupportedUsageFlags"
-               VkSharedPresentSurfaceCapabilitiesKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "sharedPresentSupportedUsageFlags"
-               VkSharedPresentSurfaceCapabilitiesKHR
-             =
-             #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
-        type FieldIsArray "sharedPresentSupportedUsageFlags"
-               VkSharedPresentSurfaceCapabilitiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sharedPresentSupportedUsageFlags"
-           VkSharedPresentSurfaceCapabilitiesKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sharedPresentSupportedUsageFlags"
+    type StructRep VkSharedPresentSurfaceCapabilitiesKHR =
+         'StructMeta "VkSharedPresentSurfaceCapabilitiesKHR" -- ' closing tick for hsc2hs
            VkSharedPresentSurfaceCapabilitiesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
-
-instance Show VkSharedPresentSurfaceCapabilitiesKHR where
-        showsPrec d x
-          = showString "VkSharedPresentSurfaceCapabilitiesKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "sharedPresentSupportedUsageFlags = " .
-                            showsPrec d (getField @"sharedPresentSupportedUsageFlags" x) .
-                              showChar '}'
+           #{size VkSharedPresentSurfaceCapabilitiesKHR}
+           #{alignment VkSharedPresentSurfaceCapabilitiesKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSharedPresentSurfaceCapabilitiesKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSharedPresentSurfaceCapabilitiesKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sharedPresentSupportedUsageFlags" VkImageUsageFlags -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkSharedPresentSurfaceCapabilitiesKHR, sharedPresentSupportedUsageFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkSurfaceCapabilities2KHR] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Sparse.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Sparse.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Sparse.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Sparse.hsc
@@ -2,1742 +2,407 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Sparse
-       (VkSparseBufferMemoryBindInfo, VkSparseBufferMemoryBindInfo', -- ' closing tick for hsc2hs
-        VkSparseImageFormatProperties, VkSparseImageFormatProperties', -- ' closing tick for hsc2hs
-        VkSparseImageFormatProperties2, VkSparseImageFormatProperties2', -- ' closing tick for hsc2hs
-        VkSparseImageFormatProperties2KHR, VkSparseImageMemoryBind,
-        VkSparseImageMemoryBind', VkSparseImageMemoryBindInfo, -- ' closing tick for hsc2hs
-        VkSparseImageMemoryBindInfo', VkSparseImageMemoryRequirements, -- ' closing tick for hsc2hs
-        VkSparseImageMemoryRequirements', VkSparseImageMemoryRequirements2, -- ' closing tick for hsc2hs
-        VkSparseImageMemoryRequirements2', -- ' closing tick for hsc2hs
-        VkSparseImageMemoryRequirements2KHR,
-        VkSparseImageOpaqueMemoryBindInfo,
-        VkSparseImageOpaqueMemoryBindInfo', VkSparseMemoryBind, -- ' closing tick for hsc2hs
-        VkSparseMemoryBind') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
-import Graphics.Vulkan.Types.Enum.Image         (VkImageAspectFlags)
-import Graphics.Vulkan.Types.Enum.Sparse        (VkSparseImageFormatFlags,
-                                                 VkSparseMemoryBindFlags)
-import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
-import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDeviceMemory,
-                                                 VkImage)
-import Graphics.Vulkan.Types.Struct.Extent      (VkExtent3D)
-import Graphics.Vulkan.Types.Struct.Image       (VkImageSubresource)
-import Graphics.Vulkan.Types.Struct.Offset      (VkOffset3D)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
-
--- | > typedef struct VkSparseBufferMemoryBindInfo {
---   >     VkBuffer buffer;
---   >     uint32_t               bindCount;
---   >     const VkSparseMemoryBind* pBinds;
---   > } VkSparseBufferMemoryBindInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseBufferMemoryBindInfo VkSparseBufferMemoryBindInfo registry at www.khronos.org>
-type VkSparseBufferMemoryBindInfo =
-     VulkanStruct VkSparseBufferMemoryBindInfo' -- ' closing tick for hsc2hs
-
-data VkSparseBufferMemoryBindInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseBufferMemoryBindInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseBufferMemoryBindInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseBufferMemoryBindInfo where
-        sizeOf ~_ = #{size VkSparseBufferMemoryBindInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSparseBufferMemoryBindInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseBufferMemoryBindInfo where
-        type StructFields VkSparseBufferMemoryBindInfo =
-             '["buffer", "bindCount", "pBinds"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseBufferMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseBufferMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSparseBufferMemoryBindInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "buffer" VkSparseBufferMemoryBindInfo where
-        type FieldType "buffer" VkSparseBufferMemoryBindInfo = VkBuffer
-        type FieldOptional "buffer" VkSparseBufferMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "buffer" VkSparseBufferMemoryBindInfo =
-             #{offset VkSparseBufferMemoryBindInfo, buffer}
-        type FieldIsArray "buffer" VkSparseBufferMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseBufferMemoryBindInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "buffer" VkSparseBufferMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, buffer})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "buffer" VkSparseBufferMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, buffer}
-
-instance {-# OVERLAPPING #-}
-         HasField "bindCount" VkSparseBufferMemoryBindInfo where
-        type FieldType "bindCount" VkSparseBufferMemoryBindInfo = Word32
-        type FieldOptional "bindCount" VkSparseBufferMemoryBindInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "bindCount" VkSparseBufferMemoryBindInfo =
-             #{offset VkSparseBufferMemoryBindInfo, bindCount}
-        type FieldIsArray "bindCount" VkSparseBufferMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseBufferMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bindCount" VkSparseBufferMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, bindCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bindCount" VkSparseBufferMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pBinds" VkSparseBufferMemoryBindInfo where
-        type FieldType "pBinds" VkSparseBufferMemoryBindInfo =
-             Ptr VkSparseMemoryBind
-        type FieldOptional "pBinds" VkSparseBufferMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pBinds" VkSparseBufferMemoryBindInfo =
-             #{offset VkSparseBufferMemoryBindInfo, pBinds}
-        type FieldIsArray "pBinds" VkSparseBufferMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseBufferMemoryBindInfo, pBinds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pBinds" VkSparseBufferMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseBufferMemoryBindInfo, pBinds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseBufferMemoryBindInfo, pBinds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pBinds" VkSparseBufferMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseBufferMemoryBindInfo, pBinds}
-
-instance Show VkSparseBufferMemoryBindInfo where
-        showsPrec d x
-          = showString "VkSparseBufferMemoryBindInfo {" .
-              showString "buffer = " .
-                showsPrec d (getField @"buffer" x) .
-                  showString ", " .
-                    showString "bindCount = " .
-                      showsPrec d (getField @"bindCount" x) .
-                        showString ", " .
-                          showString "pBinds = " .
-                            showsPrec d (getField @"pBinds" x) . showChar '}'
-
--- | > typedef struct VkSparseImageFormatProperties {
---   >     VkImageAspectFlags     aspectMask;
---   >     VkExtent3D             imageGranularity;
---   >     VkSparseImageFormatFlags flags;
---   > } VkSparseImageFormatProperties;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageFormatProperties VkSparseImageFormatProperties registry at www.khronos.org>
-type VkSparseImageFormatProperties =
-     VulkanStruct VkSparseImageFormatProperties' -- ' closing tick for hsc2hs
-
-data VkSparseImageFormatProperties' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseImageFormatProperties where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageFormatProperties where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageFormatProperties where
-        sizeOf ~_ = #{size VkSparseImageFormatProperties}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSparseImageFormatProperties}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseImageFormatProperties where
-        type StructFields VkSparseImageFormatProperties =
-             '["aspectMask", "imageGranularity", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseImageFormatProperties = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageFormatProperties = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageFormatProperties = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "aspectMask" VkSparseImageFormatProperties where
-        type FieldType "aspectMask" VkSparseImageFormatProperties =
-             VkImageAspectFlags
-        type FieldOptional "aspectMask" VkSparseImageFormatProperties =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "aspectMask" VkSparseImageFormatProperties =
-             #{offset VkSparseImageFormatProperties, aspectMask}
-        type FieldIsArray "aspectMask" VkSparseImageFormatProperties =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "aspectMask" VkSparseImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, aspectMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageFormatProperties, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "aspectMask" VkSparseImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties, aspectMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageGranularity" VkSparseImageFormatProperties where
-        type FieldType "imageGranularity" VkSparseImageFormatProperties =
-             VkExtent3D
-        type FieldOptional "imageGranularity" VkSparseImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageGranularity" VkSparseImageFormatProperties =
-             #{offset VkSparseImageFormatProperties, imageGranularity}
-        type FieldIsArray "imageGranularity" VkSparseImageFormatProperties
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties, imageGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageGranularity" VkSparseImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, imageGranularity})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageFormatProperties, imageGranularity}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageGranularity" VkSparseImageFormatProperties
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties, imageGranularity}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkSparseImageFormatProperties where
-        type FieldType "flags" VkSparseImageFormatProperties =
-             VkSparseImageFormatFlags
-        type FieldOptional "flags" VkSparseImageFormatProperties = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkSparseImageFormatProperties =
-             #{offset VkSparseImageFormatProperties, flags}
-        type FieldIsArray "flags" VkSparseImageFormatProperties = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkSparseImageFormatProperties where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageFormatProperties, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkSparseImageFormatProperties where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties, flags}
-
-instance Show VkSparseImageFormatProperties where
-        showsPrec d x
-          = showString "VkSparseImageFormatProperties {" .
-              showString "aspectMask = " .
-                showsPrec d (getField @"aspectMask" x) .
-                  showString ", " .
-                    showString "imageGranularity = " .
-                      showsPrec d (getField @"imageGranularity" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) . showChar '}'
-
--- | > typedef struct VkSparseImageFormatProperties2 {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     VkSparseImageFormatProperties    properties;
---   > } VkSparseImageFormatProperties2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageFormatProperties2 VkSparseImageFormatProperties2 registry at www.khronos.org>
-type VkSparseImageFormatProperties2 =
-     VulkanStruct VkSparseImageFormatProperties2' -- ' closing tick for hsc2hs
-
-data VkSparseImageFormatProperties2' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseImageFormatProperties2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageFormatProperties2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageFormatProperties2 where
-        sizeOf ~_ = #{size VkSparseImageFormatProperties2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSparseImageFormatProperties2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseImageFormatProperties2 where
-        type StructFields VkSparseImageFormatProperties2 =
-             '["sType", "pNext", "properties"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageFormatProperties2 = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageFormatProperties2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSparseImageFormatProperties2 where
-        type FieldType "sType" VkSparseImageFormatProperties2 =
-             VkStructureType
-        type FieldOptional "sType" VkSparseImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSparseImageFormatProperties2 =
-             #{offset VkSparseImageFormatProperties2, sType}
-        type FieldIsArray "sType" VkSparseImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSparseImageFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSparseImageFormatProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSparseImageFormatProperties2 where
-        type FieldType "pNext" VkSparseImageFormatProperties2 = Ptr Void
-        type FieldOptional "pNext" VkSparseImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSparseImageFormatProperties2 =
-             #{offset VkSparseImageFormatProperties2, pNext}
-        type FieldIsArray "pNext" VkSparseImageFormatProperties2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSparseImageFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSparseImageFormatProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "properties" VkSparseImageFormatProperties2 where
-        type FieldType "properties" VkSparseImageFormatProperties2 =
-             VkSparseImageFormatProperties
-        type FieldOptional "properties" VkSparseImageFormatProperties2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "properties" VkSparseImageFormatProperties2 =
-             #{offset VkSparseImageFormatProperties2, properties}
-        type FieldIsArray "properties" VkSparseImageFormatProperties2 =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageFormatProperties2, properties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "properties" VkSparseImageFormatProperties2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageFormatProperties2, properties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageFormatProperties2, properties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "properties" VkSparseImageFormatProperties2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageFormatProperties2, properties}
-
-instance Show VkSparseImageFormatProperties2 where
-        showsPrec d x
-          = showString "VkSparseImageFormatProperties2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "properties = " .
-                            showsPrec d (getField @"properties" x) . showChar '}'
-
--- | Alias for `VkSparseImageFormatProperties2`
-type VkSparseImageFormatProperties2KHR =
-     VkSparseImageFormatProperties2
-
--- | > typedef struct VkSparseImageMemoryBind {
---   >     VkImageSubresource     subresource;
---   >     VkOffset3D             offset;
---   >     VkExtent3D             extent;
---   >     VkDeviceMemory         memory;
---   >     VkDeviceSize           memoryOffset;
---   >     VkSparseMemoryBindFlagsflags;
---   > } VkSparseImageMemoryBind;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageMemoryBind VkSparseImageMemoryBind registry at www.khronos.org>
-type VkSparseImageMemoryBind =
-     VulkanStruct VkSparseImageMemoryBind' -- ' closing tick for hsc2hs
-
-data VkSparseImageMemoryBind' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseImageMemoryBind where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageMemoryBind where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageMemoryBind where
-        sizeOf ~_ = #{size VkSparseImageMemoryBind}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSparseImageMemoryBind}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseImageMemoryBind where
-        type StructFields VkSparseImageMemoryBind =
-             '["subresource", "offset", "extent", "memory", "memoryOffset", -- ' closing tick for hsc2hs
-               "flags"]
-        type CUnionType VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageMemoryBind = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "subresource" VkSparseImageMemoryBind where
-        type FieldType "subresource" VkSparseImageMemoryBind =
-             VkImageSubresource
-        type FieldOptional "subresource" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "subresource" VkSparseImageMemoryBind =
-             #{offset VkSparseImageMemoryBind, subresource}
-        type FieldIsArray "subresource" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryBind, subresource}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subresource" VkSparseImageMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, subresource})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, subresource}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subresource" VkSparseImageMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, subresource}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkSparseImageMemoryBind where
-        type FieldType "offset" VkSparseImageMemoryBind = VkOffset3D
-        type FieldOptional "offset" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkSparseImageMemoryBind =
-             #{offset VkSparseImageMemoryBind, offset}
-        type FieldIsArray "offset" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSparseImageMemoryBind, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkSparseImageMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkSparseImageMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, offset}
-
-instance {-# OVERLAPPING #-}
-         HasField "extent" VkSparseImageMemoryBind where
-        type FieldType "extent" VkSparseImageMemoryBind = VkExtent3D
-        type FieldOptional "extent" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "extent" VkSparseImageMemoryBind =
-             #{offset VkSparseImageMemoryBind, extent}
-        type FieldIsArray "extent" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSparseImageMemoryBind, extent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "extent" VkSparseImageMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, extent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, extent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "extent" VkSparseImageMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, extent}
-
-instance {-# OVERLAPPING #-}
-         HasField "memory" VkSparseImageMemoryBind where
-        type FieldType "memory" VkSparseImageMemoryBind = VkDeviceMemory
-        type FieldOptional "memory" VkSparseImageMemoryBind = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkSparseImageMemoryBind =
-             #{offset VkSparseImageMemoryBind, memory}
-        type FieldIsArray "memory" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSparseImageMemoryBind, memory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memory" VkSparseImageMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, memory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, memory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memory" VkSparseImageMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, memory}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryOffset" VkSparseImageMemoryBind where
-        type FieldType "memoryOffset" VkSparseImageMemoryBind =
-             VkDeviceSize
-        type FieldOptional "memoryOffset" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryOffset" VkSparseImageMemoryBind =
-             #{offset VkSparseImageMemoryBind, memoryOffset}
-        type FieldIsArray "memoryOffset" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryBind, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryOffset" VkSparseImageMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, memoryOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryOffset" VkSparseImageMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkSparseImageMemoryBind where
-        type FieldType "flags" VkSparseImageMemoryBind =
-             VkSparseMemoryBindFlags
-        type FieldOptional "flags" VkSparseImageMemoryBind = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkSparseImageMemoryBind =
-             #{offset VkSparseImageMemoryBind, flags}
-        type FieldIsArray "flags" VkSparseImageMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSparseImageMemoryBind, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkSparseImageMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBind, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBind, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkSparseImageMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBind, flags}
-
-instance Show VkSparseImageMemoryBind where
-        showsPrec d x
-          = showString "VkSparseImageMemoryBind {" .
-              showString "subresource = " .
-                showsPrec d (getField @"subresource" x) .
-                  showString ", " .
-                    showString "offset = " .
-                      showsPrec d (getField @"offset" x) .
-                        showString ", " .
-                          showString "extent = " .
-                            showsPrec d (getField @"extent" x) .
-                              showString ", " .
-                                showString "memory = " .
-                                  showsPrec d (getField @"memory" x) .
-                                    showString ", " .
-                                      showString "memoryOffset = " .
-                                        showsPrec d (getField @"memoryOffset" x) .
-                                          showString ", " .
-                                            showString "flags = " .
-                                              showsPrec d (getField @"flags" x) . showChar '}'
-
--- | > typedef struct VkSparseImageMemoryBindInfo {
---   >     VkImage image;
---   >     uint32_t               bindCount;
---   >     const VkSparseImageMemoryBind* pBinds;
---   > } VkSparseImageMemoryBindInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageMemoryBindInfo VkSparseImageMemoryBindInfo registry at www.khronos.org>
-type VkSparseImageMemoryBindInfo =
-     VulkanStruct VkSparseImageMemoryBindInfo' -- ' closing tick for hsc2hs
-
-data VkSparseImageMemoryBindInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseImageMemoryBindInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageMemoryBindInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageMemoryBindInfo where
-        sizeOf ~_ = #{size VkSparseImageMemoryBindInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSparseImageMemoryBindInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseImageMemoryBindInfo where
-        type StructFields VkSparseImageMemoryBindInfo =
-             '["image", "bindCount", "pBinds"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageMemoryBindInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkSparseImageMemoryBindInfo where
-        type FieldType "image" VkSparseImageMemoryBindInfo = VkImage
-        type FieldOptional "image" VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkSparseImageMemoryBindInfo =
-             #{offset VkSparseImageMemoryBindInfo, image}
-        type FieldIsArray "image" VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryBindInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkSparseImageMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkSparseImageMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "bindCount" VkSparseImageMemoryBindInfo where
-        type FieldType "bindCount" VkSparseImageMemoryBindInfo = Word32
-        type FieldOptional "bindCount" VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "bindCount" VkSparseImageMemoryBindInfo =
-             #{offset VkSparseImageMemoryBindInfo, bindCount}
-        type FieldIsArray "bindCount" VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bindCount" VkSparseImageMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, bindCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bindCount" VkSparseImageMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pBinds" VkSparseImageMemoryBindInfo where
-        type FieldType "pBinds" VkSparseImageMemoryBindInfo =
-             Ptr VkSparseImageMemoryBind
-        type FieldOptional "pBinds" VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pBinds" VkSparseImageMemoryBindInfo =
-             #{offset VkSparseImageMemoryBindInfo, pBinds}
-        type FieldIsArray "pBinds" VkSparseImageMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryBindInfo, pBinds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pBinds" VkSparseImageMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryBindInfo, pBinds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryBindInfo, pBinds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pBinds" VkSparseImageMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryBindInfo, pBinds}
-
-instance Show VkSparseImageMemoryBindInfo where
-        showsPrec d x
-          = showString "VkSparseImageMemoryBindInfo {" .
-              showString "image = " .
-                showsPrec d (getField @"image" x) .
-                  showString ", " .
-                    showString "bindCount = " .
-                      showsPrec d (getField @"bindCount" x) .
-                        showString ", " .
-                          showString "pBinds = " .
-                            showsPrec d (getField @"pBinds" x) . showChar '}'
-
--- | > typedef struct VkSparseImageMemoryRequirements {
---   >     VkSparseImageFormatProperties formatProperties;
---   >     uint32_t               imageMipTailFirstLod;
---   >     VkDeviceSize           imageMipTailSize;
---   >     VkDeviceSize           imageMipTailOffset;
---   >     VkDeviceSize           imageMipTailStride;
---   > } VkSparseImageMemoryRequirements;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageMemoryRequirements VkSparseImageMemoryRequirements registry at www.khronos.org>
-type VkSparseImageMemoryRequirements =
-     VulkanStruct VkSparseImageMemoryRequirements' -- ' closing tick for hsc2hs
-
-data VkSparseImageMemoryRequirements' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseImageMemoryRequirements where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageMemoryRequirements where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageMemoryRequirements where
-        sizeOf ~_ = #{size VkSparseImageMemoryRequirements}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSparseImageMemoryRequirements}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseImageMemoryRequirements where
-        type StructFields VkSparseImageMemoryRequirements =
-             '["formatProperties", "imageMipTailFirstLod", "imageMipTailSize", -- ' closing tick for hsc2hs
-               "imageMipTailOffset", "imageMipTailStride"]
-        type CUnionType VkSparseImageMemoryRequirements = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageMemoryRequirements = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageMemoryRequirements = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "formatProperties" VkSparseImageMemoryRequirements where
-        type FieldType "formatProperties" VkSparseImageMemoryRequirements =
-             VkSparseImageFormatProperties
-        type FieldOptional "formatProperties"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "formatProperties" VkSparseImageMemoryRequirements
-             =
-             #{offset VkSparseImageMemoryRequirements, formatProperties}
-        type FieldIsArray "formatProperties"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements, formatProperties}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "formatProperties" VkSparseImageMemoryRequirements
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, formatProperties})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, formatProperties}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "formatProperties" VkSparseImageMemoryRequirements
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, formatProperties}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageMipTailFirstLod" VkSparseImageMemoryRequirements
-         where
-        type FieldType "imageMipTailFirstLod"
-               VkSparseImageMemoryRequirements
-             = Word32
-        type FieldOptional "imageMipTailFirstLod"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageMipTailFirstLod"
-               VkSparseImageMemoryRequirements
-             =
-             #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
-        type FieldIsArray "imageMipTailFirstLod"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageMipTailFirstLod" VkSparseImageMemoryRequirements
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageMipTailFirstLod"
-           VkSparseImageMemoryRequirements
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageMipTailSize" VkSparseImageMemoryRequirements where
-        type FieldType "imageMipTailSize" VkSparseImageMemoryRequirements =
-             VkDeviceSize
-        type FieldOptional "imageMipTailSize"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageMipTailSize" VkSparseImageMemoryRequirements
-             =
-             #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
-        type FieldIsArray "imageMipTailSize"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageMipTailSize" VkSparseImageMemoryRequirements
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageMipTailSize" VkSparseImageMemoryRequirements
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageMipTailOffset" VkSparseImageMemoryRequirements where
-        type FieldType "imageMipTailOffset" VkSparseImageMemoryRequirements
-             = VkDeviceSize
-        type FieldOptional "imageMipTailOffset"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageMipTailOffset"
-               VkSparseImageMemoryRequirements
-             =
-             #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
-        type FieldIsArray "imageMipTailOffset"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageMipTailOffset" VkSparseImageMemoryRequirements
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageMipTailOffset" VkSparseImageMemoryRequirements
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageMipTailStride" VkSparseImageMemoryRequirements where
-        type FieldType "imageMipTailStride" VkSparseImageMemoryRequirements
-             = VkDeviceSize
-        type FieldOptional "imageMipTailStride"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageMipTailStride"
-               VkSparseImageMemoryRequirements
-             =
-             #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
-        type FieldIsArray "imageMipTailStride"
-               VkSparseImageMemoryRequirements
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageMipTailStride" VkSparseImageMemoryRequirements
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements, imageMipTailStride})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageMipTailStride" VkSparseImageMemoryRequirements
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
-
-instance Show VkSparseImageMemoryRequirements where
-        showsPrec d x
-          = showString "VkSparseImageMemoryRequirements {" .
-              showString "formatProperties = " .
-                showsPrec d (getField @"formatProperties" x) .
-                  showString ", " .
-                    showString "imageMipTailFirstLod = " .
-                      showsPrec d (getField @"imageMipTailFirstLod" x) .
-                        showString ", " .
-                          showString "imageMipTailSize = " .
-                            showsPrec d (getField @"imageMipTailSize" x) .
-                              showString ", " .
-                                showString "imageMipTailOffset = " .
-                                  showsPrec d (getField @"imageMipTailOffset" x) .
-                                    showString ", " .
-                                      showString "imageMipTailStride = " .
-                                        showsPrec d (getField @"imageMipTailStride" x) .
-                                          showChar '}'
-
--- | > typedef struct VkSparseImageMemoryRequirements2 {
---   >     VkStructureType sType;
---   >     void*                                       pNext;
---   >     VkSparseImageMemoryRequirements                                      memoryRequirements;
---   > } VkSparseImageMemoryRequirements2;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2 registry at www.khronos.org>
-type VkSparseImageMemoryRequirements2 =
-     VulkanStruct VkSparseImageMemoryRequirements2' -- ' closing tick for hsc2hs
-
-data VkSparseImageMemoryRequirements2' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseImageMemoryRequirements2 where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageMemoryRequirements2 where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageMemoryRequirements2 where
-        sizeOf ~_ = #{size VkSparseImageMemoryRequirements2}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSparseImageMemoryRequirements2}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseImageMemoryRequirements2 where
-        type StructFields VkSparseImageMemoryRequirements2 =
-             '["sType", "pNext", "memoryRequirements"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseImageMemoryRequirements2 = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageMemoryRequirements2 = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageMemoryRequirements2 = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSparseImageMemoryRequirements2 where
-        type FieldType "sType" VkSparseImageMemoryRequirements2 =
-             VkStructureType
-        type FieldOptional "sType" VkSparseImageMemoryRequirements2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSparseImageMemoryRequirements2 =
-             #{offset VkSparseImageMemoryRequirements2, sType}
-        type FieldIsArray "sType" VkSparseImageMemoryRequirements2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSparseImageMemoryRequirements2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements2, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements2, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSparseImageMemoryRequirements2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements2, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSparseImageMemoryRequirements2 where
-        type FieldType "pNext" VkSparseImageMemoryRequirements2 = Ptr Void
-        type FieldOptional "pNext" VkSparseImageMemoryRequirements2 =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSparseImageMemoryRequirements2 =
-             #{offset VkSparseImageMemoryRequirements2, pNext}
-        type FieldIsArray "pNext" VkSparseImageMemoryRequirements2 = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSparseImageMemoryRequirements2 where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements2, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements2, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSparseImageMemoryRequirements2 where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements2, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryRequirements" VkSparseImageMemoryRequirements2
-         where
-        type FieldType "memoryRequirements"
-               VkSparseImageMemoryRequirements2
-             = VkSparseImageMemoryRequirements
-        type FieldOptional "memoryRequirements"
-               VkSparseImageMemoryRequirements2
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryRequirements"
-               VkSparseImageMemoryRequirements2
-             =
-             #{offset VkSparseImageMemoryRequirements2, memoryRequirements}
-        type FieldIsArray "memoryRequirements"
-               VkSparseImageMemoryRequirements2
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageMemoryRequirements2, memoryRequirements}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryRequirements" VkSparseImageMemoryRequirements2
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageMemoryRequirements2, memoryRequirements})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageMemoryRequirements2, memoryRequirements}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryRequirements" VkSparseImageMemoryRequirements2
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageMemoryRequirements2, memoryRequirements}
-
-instance Show VkSparseImageMemoryRequirements2 where
-        showsPrec d x
-          = showString "VkSparseImageMemoryRequirements2 {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "memoryRequirements = " .
-                            showsPrec d (getField @"memoryRequirements" x) . showChar '}'
-
--- | Alias for `VkSparseImageMemoryRequirements2`
-type VkSparseImageMemoryRequirements2KHR =
-     VkSparseImageMemoryRequirements2
-
--- | > typedef struct VkSparseImageOpaqueMemoryBindInfo {
---   >     VkImage image;
---   >     uint32_t               bindCount;
---   >     const VkSparseMemoryBind* pBinds;
---   > } VkSparseImageOpaqueMemoryBindInfo;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageOpaqueMemoryBindInfo VkSparseImageOpaqueMemoryBindInfo registry at www.khronos.org>
-type VkSparseImageOpaqueMemoryBindInfo =
-     VulkanStruct VkSparseImageOpaqueMemoryBindInfo' -- ' closing tick for hsc2hs
-
-data VkSparseImageOpaqueMemoryBindInfo' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseImageOpaqueMemoryBindInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseImageOpaqueMemoryBindInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseImageOpaqueMemoryBindInfo where
-        sizeOf ~_ = #{size VkSparseImageOpaqueMemoryBindInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSparseImageOpaqueMemoryBindInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseImageOpaqueMemoryBindInfo where
-        type StructFields VkSparseImageOpaqueMemoryBindInfo =
-             '["image", "bindCount", "pBinds"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseImageOpaqueMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseImageOpaqueMemoryBindInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSparseImageOpaqueMemoryBindInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "image" VkSparseImageOpaqueMemoryBindInfo where
-        type FieldType "image" VkSparseImageOpaqueMemoryBindInfo = VkImage
-        type FieldOptional "image" VkSparseImageOpaqueMemoryBindInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "image" VkSparseImageOpaqueMemoryBindInfo =
-             #{offset VkSparseImageOpaqueMemoryBindInfo, image}
-        type FieldIsArray "image" VkSparseImageOpaqueMemoryBindInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageOpaqueMemoryBindInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "image" VkSparseImageOpaqueMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, image})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, image}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "image" VkSparseImageOpaqueMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, image}
-
-instance {-# OVERLAPPING #-}
-         HasField "bindCount" VkSparseImageOpaqueMemoryBindInfo where
-        type FieldType "bindCount" VkSparseImageOpaqueMemoryBindInfo =
-             Word32
-        type FieldOptional "bindCount" VkSparseImageOpaqueMemoryBindInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "bindCount" VkSparseImageOpaqueMemoryBindInfo =
-             #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
-        type FieldIsArray "bindCount" VkSparseImageOpaqueMemoryBindInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "bindCount" VkSparseImageOpaqueMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "bindCount" VkSparseImageOpaqueMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pBinds" VkSparseImageOpaqueMemoryBindInfo where
-        type FieldType "pBinds" VkSparseImageOpaqueMemoryBindInfo =
-             Ptr VkSparseMemoryBind
-        type FieldOptional "pBinds" VkSparseImageOpaqueMemoryBindInfo =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pBinds" VkSparseImageOpaqueMemoryBindInfo =
-             #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
-        type FieldIsArray "pBinds" VkSparseImageOpaqueMemoryBindInfo =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pBinds" VkSparseImageOpaqueMemoryBindInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pBinds" VkSparseImageOpaqueMemoryBindInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
-
-instance Show VkSparseImageOpaqueMemoryBindInfo where
-        showsPrec d x
-          = showString "VkSparseImageOpaqueMemoryBindInfo {" .
-              showString "image = " .
-                showsPrec d (getField @"image" x) .
-                  showString ", " .
-                    showString "bindCount = " .
-                      showsPrec d (getField @"bindCount" x) .
-                        showString ", " .
-                          showString "pBinds = " .
-                            showsPrec d (getField @"pBinds" x) . showChar '}'
-
--- | > typedef struct VkSparseMemoryBind {
---   >     VkDeviceSize           resourceOffset;
---   >     VkDeviceSize           size;
---   >     VkDeviceMemory         memory;
---   >     VkDeviceSize           memoryOffset;
---   >     VkSparseMemoryBindFlagsflags;
---   > } VkSparseMemoryBind;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseMemoryBind VkSparseMemoryBind registry at www.khronos.org>
-type VkSparseMemoryBind = VulkanStruct VkSparseMemoryBind' -- ' closing tick for hsc2hs
-
-data VkSparseMemoryBind' -- ' closing tick for hsc2hs
-
-instance Eq VkSparseMemoryBind where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSparseMemoryBind where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSparseMemoryBind where
-        sizeOf ~_ = #{size VkSparseMemoryBind}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSparseMemoryBind}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSparseMemoryBind where
-        type StructFields VkSparseMemoryBind =
-             '["resourceOffset", "size", "memory", "memoryOffset", "flags"] -- ' closing tick for hsc2hs
-        type CUnionType VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSparseMemoryBind = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "resourceOffset" VkSparseMemoryBind where
-        type FieldType "resourceOffset" VkSparseMemoryBind = VkDeviceSize
-        type FieldOptional "resourceOffset" VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "resourceOffset" VkSparseMemoryBind =
-             #{offset VkSparseMemoryBind, resourceOffset}
-        type FieldIsArray "resourceOffset" VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseMemoryBind, resourceOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "resourceOffset" VkSparseMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, resourceOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseMemoryBind, resourceOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "resourceOffset" VkSparseMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseMemoryBind, resourceOffset}
-
-instance {-# OVERLAPPING #-} HasField "size" VkSparseMemoryBind
-         where
-        type FieldType "size" VkSparseMemoryBind = VkDeviceSize
-        type FieldOptional "size" VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkSparseMemoryBind =
-             #{offset VkSparseMemoryBind, size}
-        type FieldIsArray "size" VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSparseMemoryBind, size}
-
-instance {-# OVERLAPPING #-} CanReadField "size" VkSparseMemoryBind
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseMemoryBind, size}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "size" VkSparseMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseMemoryBind, size}
-
-instance {-# OVERLAPPING #-} HasField "memory" VkSparseMemoryBind
-         where
-        type FieldType "memory" VkSparseMemoryBind = VkDeviceMemory
-        type FieldOptional "memory" VkSparseMemoryBind = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "memory" VkSparseMemoryBind =
-             #{offset VkSparseMemoryBind, memory}
-        type FieldIsArray "memory" VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSparseMemoryBind, memory}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memory" VkSparseMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, memory})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseMemoryBind, memory}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memory" VkSparseMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseMemoryBind, memory}
-
-instance {-# OVERLAPPING #-}
-         HasField "memoryOffset" VkSparseMemoryBind where
-        type FieldType "memoryOffset" VkSparseMemoryBind = VkDeviceSize
-        type FieldOptional "memoryOffset" VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "memoryOffset" VkSparseMemoryBind =
-             #{offset VkSparseMemoryBind, memoryOffset}
-        type FieldIsArray "memoryOffset" VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSparseMemoryBind, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "memoryOffset" VkSparseMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, memoryOffset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseMemoryBind, memoryOffset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "memoryOffset" VkSparseMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseMemoryBind, memoryOffset}
-
-instance {-# OVERLAPPING #-} HasField "flags" VkSparseMemoryBind
-         where
-        type FieldType "flags" VkSparseMemoryBind = VkSparseMemoryBindFlags
-        type FieldOptional "flags" VkSparseMemoryBind = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkSparseMemoryBind =
-             #{offset VkSparseMemoryBind, flags}
-        type FieldIsArray "flags" VkSparseMemoryBind = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSparseMemoryBind, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkSparseMemoryBind where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSparseMemoryBind, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSparseMemoryBind, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkSparseMemoryBind where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSparseMemoryBind, flags}
-
-instance Show VkSparseMemoryBind where
-        showsPrec d x
-          = showString "VkSparseMemoryBind {" .
-              showString "resourceOffset = " .
-                showsPrec d (getField @"resourceOffset" x) .
-                  showString ", " .
-                    showString "size = " .
-                      showsPrec d (getField @"size" x) .
-                        showString ", " .
-                          showString "memory = " .
-                            showsPrec d (getField @"memory" x) .
-                              showString ", " .
-                                showString "memoryOffset = " .
-                                  showsPrec d (getField @"memoryOffset" x) .
-                                    showString ", " .
-                                      showString "flags = " .
-                                        showsPrec d (getField @"flags" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Sparse
+       (VkSparseBufferMemoryBindInfo, VkSparseImageFormatProperties,
+        VkSparseImageFormatProperties2, VkSparseImageFormatProperties2KHR,
+        VkSparseImageMemoryBind, VkSparseImageMemoryBindInfo,
+        VkSparseImageMemoryRequirements, VkSparseImageMemoryRequirements2,
+        VkSparseImageMemoryRequirements2KHR,
+        VkSparseImageOpaqueMemoryBindInfo, VkSparseMemoryBind)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes          (VkDeviceSize)
+import Graphics.Vulkan.Types.Enum.Image         (VkImageAspectFlags)
+import Graphics.Vulkan.Types.Enum.Sparse        (VkSparseImageFormatFlags,
+                                                 VkSparseMemoryBindFlags)
+import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
+import Graphics.Vulkan.Types.Handles            (VkBuffer, VkDeviceMemory,
+                                                 VkImage)
+import Graphics.Vulkan.Types.Struct.Extent      (VkExtent3D)
+import Graphics.Vulkan.Types.Struct.Image       (VkImageSubresource)
+import Graphics.Vulkan.Types.Struct.Offset      (VkOffset3D)
+
+-- | > typedef struct VkSparseBufferMemoryBindInfo {
+--   >     VkBuffer buffer;
+--   >     uint32_t               bindCount;
+--   >     const VkSparseMemoryBind* pBinds;
+--   > } VkSparseBufferMemoryBindInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseBufferMemoryBindInfo VkSparseBufferMemoryBindInfo registry at www.khronos.org>
+type VkSparseBufferMemoryBindInfo =
+     VkStruct VkSparseBufferMemoryBindInfo' -- ' closing tick for hsc2hs
+
+data VkSparseBufferMemoryBindInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseBufferMemoryBindInfo where
+    type StructRep VkSparseBufferMemoryBindInfo =
+         'StructMeta "VkSparseBufferMemoryBindInfo" -- ' closing tick for hsc2hs
+           VkSparseBufferMemoryBindInfo
+           #{size VkSparseBufferMemoryBindInfo}
+           #{alignment VkSparseBufferMemoryBindInfo}
+           '[('FieldMeta "buffer" VkBuffer 'False  -- ' closing tick for hsc2hs
+                                                  #{offset VkSparseBufferMemoryBindInfo, buffer}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bindCount" Word32 'False 
+                                                   #{offset VkSparseBufferMemoryBindInfo, bindCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pBinds" (Ptr VkSparseMemoryBind) 'False 
+                                                                  #{offset VkSparseBufferMemoryBindInfo, pBinds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSparseImageFormatProperties {
+--   >     VkImageAspectFlags     aspectMask;
+--   >     VkExtent3D             imageGranularity;
+--   >     VkSparseImageFormatFlags flags;
+--   > } VkSparseImageFormatProperties;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageFormatProperties VkSparseImageFormatProperties registry at www.khronos.org>
+type VkSparseImageFormatProperties =
+     VkStruct VkSparseImageFormatProperties' -- ' closing tick for hsc2hs
+
+data VkSparseImageFormatProperties' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseImageFormatProperties where
+    type StructRep VkSparseImageFormatProperties =
+         'StructMeta "VkSparseImageFormatProperties" -- ' closing tick for hsc2hs
+           VkSparseImageFormatProperties
+           #{size VkSparseImageFormatProperties}
+           #{alignment VkSparseImageFormatProperties}
+           '[('FieldMeta "aspectMask" VkImageAspectFlags 'True  -- ' closing tick for hsc2hs
+                                                               #{offset VkSparseImageFormatProperties, aspectMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageGranularity" VkExtent3D 'False 
+                                                              #{offset VkSparseImageFormatProperties, imageGranularity}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkSparseImageFormatFlags 'True 
+                                                                #{offset VkSparseImageFormatProperties, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSparseImageFormatProperties2 {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     VkSparseImageFormatProperties    properties;
+--   > } VkSparseImageFormatProperties2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageFormatProperties2 VkSparseImageFormatProperties2 registry at www.khronos.org>
+type VkSparseImageFormatProperties2 =
+     VkStruct VkSparseImageFormatProperties2' -- ' closing tick for hsc2hs
+
+data VkSparseImageFormatProperties2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseImageFormatProperties2 where
+    type StructRep VkSparseImageFormatProperties2 =
+         'StructMeta "VkSparseImageFormatProperties2" -- ' closing tick for hsc2hs
+           VkSparseImageFormatProperties2
+           #{size VkSparseImageFormatProperties2}
+           #{alignment VkSparseImageFormatProperties2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSparseImageFormatProperties2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSparseImageFormatProperties2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "properties" VkSparseImageFormatProperties 'False
+                #{offset VkSparseImageFormatProperties2, properties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkSparseImageFormatProperties2`
+type VkSparseImageFormatProperties2KHR =
+     VkSparseImageFormatProperties2
+
+-- | > typedef struct VkSparseImageMemoryBind {
+--   >     VkImageSubresource     subresource;
+--   >     VkOffset3D             offset;
+--   >     VkExtent3D             extent;
+--   >     VkDeviceMemory         memory;
+--   >     VkDeviceSize           memoryOffset;
+--   >     VkSparseMemoryBindFlagsflags;
+--   > } VkSparseImageMemoryBind;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageMemoryBind VkSparseImageMemoryBind registry at www.khronos.org>
+type VkSparseImageMemoryBind = VkStruct VkSparseImageMemoryBind' -- ' closing tick for hsc2hs
+
+data VkSparseImageMemoryBind' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseImageMemoryBind where
+    type StructRep VkSparseImageMemoryBind =
+         'StructMeta "VkSparseImageMemoryBind" VkSparseImageMemoryBind -- ' closing tick for hsc2hs
+           #{size VkSparseImageMemoryBind}
+           #{alignment VkSparseImageMemoryBind}
+           '[('FieldMeta "subresource" VkImageSubresource 'False  -- ' closing tick for hsc2hs
+                                                                 #{offset VkSparseImageMemoryBind, subresource}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" VkOffset3D 'False 
+                                                    #{offset VkSparseImageMemoryBind, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "extent" VkExtent3D 'False 
+                                                    #{offset VkSparseImageMemoryBind, extent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memory" VkDeviceMemory 'True 
+                                                       #{offset VkSparseImageMemoryBind, memory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryOffset" VkDeviceSize 'False 
+                                                            #{offset VkSparseImageMemoryBind, memoryOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkSparseMemoryBindFlags 'True 
+                                                               #{offset VkSparseImageMemoryBind, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSparseImageMemoryBindInfo {
+--   >     VkImage image;
+--   >     uint32_t               bindCount;
+--   >     const VkSparseImageMemoryBind* pBinds;
+--   > } VkSparseImageMemoryBindInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageMemoryBindInfo VkSparseImageMemoryBindInfo registry at www.khronos.org>
+type VkSparseImageMemoryBindInfo =
+     VkStruct VkSparseImageMemoryBindInfo' -- ' closing tick for hsc2hs
+
+data VkSparseImageMemoryBindInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseImageMemoryBindInfo where
+    type StructRep VkSparseImageMemoryBindInfo =
+         'StructMeta "VkSparseImageMemoryBindInfo" -- ' closing tick for hsc2hs
+           VkSparseImageMemoryBindInfo
+           #{size VkSparseImageMemoryBindInfo}
+           #{alignment VkSparseImageMemoryBindInfo}
+           '[('FieldMeta "image" VkImage 'False  -- ' closing tick for hsc2hs
+                                                #{offset VkSparseImageMemoryBindInfo, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bindCount" Word32 'False 
+                                                   #{offset VkSparseImageMemoryBindInfo, bindCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pBinds" (Ptr VkSparseImageMemoryBind) 'False 
+                                                                       #{offset VkSparseImageMemoryBindInfo, pBinds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSparseImageMemoryRequirements {
+--   >     VkSparseImageFormatProperties formatProperties;
+--   >     uint32_t               imageMipTailFirstLod;
+--   >     VkDeviceSize           imageMipTailSize;
+--   >     VkDeviceSize           imageMipTailOffset;
+--   >     VkDeviceSize           imageMipTailStride;
+--   > } VkSparseImageMemoryRequirements;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageMemoryRequirements VkSparseImageMemoryRequirements registry at www.khronos.org>
+type VkSparseImageMemoryRequirements =
+     VkStruct VkSparseImageMemoryRequirements' -- ' closing tick for hsc2hs
+
+data VkSparseImageMemoryRequirements' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseImageMemoryRequirements where
+    type StructRep VkSparseImageMemoryRequirements =
+         'StructMeta "VkSparseImageMemoryRequirements" -- ' closing tick for hsc2hs
+           VkSparseImageMemoryRequirements
+           #{size VkSparseImageMemoryRequirements}
+           #{alignment VkSparseImageMemoryRequirements}
+           '[('FieldMeta "formatProperties" VkSparseImageFormatProperties
+                'False -- ' closing tick for hsc2hs
+                #{offset VkSparseImageMemoryRequirements, formatProperties}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageMipTailFirstLod" Word32 'False 
+                                                              #{offset VkSparseImageMemoryRequirements, imageMipTailFirstLod}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageMipTailSize" VkDeviceSize 'False 
+                                                                #{offset VkSparseImageMemoryRequirements, imageMipTailSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageMipTailOffset" VkDeviceSize 'False 
+                                                                  #{offset VkSparseImageMemoryRequirements, imageMipTailOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageMipTailStride" VkDeviceSize 'False 
+                                                                  #{offset VkSparseImageMemoryRequirements, imageMipTailStride}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSparseImageMemoryRequirements2 {
+--   >     VkStructureType sType;
+--   >     void*                                       pNext;
+--   >     VkSparseImageMemoryRequirements                                      memoryRequirements;
+--   > } VkSparseImageMemoryRequirements2;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2 registry at www.khronos.org>
+type VkSparseImageMemoryRequirements2 =
+     VkStruct VkSparseImageMemoryRequirements2' -- ' closing tick for hsc2hs
+
+data VkSparseImageMemoryRequirements2' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseImageMemoryRequirements2 where
+    type StructRep VkSparseImageMemoryRequirements2 =
+         'StructMeta "VkSparseImageMemoryRequirements2" -- ' closing tick for hsc2hs
+           VkSparseImageMemoryRequirements2
+           #{size VkSparseImageMemoryRequirements2}
+           #{alignment VkSparseImageMemoryRequirements2}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSparseImageMemoryRequirements2, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSparseImageMemoryRequirements2, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryRequirements" VkSparseImageMemoryRequirements -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkSparseImageMemoryRequirements2, memoryRequirements}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | Alias for `VkSparseImageMemoryRequirements2`
+type VkSparseImageMemoryRequirements2KHR =
+     VkSparseImageMemoryRequirements2
+
+-- | > typedef struct VkSparseImageOpaqueMemoryBindInfo {
+--   >     VkImage image;
+--   >     uint32_t               bindCount;
+--   >     const VkSparseMemoryBind* pBinds;
+--   > } VkSparseImageOpaqueMemoryBindInfo;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseImageOpaqueMemoryBindInfo VkSparseImageOpaqueMemoryBindInfo registry at www.khronos.org>
+type VkSparseImageOpaqueMemoryBindInfo =
+     VkStruct VkSparseImageOpaqueMemoryBindInfo' -- ' closing tick for hsc2hs
+
+data VkSparseImageOpaqueMemoryBindInfo' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseImageOpaqueMemoryBindInfo where
+    type StructRep VkSparseImageOpaqueMemoryBindInfo =
+         'StructMeta "VkSparseImageOpaqueMemoryBindInfo" -- ' closing tick for hsc2hs
+           VkSparseImageOpaqueMemoryBindInfo
+           #{size VkSparseImageOpaqueMemoryBindInfo}
+           #{alignment VkSparseImageOpaqueMemoryBindInfo}
+           '[('FieldMeta "image" VkImage 'False  -- ' closing tick for hsc2hs
+                                                #{offset VkSparseImageOpaqueMemoryBindInfo, image}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "bindCount" Word32 'False 
+                                                   #{offset VkSparseImageOpaqueMemoryBindInfo, bindCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pBinds" (Ptr VkSparseMemoryBind) 'False 
+                                                                  #{offset VkSparseImageOpaqueMemoryBindInfo, pBinds}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSparseMemoryBind {
+--   >     VkDeviceSize           resourceOffset;
+--   >     VkDeviceSize           size;
+--   >     VkDeviceMemory         memory;
+--   >     VkDeviceSize           memoryOffset;
+--   >     VkSparseMemoryBindFlagsflags;
+--   > } VkSparseMemoryBind;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSparseMemoryBind VkSparseMemoryBind registry at www.khronos.org>
+type VkSparseMemoryBind = VkStruct VkSparseMemoryBind' -- ' closing tick for hsc2hs
+
+data VkSparseMemoryBind' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSparseMemoryBind where
+    type StructRep VkSparseMemoryBind =
+         'StructMeta "VkSparseMemoryBind" VkSparseMemoryBind  -- ' closing tick for hsc2hs
+                                                             #{size VkSparseMemoryBind}
+           #{alignment VkSparseMemoryBind}
+           '[('FieldMeta "resourceOffset" VkDeviceSize 'False  -- ' closing tick for hsc2hs
+                                                              #{offset VkSparseMemoryBind, resourceOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "size" VkDeviceSize 'False 
+                                                    #{offset VkSparseMemoryBind, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memory" VkDeviceMemory 'True 
+                                                       #{offset VkSparseMemoryBind, memory}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "memoryOffset" VkDeviceSize 'False 
+                                                            #{offset VkSparseMemoryBind, memoryOffset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkSparseMemoryBindFlags 'True 
+                                                               #{offset VkSparseMemoryBind, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Specialization.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Specialization.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Specialization.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Specialization.hsc
@@ -2,19 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Specialization
-       (VkSpecializationInfo, VkSpecializationInfo', -- ' closing tick for hsc2hs
-        VkSpecializationMapEntry, VkSpecializationMapEntry') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                 (Storable (..))
+       (VkSpecializationInfo, VkSpecializationMapEntry) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSpecializationInfo {
 --   >     uint32_t               mapEntryCount;
@@ -24,182 +18,38 @@
 --   > } VkSpecializationInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSpecializationInfo VkSpecializationInfo registry at www.khronos.org>
-type VkSpecializationInfo = VulkanStruct VkSpecializationInfo' -- ' closing tick for hsc2hs
+type VkSpecializationInfo = VkStruct VkSpecializationInfo' -- ' closing tick for hsc2hs
 
 data VkSpecializationInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkSpecializationInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSpecializationInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSpecializationInfo where
-        sizeOf ~_ = #{size VkSpecializationInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSpecializationInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSpecializationInfo where
-        type StructFields VkSpecializationInfo =
-             '["mapEntryCount", "pMapEntries", "dataSize", "pData"] -- ' closing tick for hsc2hs
-        type CUnionType VkSpecializationInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSpecializationInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSpecializationInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "mapEntryCount" VkSpecializationInfo where
-        type FieldType "mapEntryCount" VkSpecializationInfo = Word32
-        type FieldOptional "mapEntryCount" VkSpecializationInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "mapEntryCount" VkSpecializationInfo =
-             #{offset VkSpecializationInfo, mapEntryCount}
-        type FieldIsArray "mapEntryCount" VkSpecializationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSpecializationInfo, mapEntryCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "mapEntryCount" VkSpecializationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, mapEntryCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSpecializationInfo, mapEntryCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "mapEntryCount" VkSpecializationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSpecializationInfo, mapEntryCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pMapEntries" VkSpecializationInfo where
-        type FieldType "pMapEntries" VkSpecializationInfo =
-             Ptr VkSpecializationMapEntry
-        type FieldOptional "pMapEntries" VkSpecializationInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pMapEntries" VkSpecializationInfo =
-             #{offset VkSpecializationInfo, pMapEntries}
-        type FieldIsArray "pMapEntries" VkSpecializationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSpecializationInfo, pMapEntries}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pMapEntries" VkSpecializationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, pMapEntries})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSpecializationInfo, pMapEntries}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pMapEntries" VkSpecializationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSpecializationInfo, pMapEntries}
-
-instance {-# OVERLAPPING #-}
-         HasField "dataSize" VkSpecializationInfo where
-        type FieldType "dataSize" VkSpecializationInfo = CSize
-        type FieldOptional "dataSize" VkSpecializationInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dataSize" VkSpecializationInfo =
-             #{offset VkSpecializationInfo, dataSize}
-        type FieldIsArray "dataSize" VkSpecializationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSpecializationInfo, dataSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dataSize" VkSpecializationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, dataSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSpecializationInfo, dataSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dataSize" VkSpecializationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSpecializationInfo, dataSize}
-
-instance {-# OVERLAPPING #-} HasField "pData" VkSpecializationInfo
-         where
-        type FieldType "pData" VkSpecializationInfo = Ptr Void
-        type FieldOptional "pData" VkSpecializationInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pData" VkSpecializationInfo =
-             #{offset VkSpecializationInfo, pData}
-        type FieldIsArray "pData" VkSpecializationInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSpecializationInfo, pData}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pData" VkSpecializationInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationInfo, pData})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSpecializationInfo, pData}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pData" VkSpecializationInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSpecializationInfo, pData}
-
-instance Show VkSpecializationInfo where
-        showsPrec d x
-          = showString "VkSpecializationInfo {" .
-              showString "mapEntryCount = " .
-                showsPrec d (getField @"mapEntryCount" x) .
-                  showString ", " .
-                    showString "pMapEntries = " .
-                      showsPrec d (getField @"pMapEntries" x) .
-                        showString ", " .
-                          showString "dataSize = " .
-                            showsPrec d (getField @"dataSize" x) .
-                              showString ", " .
-                                showString "pData = " .
-                                  showsPrec d (getField @"pData" x) . showChar '}'
+    type StructRep VkSpecializationInfo =
+         'StructMeta "VkSpecializationInfo" VkSpecializationInfo  -- ' closing tick for hsc2hs
+                                                                 #{size VkSpecializationInfo}
+           #{alignment VkSpecializationInfo}
+           '[('FieldMeta "mapEntryCount" Word32 'True  -- ' closing tick for hsc2hs
+                                                      #{offset VkSpecializationInfo, mapEntryCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pMapEntries" (Ptr VkSpecializationMapEntry) 'False
+                #{offset VkSpecializationInfo, pMapEntries}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dataSize" CSize 'True 
+                                                #{offset VkSpecializationInfo, dataSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pData" (Ptr Void) 'False 
+                                                   #{offset VkSpecializationInfo, pData}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkSpecializationMapEntry {
 --   >     uint32_t               constantID;
@@ -208,145 +58,30 @@
 --   > } VkSpecializationMapEntry;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSpecializationMapEntry VkSpecializationMapEntry registry at www.khronos.org>
-type VkSpecializationMapEntry =
-     VulkanStruct VkSpecializationMapEntry' -- ' closing tick for hsc2hs
+type VkSpecializationMapEntry = VkStruct VkSpecializationMapEntry' -- ' closing tick for hsc2hs
 
 data VkSpecializationMapEntry' -- ' closing tick for hsc2hs
 
-instance Eq VkSpecializationMapEntry where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSpecializationMapEntry where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSpecializationMapEntry where
-        sizeOf ~_ = #{size VkSpecializationMapEntry}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSpecializationMapEntry}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSpecializationMapEntry where
-        type StructFields VkSpecializationMapEntry =
-             '["constantID", "offset", "size"] -- ' closing tick for hsc2hs
-        type CUnionType VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSpecializationMapEntry = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "constantID" VkSpecializationMapEntry where
-        type FieldType "constantID" VkSpecializationMapEntry = Word32
-        type FieldOptional "constantID" VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "constantID" VkSpecializationMapEntry =
-             #{offset VkSpecializationMapEntry, constantID}
-        type FieldIsArray "constantID" VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSpecializationMapEntry, constantID}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "constantID" VkSpecializationMapEntry where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, constantID})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSpecializationMapEntry, constantID}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "constantID" VkSpecializationMapEntry where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSpecializationMapEntry, constantID}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkSpecializationMapEntry where
-        type FieldType "offset" VkSpecializationMapEntry = Word32
-        type FieldOptional "offset" VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkSpecializationMapEntry =
-             #{offset VkSpecializationMapEntry, offset}
-        type FieldIsArray "offset" VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSpecializationMapEntry, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkSpecializationMapEntry where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSpecializationMapEntry, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkSpecializationMapEntry where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSpecializationMapEntry, offset}
-
-instance {-# OVERLAPPING #-}
-         HasField "size" VkSpecializationMapEntry where
-        type FieldType "size" VkSpecializationMapEntry = CSize
-        type FieldOptional "size" VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkSpecializationMapEntry =
-             #{offset VkSpecializationMapEntry, size}
-        type FieldIsArray "size" VkSpecializationMapEntry = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSpecializationMapEntry, size}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "size" VkSpecializationMapEntry where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSpecializationMapEntry, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSpecializationMapEntry, size}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "size" VkSpecializationMapEntry where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSpecializationMapEntry, size}
-
-instance Show VkSpecializationMapEntry where
-        showsPrec d x
-          = showString "VkSpecializationMapEntry {" .
-              showString "constantID = " .
-                showsPrec d (getField @"constantID" x) .
-                  showString ", " .
-                    showString "offset = " .
-                      showsPrec d (getField @"offset" x) .
-                        showString ", " .
-                          showString "size = " .
-                            showsPrec d (getField @"size" x) . showChar '}'
+    type StructRep VkSpecializationMapEntry =
+         'StructMeta "VkSpecializationMapEntry" VkSpecializationMapEntry -- ' closing tick for hsc2hs
+           #{size VkSpecializationMapEntry}
+           #{alignment VkSpecializationMapEntry}
+           '[('FieldMeta "constantID" Word32 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkSpecializationMapEntry, constantID}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" Word32 'False 
+                                                #{offset VkSpecializationMapEntry, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "size" CSize 'False 
+                                             #{offset VkSpecializationMapEntry, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/StencilOpState.hsc b/src-gen/Graphics/Vulkan/Types/Struct/StencilOpState.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/StencilOpState.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/StencilOpState.hsc
@@ -2,19 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.StencilOpState
-       (VkStencilOpState, VkStencilOpState') where -- ' closing tick for hsc2hs
-import Foreign.Storable                     (Storable (..))
+       (VkStencilOpState) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.CompareOp (VkCompareOp)
 import Graphics.Vulkan.Types.Enum.Stencil   (VkStencilOp)
-import System.IO.Unsafe                     (unsafeDupablePerformIO)
 
 -- | > typedef struct VkStencilOpState {
 --   >     VkStencilOp            failOp;
@@ -27,280 +23,50 @@
 --   > } VkStencilOpState;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkStencilOpState VkStencilOpState registry at www.khronos.org>
-type VkStencilOpState = VulkanStruct VkStencilOpState' -- ' closing tick for hsc2hs
+type VkStencilOpState = VkStruct VkStencilOpState' -- ' closing tick for hsc2hs
 
 data VkStencilOpState' -- ' closing tick for hsc2hs
 
-instance Eq VkStencilOpState where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkStencilOpState where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkStencilOpState where
-        sizeOf ~_ = #{size VkStencilOpState}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkStencilOpState}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkStencilOpState where
-        type StructFields VkStencilOpState =
-             '["failOp", "passOp", "depthFailOp", "compareOp", "compareMask", -- ' closing tick for hsc2hs
-               "writeMask", "reference"]
-        type CUnionType VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkStencilOpState = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "failOp" VkStencilOpState
-         where
-        type FieldType "failOp" VkStencilOpState = VkStencilOp
-        type FieldOptional "failOp" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "failOp" VkStencilOpState =
-             #{offset VkStencilOpState, failOp}
-        type FieldIsArray "failOp" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkStencilOpState, failOp}
-
-instance {-# OVERLAPPING #-} CanReadField "failOp" VkStencilOpState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, failOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkStencilOpState, failOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "failOp" VkStencilOpState where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkStencilOpState, failOp}
-
-instance {-# OVERLAPPING #-} HasField "passOp" VkStencilOpState
-         where
-        type FieldType "passOp" VkStencilOpState = VkStencilOp
-        type FieldOptional "passOp" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "passOp" VkStencilOpState =
-             #{offset VkStencilOpState, passOp}
-        type FieldIsArray "passOp" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkStencilOpState, passOp}
-
-instance {-# OVERLAPPING #-} CanReadField "passOp" VkStencilOpState
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, passOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkStencilOpState, passOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "passOp" VkStencilOpState where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkStencilOpState, passOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthFailOp" VkStencilOpState where
-        type FieldType "depthFailOp" VkStencilOpState = VkStencilOp
-        type FieldOptional "depthFailOp" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthFailOp" VkStencilOpState =
-             #{offset VkStencilOpState, depthFailOp}
-        type FieldIsArray "depthFailOp" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkStencilOpState, depthFailOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthFailOp" VkStencilOpState where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, depthFailOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkStencilOpState, depthFailOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthFailOp" VkStencilOpState where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkStencilOpState, depthFailOp}
-
-instance {-# OVERLAPPING #-} HasField "compareOp" VkStencilOpState
-         where
-        type FieldType "compareOp" VkStencilOpState = VkCompareOp
-        type FieldOptional "compareOp" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compareOp" VkStencilOpState =
-             #{offset VkStencilOpState, compareOp}
-        type FieldIsArray "compareOp" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkStencilOpState, compareOp}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compareOp" VkStencilOpState where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, compareOp})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkStencilOpState, compareOp}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compareOp" VkStencilOpState where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkStencilOpState, compareOp}
-
-instance {-# OVERLAPPING #-}
-         HasField "compareMask" VkStencilOpState where
-        type FieldType "compareMask" VkStencilOpState = Word32
-        type FieldOptional "compareMask" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "compareMask" VkStencilOpState =
-             #{offset VkStencilOpState, compareMask}
-        type FieldIsArray "compareMask" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkStencilOpState, compareMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compareMask" VkStencilOpState where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, compareMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkStencilOpState, compareMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compareMask" VkStencilOpState where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkStencilOpState, compareMask}
-
-instance {-# OVERLAPPING #-} HasField "writeMask" VkStencilOpState
-         where
-        type FieldType "writeMask" VkStencilOpState = Word32
-        type FieldOptional "writeMask" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "writeMask" VkStencilOpState =
-             #{offset VkStencilOpState, writeMask}
-        type FieldIsArray "writeMask" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkStencilOpState, writeMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "writeMask" VkStencilOpState where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, writeMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkStencilOpState, writeMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "writeMask" VkStencilOpState where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkStencilOpState, writeMask}
-
-instance {-# OVERLAPPING #-} HasField "reference" VkStencilOpState
-         where
-        type FieldType "reference" VkStencilOpState = Word32
-        type FieldOptional "reference" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "reference" VkStencilOpState =
-             #{offset VkStencilOpState, reference}
-        type FieldIsArray "reference" VkStencilOpState = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkStencilOpState, reference}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "reference" VkStencilOpState where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkStencilOpState, reference})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkStencilOpState, reference}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "reference" VkStencilOpState where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkStencilOpState, reference}
-
-instance Show VkStencilOpState where
-        showsPrec d x
-          = showString "VkStencilOpState {" .
-              showString "failOp = " .
-                showsPrec d (getField @"failOp" x) .
-                  showString ", " .
-                    showString "passOp = " .
-                      showsPrec d (getField @"passOp" x) .
-                        showString ", " .
-                          showString "depthFailOp = " .
-                            showsPrec d (getField @"depthFailOp" x) .
-                              showString ", " .
-                                showString "compareOp = " .
-                                  showsPrec d (getField @"compareOp" x) .
-                                    showString ", " .
-                                      showString "compareMask = " .
-                                        showsPrec d (getField @"compareMask" x) .
-                                          showString ", " .
-                                            showString "writeMask = " .
-                                              showsPrec d (getField @"writeMask" x) .
-                                                showString ", " .
-                                                  showString "reference = " .
-                                                    showsPrec d (getField @"reference" x) .
-                                                      showChar '}'
+    type StructRep VkStencilOpState =
+         'StructMeta "VkStencilOpState" VkStencilOpState  -- ' closing tick for hsc2hs
+                                                         #{size VkStencilOpState}
+           #{alignment VkStencilOpState}
+           '[('FieldMeta "failOp" VkStencilOp 'False  -- ' closing tick for hsc2hs
+                                                     #{offset VkStencilOpState, failOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "passOp" VkStencilOp 'False 
+                                                     #{offset VkStencilOpState, passOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthFailOp" VkStencilOp 'False 
+                                                          #{offset VkStencilOpState, depthFailOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compareOp" VkCompareOp 'False 
+                                                        #{offset VkStencilOpState, compareOp}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compareMask" Word32 'False 
+                                                     #{offset VkStencilOpState, compareMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "writeMask" Word32 'False 
+                                                   #{offset VkStencilOpState, writeMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "reference" Word32 'False 
+                                                   #{offset VkStencilOpState, reference}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/SubmitInfo.hsc b/src-gen/Graphics/Vulkan/Types/Struct/SubmitInfo.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/SubmitInfo.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/SubmitInfo.hsc
@@ -2,20 +2,15 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.SubmitInfo
-       (VkSubmitInfo, VkSubmitInfo') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+module Graphics.Vulkan.Types.Struct.SubmitInfo (VkSubmitInfo) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Pipeline      (VkPipelineStageFlags)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Handles            (VkCommandBuffer, VkSemaphore)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSubmitInfo {
 --   >     VkStructureType sType;
@@ -30,354 +25,60 @@
 --   > } VkSubmitInfo;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSubmitInfo VkSubmitInfo registry at www.khronos.org>
-type VkSubmitInfo = VulkanStruct VkSubmitInfo' -- ' closing tick for hsc2hs
+type VkSubmitInfo = VkStruct VkSubmitInfo' -- ' closing tick for hsc2hs
 
 data VkSubmitInfo' -- ' closing tick for hsc2hs
 
-instance Eq VkSubmitInfo where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSubmitInfo where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSubmitInfo where
-        sizeOf ~_ = #{size VkSubmitInfo}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSubmitInfo}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSubmitInfo where
-        type StructFields VkSubmitInfo =
-             '["sType", "pNext", "waitSemaphoreCount", "pWaitSemaphores", -- ' closing tick for hsc2hs
-               "pWaitDstStageMask", "commandBufferCount", "pCommandBuffers",
-               "signalSemaphoreCount", "pSignalSemaphores"]
-        type CUnionType VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSubmitInfo = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkSubmitInfo where
-        type FieldType "sType" VkSubmitInfo = VkStructureType
-        type FieldOptional "sType" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSubmitInfo =
-             #{offset VkSubmitInfo, sType}
-        type FieldIsArray "sType" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-} CanReadField "sType" VkSubmitInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-} CanWriteField "sType" VkSubmitInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkSubmitInfo where
-        type FieldType "pNext" VkSubmitInfo = Ptr Void
-        type FieldOptional "pNext" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSubmitInfo =
-             #{offset VkSubmitInfo, pNext}
-        type FieldIsArray "pNext" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-} CanReadField "pNext" VkSubmitInfo
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-} CanWriteField "pNext" VkSubmitInfo
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "waitSemaphoreCount" VkSubmitInfo where
-        type FieldType "waitSemaphoreCount" VkSubmitInfo = Word32
-        type FieldOptional "waitSemaphoreCount" VkSubmitInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "waitSemaphoreCount" VkSubmitInfo =
-             #{offset VkSubmitInfo, waitSemaphoreCount}
-        type FieldIsArray "waitSemaphoreCount" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubmitInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "waitSemaphoreCount" VkSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, waitSemaphoreCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "waitSemaphoreCount" VkSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, waitSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pWaitSemaphores" VkSubmitInfo where
-        type FieldType "pWaitSemaphores" VkSubmitInfo = Ptr VkSemaphore
-        type FieldOptional "pWaitSemaphores" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pWaitSemaphores" VkSubmitInfo =
-             #{offset VkSubmitInfo, pWaitSemaphores}
-        type FieldIsArray "pWaitSemaphores" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubmitInfo, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pWaitSemaphores" VkSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pWaitSemaphores})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pWaitSemaphores" VkSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, pWaitSemaphores}
-
-instance {-# OVERLAPPING #-}
-         HasField "pWaitDstStageMask" VkSubmitInfo where
-        type FieldType "pWaitDstStageMask" VkSubmitInfo =
-             Ptr VkPipelineStageFlags
-        type FieldOptional "pWaitDstStageMask" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pWaitDstStageMask" VkSubmitInfo =
-             #{offset VkSubmitInfo, pWaitDstStageMask}
-        type FieldIsArray "pWaitDstStageMask" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubmitInfo, pWaitDstStageMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pWaitDstStageMask" VkSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pWaitDstStageMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, pWaitDstStageMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pWaitDstStageMask" VkSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, pWaitDstStageMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "commandBufferCount" VkSubmitInfo where
-        type FieldType "commandBufferCount" VkSubmitInfo = Word32
-        type FieldOptional "commandBufferCount" VkSubmitInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "commandBufferCount" VkSubmitInfo =
-             #{offset VkSubmitInfo, commandBufferCount}
-        type FieldIsArray "commandBufferCount" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubmitInfo, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "commandBufferCount" VkSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, commandBufferCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "commandBufferCount" VkSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, commandBufferCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pCommandBuffers" VkSubmitInfo where
-        type FieldType "pCommandBuffers" VkSubmitInfo = Ptr VkCommandBuffer
-        type FieldOptional "pCommandBuffers" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pCommandBuffers" VkSubmitInfo =
-             #{offset VkSubmitInfo, pCommandBuffers}
-        type FieldIsArray "pCommandBuffers" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubmitInfo, pCommandBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pCommandBuffers" VkSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pCommandBuffers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, pCommandBuffers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pCommandBuffers" VkSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, pCommandBuffers}
-
-instance {-# OVERLAPPING #-}
-         HasField "signalSemaphoreCount" VkSubmitInfo where
-        type FieldType "signalSemaphoreCount" VkSubmitInfo = Word32
-        type FieldOptional "signalSemaphoreCount" VkSubmitInfo = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "signalSemaphoreCount" VkSubmitInfo =
-             #{offset VkSubmitInfo, signalSemaphoreCount}
-        type FieldIsArray "signalSemaphoreCount" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubmitInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "signalSemaphoreCount" VkSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, signalSemaphoreCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "signalSemaphoreCount" VkSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, signalSemaphoreCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pSignalSemaphores" VkSubmitInfo where
-        type FieldType "pSignalSemaphores" VkSubmitInfo = Ptr VkSemaphore
-        type FieldOptional "pSignalSemaphores" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pSignalSemaphores" VkSubmitInfo =
-             #{offset VkSubmitInfo, pSignalSemaphores}
-        type FieldIsArray "pSignalSemaphores" VkSubmitInfo = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubmitInfo, pSignalSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pSignalSemaphores" VkSubmitInfo where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubmitInfo, pSignalSemaphores})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubmitInfo, pSignalSemaphores}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pSignalSemaphores" VkSubmitInfo where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubmitInfo, pSignalSemaphores}
-
-instance Show VkSubmitInfo where
-        showsPrec d x
-          = showString "VkSubmitInfo {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "waitSemaphoreCount = " .
-                            showsPrec d (getField @"waitSemaphoreCount" x) .
-                              showString ", " .
-                                showString "pWaitSemaphores = " .
-                                  showsPrec d (getField @"pWaitSemaphores" x) .
-                                    showString ", " .
-                                      showString "pWaitDstStageMask = " .
-                                        showsPrec d (getField @"pWaitDstStageMask" x) .
-                                          showString ", " .
-                                            showString "commandBufferCount = " .
-                                              showsPrec d (getField @"commandBufferCount" x) .
-                                                showString ", " .
-                                                  showString "pCommandBuffers = " .
-                                                    showsPrec d (getField @"pCommandBuffers" x) .
-                                                      showString ", " .
-                                                        showString "signalSemaphoreCount = " .
-                                                          showsPrec d
-                                                            (getField @"signalSemaphoreCount" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "pSignalSemaphores = " .
-                                                                showsPrec d
-                                                                  (getField @"pSignalSemaphores" x)
-                                                                  . showChar '}'
+    type StructRep VkSubmitInfo =
+         'StructMeta "VkSubmitInfo" VkSubmitInfo  -- ' closing tick for hsc2hs
+                                                 #{size VkSubmitInfo}
+           #{alignment VkSubmitInfo}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSubmitInfo, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSubmitInfo, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "waitSemaphoreCount" Word32 'True 
+                                                           #{offset VkSubmitInfo, waitSemaphoreCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pWaitSemaphores" (Ptr VkSemaphore) 'False 
+                                                                    #{offset VkSubmitInfo, pWaitSemaphores}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pWaitDstStageMask" (Ptr VkPipelineStageFlags) 'False
+                #{offset VkSubmitInfo, pWaitDstStageMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "commandBufferCount" Word32 'True 
+                                                           #{offset VkSubmitInfo, commandBufferCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pCommandBuffers" (Ptr VkCommandBuffer) 'False
+                #{offset VkSubmitInfo, pCommandBuffers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "signalSemaphoreCount" Word32 'True 
+                                                             #{offset VkSubmitInfo, signalSemaphoreCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pSignalSemaphores" (Ptr VkSemaphore) 'False 
+                                                                      #{offset VkSubmitInfo, pSignalSemaphores}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Subpass.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Subpass.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Subpass.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Subpass.hsc
@@ -2,17 +2,13 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Subpass
-       (VkSubpassDependency, VkSubpassDependency', VkSubpassDescription, -- ' closing tick for hsc2hs
-        VkSubpassDescription', VkSubpassSampleLocationsEXT, -- ' closing tick for hsc2hs
-        VkSubpassSampleLocationsEXT') -- ' closing tick for hsc2hs
+       (VkSubpassDependency, VkSubpassDescription,
+        VkSubpassSampleLocationsEXT)
        where
-import Foreign.Storable                            (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.AccessFlags      (VkAccessFlags)
@@ -22,7 +18,6 @@
 import Graphics.Vulkan.Types.Enum.Subpass          (VkSubpassDescriptionFlags)
 import Graphics.Vulkan.Types.Struct.Attachment     (VkAttachmentReference)
 import Graphics.Vulkan.Types.Struct.SampleLocation (VkSampleLocationsInfoEXT)
-import System.IO.Unsafe                            (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSubpassDependency {
 --   >     uint32_t               srcSubpass;
@@ -35,291 +30,53 @@
 --   > } VkSubpassDependency;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSubpassDependency VkSubpassDependency registry at www.khronos.org>
-type VkSubpassDependency = VulkanStruct VkSubpassDependency' -- ' closing tick for hsc2hs
+type VkSubpassDependency = VkStruct VkSubpassDependency' -- ' closing tick for hsc2hs
 
 data VkSubpassDependency' -- ' closing tick for hsc2hs
 
-instance Eq VkSubpassDependency where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSubpassDependency where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSubpassDependency where
-        sizeOf ~_ = #{size VkSubpassDependency}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSubpassDependency}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSubpassDependency where
-        type StructFields VkSubpassDependency =
-             '["srcSubpass", "dstSubpass", "srcStageMask", "dstStageMask", -- ' closing tick for hsc2hs
-               "srcAccessMask", "dstAccessMask", "dependencyFlags"]
-        type CUnionType VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSubpassDependency = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "srcSubpass" VkSubpassDependency where
-        type FieldType "srcSubpass" VkSubpassDependency = Word32
-        type FieldOptional "srcSubpass" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcSubpass" VkSubpassDependency =
-             #{offset VkSubpassDependency, srcSubpass}
-        type FieldIsArray "srcSubpass" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubpassDependency, srcSubpass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcSubpass" VkSubpassDependency where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcSubpass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDependency, srcSubpass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcSubpass" VkSubpassDependency where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDependency, srcSubpass}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstSubpass" VkSubpassDependency where
-        type FieldType "dstSubpass" VkSubpassDependency = Word32
-        type FieldOptional "dstSubpass" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstSubpass" VkSubpassDependency =
-             #{offset VkSubpassDependency, dstSubpass}
-        type FieldIsArray "dstSubpass" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubpassDependency, dstSubpass}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstSubpass" VkSubpassDependency where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstSubpass})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDependency, dstSubpass}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstSubpass" VkSubpassDependency where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDependency, dstSubpass}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcStageMask" VkSubpassDependency where
-        type FieldType "srcStageMask" VkSubpassDependency =
-             VkPipelineStageFlags
-        type FieldOptional "srcStageMask" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "srcStageMask" VkSubpassDependency =
-             #{offset VkSubpassDependency, srcStageMask}
-        type FieldIsArray "srcStageMask" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDependency, srcStageMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcStageMask" VkSubpassDependency where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcStageMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDependency, srcStageMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcStageMask" VkSubpassDependency where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDependency, srcStageMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstStageMask" VkSubpassDependency where
-        type FieldType "dstStageMask" VkSubpassDependency =
-             VkPipelineStageFlags
-        type FieldOptional "dstStageMask" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstStageMask" VkSubpassDependency =
-             #{offset VkSubpassDependency, dstStageMask}
-        type FieldIsArray "dstStageMask" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDependency, dstStageMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstStageMask" VkSubpassDependency where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstStageMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDependency, dstStageMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstStageMask" VkSubpassDependency where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDependency, dstStageMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "srcAccessMask" VkSubpassDependency where
-        type FieldType "srcAccessMask" VkSubpassDependency = VkAccessFlags
-        type FieldOptional "srcAccessMask" VkSubpassDependency = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "srcAccessMask" VkSubpassDependency =
-             #{offset VkSubpassDependency, srcAccessMask}
-        type FieldIsArray "srcAccessMask" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDependency, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "srcAccessMask" VkSubpassDependency where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, srcAccessMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDependency, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "srcAccessMask" VkSubpassDependency where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDependency, srcAccessMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstAccessMask" VkSubpassDependency where
-        type FieldType "dstAccessMask" VkSubpassDependency = VkAccessFlags
-        type FieldOptional "dstAccessMask" VkSubpassDependency = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dstAccessMask" VkSubpassDependency =
-             #{offset VkSubpassDependency, dstAccessMask}
-        type FieldIsArray "dstAccessMask" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDependency, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstAccessMask" VkSubpassDependency where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dstAccessMask})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDependency, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstAccessMask" VkSubpassDependency where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDependency, dstAccessMask}
-
-instance {-# OVERLAPPING #-}
-         HasField "dependencyFlags" VkSubpassDependency where
-        type FieldType "dependencyFlags" VkSubpassDependency =
-             VkDependencyFlags
-        type FieldOptional "dependencyFlags" VkSubpassDependency = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "dependencyFlags" VkSubpassDependency =
-             #{offset VkSubpassDependency, dependencyFlags}
-        type FieldIsArray "dependencyFlags" VkSubpassDependency = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDependency, dependencyFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dependencyFlags" VkSubpassDependency where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDependency, dependencyFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDependency, dependencyFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dependencyFlags" VkSubpassDependency where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDependency, dependencyFlags}
-
-instance Show VkSubpassDependency where
-        showsPrec d x
-          = showString "VkSubpassDependency {" .
-              showString "srcSubpass = " .
-                showsPrec d (getField @"srcSubpass" x) .
-                  showString ", " .
-                    showString "dstSubpass = " .
-                      showsPrec d (getField @"dstSubpass" x) .
-                        showString ", " .
-                          showString "srcStageMask = " .
-                            showsPrec d (getField @"srcStageMask" x) .
-                              showString ", " .
-                                showString "dstStageMask = " .
-                                  showsPrec d (getField @"dstStageMask" x) .
-                                    showString ", " .
-                                      showString "srcAccessMask = " .
-                                        showsPrec d (getField @"srcAccessMask" x) .
-                                          showString ", " .
-                                            showString "dstAccessMask = " .
-                                              showsPrec d (getField @"dstAccessMask" x) .
-                                                showString ", " .
-                                                  showString "dependencyFlags = " .
-                                                    showsPrec d (getField @"dependencyFlags" x) .
-                                                      showChar '}'
+    type StructRep VkSubpassDependency =
+         'StructMeta "VkSubpassDependency" VkSubpassDependency  -- ' closing tick for hsc2hs
+                                                               #{size VkSubpassDependency}
+           #{alignment VkSubpassDependency}
+           '[('FieldMeta "srcSubpass" Word32 'False  -- ' closing tick for hsc2hs
+                                                    #{offset VkSubpassDependency, srcSubpass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstSubpass" Word32 'False 
+                                                    #{offset VkSubpassDependency, dstSubpass}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcStageMask" VkPipelineStageFlags 'False 
+                                                                    #{offset VkSubpassDependency, srcStageMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstStageMask" VkPipelineStageFlags 'False 
+                                                                    #{offset VkSubpassDependency, dstStageMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "srcAccessMask" VkAccessFlags 'True 
+                                                             #{offset VkSubpassDependency, srcAccessMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstAccessMask" VkAccessFlags 'True 
+                                                             #{offset VkSubpassDependency, dstAccessMask}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dependencyFlags" VkDependencyFlags 'True 
+                                                                   #{offset VkSubpassDependency, dependencyFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkSubpassDescription {
 --   >     VkSubpassDescriptionFlags flags;
@@ -335,433 +92,69 @@
 --   > } VkSubpassDescription;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSubpassDescription VkSubpassDescription registry at www.khronos.org>
-type VkSubpassDescription = VulkanStruct VkSubpassDescription' -- ' closing tick for hsc2hs
+type VkSubpassDescription = VkStruct VkSubpassDescription' -- ' closing tick for hsc2hs
 
 data VkSubpassDescription' -- ' closing tick for hsc2hs
 
-instance Eq VkSubpassDescription where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSubpassDescription where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSubpassDescription where
-        sizeOf ~_ = #{size VkSubpassDescription}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSubpassDescription}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSubpassDescription where
-        type StructFields VkSubpassDescription =
-             '["flags", "pipelineBindPoint", "inputAttachmentCount", -- ' closing tick for hsc2hs
-               "pInputAttachments", "colorAttachmentCount", "pColorAttachments",
-               "pResolveAttachments", "pDepthStencilAttachment",
-               "preserveAttachmentCount", "pPreserveAttachments"]
-        type CUnionType VkSubpassDescription = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSubpassDescription = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSubpassDescription = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "flags" VkSubpassDescription
-         where
-        type FieldType "flags" VkSubpassDescription =
-             VkSubpassDescriptionFlags
-        type FieldOptional "flags" VkSubpassDescription = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkSubpassDescription =
-             #{offset VkSubpassDescription, flags}
-        type FieldIsArray "flags" VkSubpassDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubpassDescription, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "pipelineBindPoint" VkSubpassDescription where
-        type FieldType "pipelineBindPoint" VkSubpassDescription =
-             VkPipelineBindPoint
-        type FieldOptional "pipelineBindPoint" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pipelineBindPoint" VkSubpassDescription =
-             #{offset VkSubpassDescription, pipelineBindPoint}
-        type FieldIsArray "pipelineBindPoint" VkSubpassDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pipelineBindPoint" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pipelineBindPoint})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pipelineBindPoint" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, pipelineBindPoint}
-
-instance {-# OVERLAPPING #-}
-         HasField "inputAttachmentCount" VkSubpassDescription where
-        type FieldType "inputAttachmentCount" VkSubpassDescription = Word32
-        type FieldOptional "inputAttachmentCount" VkSubpassDescription =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "inputAttachmentCount" VkSubpassDescription =
-             #{offset VkSubpassDescription, inputAttachmentCount}
-        type FieldIsArray "inputAttachmentCount" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, inputAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "inputAttachmentCount" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, inputAttachmentCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, inputAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "inputAttachmentCount" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, inputAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pInputAttachments" VkSubpassDescription where
-        type FieldType "pInputAttachments" VkSubpassDescription =
-             Ptr VkAttachmentReference
-        type FieldOptional "pInputAttachments" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pInputAttachments" VkSubpassDescription =
-             #{offset VkSubpassDescription, pInputAttachments}
-        type FieldIsArray "pInputAttachments" VkSubpassDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, pInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pInputAttachments" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pInputAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, pInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pInputAttachments" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, pInputAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "colorAttachmentCount" VkSubpassDescription where
-        type FieldType "colorAttachmentCount" VkSubpassDescription = Word32
-        type FieldOptional "colorAttachmentCount" VkSubpassDescription =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "colorAttachmentCount" VkSubpassDescription =
-             #{offset VkSubpassDescription, colorAttachmentCount}
-        type FieldIsArray "colorAttachmentCount" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, colorAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "colorAttachmentCount" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, colorAttachmentCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, colorAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "colorAttachmentCount" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, colorAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pColorAttachments" VkSubpassDescription where
-        type FieldType "pColorAttachments" VkSubpassDescription =
-             Ptr VkAttachmentReference
-        type FieldOptional "pColorAttachments" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pColorAttachments" VkSubpassDescription =
-             #{offset VkSubpassDescription, pColorAttachments}
-        type FieldIsArray "pColorAttachments" VkSubpassDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, pColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pColorAttachments" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pColorAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, pColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pColorAttachments" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, pColorAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "pResolveAttachments" VkSubpassDescription where
-        type FieldType "pResolveAttachments" VkSubpassDescription =
-             Ptr VkAttachmentReference
-        type FieldOptional "pResolveAttachments" VkSubpassDescription =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pResolveAttachments" VkSubpassDescription =
-             #{offset VkSubpassDescription, pResolveAttachments}
-        type FieldIsArray "pResolveAttachments" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, pResolveAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pResolveAttachments" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pResolveAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, pResolveAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pResolveAttachments" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, pResolveAttachments}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDepthStencilAttachment" VkSubpassDescription where
-        type FieldType "pDepthStencilAttachment" VkSubpassDescription =
-             Ptr VkAttachmentReference
-        type FieldOptional "pDepthStencilAttachment" VkSubpassDescription =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "pDepthStencilAttachment" VkSubpassDescription =
-             #{offset VkSubpassDescription, pDepthStencilAttachment}
-        type FieldIsArray "pDepthStencilAttachment" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, pDepthStencilAttachment}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDepthStencilAttachment" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pDepthStencilAttachment})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, pDepthStencilAttachment}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDepthStencilAttachment" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, pDepthStencilAttachment}
-
-instance {-# OVERLAPPING #-}
-         HasField "preserveAttachmentCount" VkSubpassDescription where
-        type FieldType "preserveAttachmentCount" VkSubpassDescription =
-             Word32
-        type FieldOptional "preserveAttachmentCount" VkSubpassDescription =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "preserveAttachmentCount" VkSubpassDescription =
-             #{offset VkSubpassDescription, preserveAttachmentCount}
-        type FieldIsArray "preserveAttachmentCount" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, preserveAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "preserveAttachmentCount" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, preserveAttachmentCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, preserveAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "preserveAttachmentCount" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, preserveAttachmentCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pPreserveAttachments" VkSubpassDescription where
-        type FieldType "pPreserveAttachments" VkSubpassDescription =
-             Ptr Word32
-        type FieldOptional "pPreserveAttachments" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pPreserveAttachments" VkSubpassDescription =
-             #{offset VkSubpassDescription, pPreserveAttachments}
-        type FieldIsArray "pPreserveAttachments" VkSubpassDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassDescription, pPreserveAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pPreserveAttachments" VkSubpassDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassDescription, pPreserveAttachments})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassDescription, pPreserveAttachments}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pPreserveAttachments" VkSubpassDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassDescription, pPreserveAttachments}
-
-instance Show VkSubpassDescription where
-        showsPrec d x
-          = showString "VkSubpassDescription {" .
-              showString "flags = " .
-                showsPrec d (getField @"flags" x) .
-                  showString ", " .
-                    showString "pipelineBindPoint = " .
-                      showsPrec d (getField @"pipelineBindPoint" x) .
-                        showString ", " .
-                          showString "inputAttachmentCount = " .
-                            showsPrec d (getField @"inputAttachmentCount" x) .
-                              showString ", " .
-                                showString "pInputAttachments = " .
-                                  showsPrec d (getField @"pInputAttachments" x) .
-                                    showString ", " .
-                                      showString "colorAttachmentCount = " .
-                                        showsPrec d (getField @"colorAttachmentCount" x) .
-                                          showString ", " .
-                                            showString "pColorAttachments = " .
-                                              showsPrec d (getField @"pColorAttachments" x) .
-                                                showString ", " .
-                                                  showString "pResolveAttachments = " .
-                                                    showsPrec d (getField @"pResolveAttachments" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "pDepthStencilAttachment = " .
-                                                          showsPrec d
-                                                            (getField @"pDepthStencilAttachment" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString
-                                                                "preserveAttachmentCount = "
-                                                                .
-                                                                showsPrec d
-                                                                  (getField
-                                                                     @"preserveAttachmentCount"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "pPreserveAttachments = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"pPreserveAttachments"
-                                                                           x)
-                                                                        . showChar '}'
+    type StructRep VkSubpassDescription =
+         'StructMeta "VkSubpassDescription" VkSubpassDescription  -- ' closing tick for hsc2hs
+                                                                 #{size VkSubpassDescription}
+           #{alignment VkSubpassDescription}
+           '[('FieldMeta "flags" VkSubpassDescriptionFlags 'True  -- ' closing tick for hsc2hs
+                                                                 #{offset VkSubpassDescription, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pipelineBindPoint" VkPipelineBindPoint 'False
+                #{offset VkSubpassDescription, pipelineBindPoint}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "inputAttachmentCount" Word32 'True 
+                                                             #{offset VkSubpassDescription, inputAttachmentCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pInputAttachments" (Ptr VkAttachmentReference) 'False
+                #{offset VkSubpassDescription, pInputAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "colorAttachmentCount" Word32 'True 
+                                                             #{offset VkSubpassDescription, colorAttachmentCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pColorAttachments" (Ptr VkAttachmentReference) 'False
+                #{offset VkSubpassDescription, pColorAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pResolveAttachments" (Ptr VkAttachmentReference) 'True
+                #{offset VkSubpassDescription, pResolveAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDepthStencilAttachment" (Ptr VkAttachmentReference) -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkSubpassDescription, pDepthStencilAttachment}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "preserveAttachmentCount" Word32 'True 
+                                                                #{offset VkSubpassDescription, preserveAttachmentCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pPreserveAttachments" (Ptr Word32) 'False 
+                                                                    #{offset VkSubpassDescription, pPreserveAttachments}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkSubpassSampleLocationsEXT {
 --   >     uint32_t                         subpassIndex;
@@ -770,119 +163,26 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSubpassSampleLocationsEXT VkSubpassSampleLocationsEXT registry at www.khronos.org>
 type VkSubpassSampleLocationsEXT =
-     VulkanStruct VkSubpassSampleLocationsEXT' -- ' closing tick for hsc2hs
+     VkStruct VkSubpassSampleLocationsEXT' -- ' closing tick for hsc2hs
 
 data VkSubpassSampleLocationsEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkSubpassSampleLocationsEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSubpassSampleLocationsEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSubpassSampleLocationsEXT where
-        sizeOf ~_ = #{size VkSubpassSampleLocationsEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSubpassSampleLocationsEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSubpassSampleLocationsEXT where
-        type StructFields VkSubpassSampleLocationsEXT =
-             '["subpassIndex", "sampleLocationsInfo"] -- ' closing tick for hsc2hs
-        type CUnionType VkSubpassSampleLocationsEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSubpassSampleLocationsEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSubpassSampleLocationsEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "subpassIndex" VkSubpassSampleLocationsEXT where
-        type FieldType "subpassIndex" VkSubpassSampleLocationsEXT = Word32
-        type FieldOptional "subpassIndex" VkSubpassSampleLocationsEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "subpassIndex" VkSubpassSampleLocationsEXT =
-             #{offset VkSubpassSampleLocationsEXT, subpassIndex}
-        type FieldIsArray "subpassIndex" VkSubpassSampleLocationsEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassSampleLocationsEXT, subpassIndex}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "subpassIndex" VkSubpassSampleLocationsEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassSampleLocationsEXT, subpassIndex})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassSampleLocationsEXT, subpassIndex}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "subpassIndex" VkSubpassSampleLocationsEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassSampleLocationsEXT, subpassIndex}
-
-instance {-# OVERLAPPING #-}
-         HasField "sampleLocationsInfo" VkSubpassSampleLocationsEXT where
-        type FieldType "sampleLocationsInfo" VkSubpassSampleLocationsEXT =
-             VkSampleLocationsInfoEXT
-        type FieldOptional "sampleLocationsInfo"
-               VkSubpassSampleLocationsEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sampleLocationsInfo" VkSubpassSampleLocationsEXT
-             =
-             #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
-        type FieldIsArray "sampleLocationsInfo" VkSubpassSampleLocationsEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sampleLocationsInfo" VkSubpassSampleLocationsEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sampleLocationsInfo" VkSubpassSampleLocationsEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
-
-instance Show VkSubpassSampleLocationsEXT where
-        showsPrec d x
-          = showString "VkSubpassSampleLocationsEXT {" .
-              showString "subpassIndex = " .
-                showsPrec d (getField @"subpassIndex" x) .
-                  showString ", " .
-                    showString "sampleLocationsInfo = " .
-                      showsPrec d (getField @"sampleLocationsInfo" x) . showChar '}'
+    type StructRep VkSubpassSampleLocationsEXT =
+         'StructMeta "VkSubpassSampleLocationsEXT" -- ' closing tick for hsc2hs
+           VkSubpassSampleLocationsEXT
+           #{size VkSubpassSampleLocationsEXT}
+           #{alignment VkSubpassSampleLocationsEXT}
+           '[('FieldMeta "subpassIndex" Word32 'False  -- ' closing tick for hsc2hs
+                                                      #{offset VkSubpassSampleLocationsEXT, subpassIndex}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "sampleLocationsInfo" VkSampleLocationsInfoEXT 'False
+                #{offset VkSubpassSampleLocationsEXT, sampleLocationsInfo}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/SubresourceLayout.hsc b/src-gen/Graphics/Vulkan/Types/Struct/SubresourceLayout.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/SubresourceLayout.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/SubresourceLayout.hsc
@@ -2,18 +2,14 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.SubresourceLayout
-       (VkSubresourceLayout, VkSubresourceLayout') where -- ' closing tick for hsc2hs
-import Foreign.Storable                 (Storable (..))
+       (VkSubresourceLayout) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.BaseTypes  (VkDeviceSize)
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | > typedef struct VkSubresourceLayout {
 --   >     VkDeviceSize           offset;
@@ -24,210 +20,40 @@
 --   > } VkSubresourceLayout;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSubresourceLayout VkSubresourceLayout registry at www.khronos.org>
-type VkSubresourceLayout = VulkanStruct VkSubresourceLayout' -- ' closing tick for hsc2hs
+type VkSubresourceLayout = VkStruct VkSubresourceLayout' -- ' closing tick for hsc2hs
 
 data VkSubresourceLayout' -- ' closing tick for hsc2hs
 
-instance Eq VkSubresourceLayout where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSubresourceLayout where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSubresourceLayout where
-        sizeOf ~_ = #{size VkSubresourceLayout}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSubresourceLayout}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkSubresourceLayout where
-        type StructFields VkSubresourceLayout =
-             '["offset", "size", "rowPitch", "arrayPitch", "depthPitch"] -- ' closing tick for hsc2hs
-        type CUnionType VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSubresourceLayout = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSubresourceLayout = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "offset" VkSubresourceLayout
-         where
-        type FieldType "offset" VkSubresourceLayout = VkDeviceSize
-        type FieldOptional "offset" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkSubresourceLayout =
-             #{offset VkSubresourceLayout, offset}
-        type FieldIsArray "offset" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubresourceLayout, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkSubresourceLayout where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubresourceLayout, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkSubresourceLayout where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubresourceLayout, offset}
-
-instance {-# OVERLAPPING #-} HasField "size" VkSubresourceLayout
-         where
-        type FieldType "size" VkSubresourceLayout = VkDeviceSize
-        type FieldOptional "size" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "size" VkSubresourceLayout =
-             #{offset VkSubresourceLayout, size}
-        type FieldIsArray "size" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubresourceLayout, size}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "size" VkSubresourceLayout where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, size})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubresourceLayout, size}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "size" VkSubresourceLayout where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubresourceLayout, size}
-
-instance {-# OVERLAPPING #-}
-         HasField "rowPitch" VkSubresourceLayout where
-        type FieldType "rowPitch" VkSubresourceLayout = VkDeviceSize
-        type FieldOptional "rowPitch" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "rowPitch" VkSubresourceLayout =
-             #{offset VkSubresourceLayout, rowPitch}
-        type FieldIsArray "rowPitch" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubresourceLayout, rowPitch}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "rowPitch" VkSubresourceLayout where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, rowPitch})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubresourceLayout, rowPitch}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "rowPitch" VkSubresourceLayout where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubresourceLayout, rowPitch}
-
-instance {-# OVERLAPPING #-}
-         HasField "arrayPitch" VkSubresourceLayout where
-        type FieldType "arrayPitch" VkSubresourceLayout = VkDeviceSize
-        type FieldOptional "arrayPitch" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "arrayPitch" VkSubresourceLayout =
-             #{offset VkSubresourceLayout, arrayPitch}
-        type FieldIsArray "arrayPitch" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubresourceLayout, arrayPitch}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "arrayPitch" VkSubresourceLayout where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, arrayPitch})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubresourceLayout, arrayPitch}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "arrayPitch" VkSubresourceLayout where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubresourceLayout, arrayPitch}
-
-instance {-# OVERLAPPING #-}
-         HasField "depthPitch" VkSubresourceLayout where
-        type FieldType "depthPitch" VkSubresourceLayout = VkDeviceSize
-        type FieldOptional "depthPitch" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "depthPitch" VkSubresourceLayout =
-             #{offset VkSubresourceLayout, depthPitch}
-        type FieldIsArray "depthPitch" VkSubresourceLayout = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSubresourceLayout, depthPitch}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "depthPitch" VkSubresourceLayout where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSubresourceLayout, depthPitch})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSubresourceLayout, depthPitch}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "depthPitch" VkSubresourceLayout where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSubresourceLayout, depthPitch}
-
-instance Show VkSubresourceLayout where
-        showsPrec d x
-          = showString "VkSubresourceLayout {" .
-              showString "offset = " .
-                showsPrec d (getField @"offset" x) .
-                  showString ", " .
-                    showString "size = " .
-                      showsPrec d (getField @"size" x) .
-                        showString ", " .
-                          showString "rowPitch = " .
-                            showsPrec d (getField @"rowPitch" x) .
-                              showString ", " .
-                                showString "arrayPitch = " .
-                                  showsPrec d (getField @"arrayPitch" x) .
-                                    showString ", " .
-                                      showString "depthPitch = " .
-                                        showsPrec d (getField @"depthPitch" x) . showChar '}'
+    type StructRep VkSubresourceLayout =
+         'StructMeta "VkSubresourceLayout" VkSubresourceLayout  -- ' closing tick for hsc2hs
+                                                               #{size VkSubresourceLayout}
+           #{alignment VkSubresourceLayout}
+           '[('FieldMeta "offset" VkDeviceSize 'False  -- ' closing tick for hsc2hs
+                                                      #{offset VkSubresourceLayout, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "size" VkDeviceSize 'False 
+                                                    #{offset VkSubresourceLayout, size}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "rowPitch" VkDeviceSize 'False 
+                                                        #{offset VkSubresourceLayout, rowPitch}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "arrayPitch" VkDeviceSize 'False 
+                                                          #{offset VkSubresourceLayout, arrayPitch}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "depthPitch" VkDeviceSize 'False 
+                                                          #{offset VkSubresourceLayout, depthPitch}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Surface.hsc
@@ -2,1482 +2,297 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.Surface
-       (VkSurfaceCapabilities2EXT, VkSurfaceCapabilities2EXT', -- ' closing tick for hsc2hs
-        VkSurfaceCapabilities2KHR, VkSurfaceCapabilities2KHR', -- ' closing tick for hsc2hs
-        VkSurfaceCapabilitiesKHR, VkSurfaceCapabilitiesKHR', -- ' closing tick for hsc2hs
-        VkSurfaceFormat2KHR, VkSurfaceFormat2KHR', VkSurfaceFormatKHR, -- ' closing tick for hsc2hs
-        VkSurfaceFormatKHR') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                  (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.Enum.Color                  (VkColorSpaceKHR)
-import Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR (VkCompositeAlphaFlagsKHR)
-import Graphics.Vulkan.Types.Enum.Format                 (VkFormat)
-import Graphics.Vulkan.Types.Enum.Image                  (VkImageUsageFlags)
-import Graphics.Vulkan.Types.Enum.StructureType          (VkStructureType)
-import Graphics.Vulkan.Types.Enum.Surface                (VkSurfaceCounterFlagsEXT,
-                                                          VkSurfaceTransformFlagBitsKHR,
-                                                          VkSurfaceTransformFlagsKHR)
-import Graphics.Vulkan.Types.Struct.Extent               (VkExtent2D)
-import System.IO.Unsafe                                  (unsafeDupablePerformIO)
-
--- | > typedef struct VkSurfaceCapabilities2EXT {
---   >     VkStructureType sType;
---   >     void*                            pNext;
---   >     uint32_t                         minImageCount;
---   >     uint32_t                         maxImageCount;
---   >     VkExtent2D                       currentExtent;
---   >     VkExtent2D                       minImageExtent;
---   >     VkExtent2D                       maxImageExtent;
---   >     uint32_t                         maxImageArrayLayers;
---   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
---   >     VkSurfaceTransformFlagBitsKHR    currentTransform;
---   >     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
---   >     VkImageUsageFlags                supportedUsageFlags;
---   >     VkSurfaceCounterFlagsEXT supportedSurfaceCounters;
---   > } VkSurfaceCapabilities2EXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceCapabilities2EXT VkSurfaceCapabilities2EXT registry at www.khronos.org>
-type VkSurfaceCapabilities2EXT =
-     VulkanStruct VkSurfaceCapabilities2EXT' -- ' closing tick for hsc2hs
-
-data VkSurfaceCapabilities2EXT' -- ' closing tick for hsc2hs
-
-instance Eq VkSurfaceCapabilities2EXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSurfaceCapabilities2EXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSurfaceCapabilities2EXT where
-        sizeOf ~_ = #{size VkSurfaceCapabilities2EXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSurfaceCapabilities2EXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSurfaceCapabilities2EXT where
-        type StructFields VkSurfaceCapabilities2EXT =
-             '["sType", "pNext", "minImageCount", "maxImageCount", -- ' closing tick for hsc2hs
-               "currentExtent", "minImageExtent", "maxImageExtent",
-               "maxImageArrayLayers", "supportedTransforms", "currentTransform",
-               "supportedCompositeAlpha", "supportedUsageFlags",
-               "supportedSurfaceCounters"]
-        type CUnionType VkSurfaceCapabilities2EXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSurfaceCapabilities2EXT = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSurfaceCapabilities2EXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSurfaceCapabilities2EXT where
-        type FieldType "sType" VkSurfaceCapabilities2EXT = VkStructureType
-        type FieldOptional "sType" VkSurfaceCapabilities2EXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, sType}
-        type FieldIsArray "sType" VkSurfaceCapabilities2EXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSurfaceCapabilities2EXT where
-        type FieldType "pNext" VkSurfaceCapabilities2EXT = Ptr Void
-        type FieldOptional "pNext" VkSurfaceCapabilities2EXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, pNext}
-        type FieldIsArray "pNext" VkSurfaceCapabilities2EXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "minImageCount" VkSurfaceCapabilities2EXT where
-        type FieldType "minImageCount" VkSurfaceCapabilities2EXT = Word32
-        type FieldOptional "minImageCount" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minImageCount" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, minImageCount}
-        type FieldIsArray "minImageCount" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minImageCount" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, minImageCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minImageCount" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageCount" VkSurfaceCapabilities2EXT where
-        type FieldType "maxImageCount" VkSurfaceCapabilities2EXT = Word32
-        type FieldOptional "maxImageCount" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageCount" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, maxImageCount}
-        type FieldIsArray "maxImageCount" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, maxImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageCount" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageCount" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "currentExtent" VkSurfaceCapabilities2EXT where
-        type FieldType "currentExtent" VkSurfaceCapabilities2EXT =
-             VkExtent2D
-        type FieldOptional "currentExtent" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "currentExtent" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, currentExtent}
-        type FieldIsArray "currentExtent" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, currentExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "currentExtent" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, currentExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, currentExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "currentExtent" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, currentExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "minImageExtent" VkSurfaceCapabilities2EXT where
-        type FieldType "minImageExtent" VkSurfaceCapabilities2EXT =
-             VkExtent2D
-        type FieldOptional "minImageExtent" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minImageExtent" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, minImageExtent}
-        type FieldIsArray "minImageExtent" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, minImageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minImageExtent" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, minImageExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, minImageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minImageExtent" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, minImageExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageExtent" VkSurfaceCapabilities2EXT where
-        type FieldType "maxImageExtent" VkSurfaceCapabilities2EXT =
-             VkExtent2D
-        type FieldOptional "maxImageExtent" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageExtent" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
-        type FieldIsArray "maxImageExtent" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageExtent" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageExtent" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageArrayLayers" VkSurfaceCapabilities2EXT where
-        type FieldType "maxImageArrayLayers" VkSurfaceCapabilities2EXT =
-             Word32
-        type FieldOptional "maxImageArrayLayers" VkSurfaceCapabilities2EXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageArrayLayers" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
-        type FieldIsArray "maxImageArrayLayers" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageArrayLayers" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageArrayLayers" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedTransforms" VkSurfaceCapabilities2EXT where
-        type FieldType "supportedTransforms" VkSurfaceCapabilities2EXT =
-             VkSurfaceTransformFlagsKHR
-        type FieldOptional "supportedTransforms" VkSurfaceCapabilities2EXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedTransforms" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
-        type FieldIsArray "supportedTransforms" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedTransforms" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedTransforms})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedTransforms" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         HasField "currentTransform" VkSurfaceCapabilities2EXT where
-        type FieldType "currentTransform" VkSurfaceCapabilities2EXT =
-             VkSurfaceTransformFlagBitsKHR
-        type FieldOptional "currentTransform" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "currentTransform" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, currentTransform}
-        type FieldIsArray "currentTransform" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, currentTransform}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "currentTransform" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, currentTransform})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, currentTransform}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "currentTransform" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, currentTransform}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT where
-        type FieldType "supportedCompositeAlpha" VkSurfaceCapabilities2EXT
-             = VkCompositeAlphaFlagsKHR
-        type FieldOptional "supportedCompositeAlpha"
-               VkSurfaceCapabilities2EXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedCompositeAlpha"
-               VkSurfaceCapabilities2EXT
-             =
-             #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
-        type FieldIsArray "supportedCompositeAlpha"
-               VkSurfaceCapabilities2EXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedCompositeAlpha" VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
-        type FieldType "supportedUsageFlags" VkSurfaceCapabilities2EXT =
-             VkImageUsageFlags
-        type FieldOptional "supportedUsageFlags" VkSurfaceCapabilities2EXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedUsageFlags" VkSurfaceCapabilities2EXT =
-             #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
-        type FieldIsArray "supportedUsageFlags" VkSurfaceCapabilities2EXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedUsageFlags" VkSurfaceCapabilities2EXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedSurfaceCounters" VkSurfaceCapabilities2EXT where
-        type FieldType "supportedSurfaceCounters" VkSurfaceCapabilities2EXT
-             = VkSurfaceCounterFlagsEXT
-        type FieldOptional "supportedSurfaceCounters"
-               VkSurfaceCapabilities2EXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedSurfaceCounters"
-               VkSurfaceCapabilities2EXT
-             =
-             #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
-        type FieldIsArray "supportedSurfaceCounters"
-               VkSurfaceCapabilities2EXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedSurfaceCounters" VkSurfaceCapabilities2EXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedSurfaceCounters" VkSurfaceCapabilities2EXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
-
-instance Show VkSurfaceCapabilities2EXT where
-        showsPrec d x
-          = showString "VkSurfaceCapabilities2EXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "minImageCount = " .
-                            showsPrec d (getField @"minImageCount" x) .
-                              showString ", " .
-                                showString "maxImageCount = " .
-                                  showsPrec d (getField @"maxImageCount" x) .
-                                    showString ", " .
-                                      showString "currentExtent = " .
-                                        showsPrec d (getField @"currentExtent" x) .
-                                          showString ", " .
-                                            showString "minImageExtent = " .
-                                              showsPrec d (getField @"minImageExtent" x) .
-                                                showString ", " .
-                                                  showString "maxImageExtent = " .
-                                                    showsPrec d (getField @"maxImageExtent" x) .
-                                                      showString ", " .
-                                                        showString "maxImageArrayLayers = " .
-                                                          showsPrec d
-                                                            (getField @"maxImageArrayLayers" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString "supportedTransforms = " .
-                                                                showsPrec d
-                                                                  (getField @"supportedTransforms"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "currentTransform = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"currentTransform"
-                                                                           x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "supportedCompositeAlpha = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"supportedCompositeAlpha"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "supportedUsageFlags = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"supportedUsageFlags"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "supportedSurfaceCounters = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"supportedSurfaceCounters"
-                                                                                             x)
-                                                                                          .
-                                                                                          showChar
-                                                                                            '}'
-
--- | > typedef struct VkSurfaceCapabilities2KHR {
---   >     VkStructureType sType;
---   >     void*   pNext;
---   >     VkSurfaceCapabilitiesKHR surfaceCapabilities;
---   > } VkSurfaceCapabilities2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceCapabilities2KHR VkSurfaceCapabilities2KHR registry at www.khronos.org>
-type VkSurfaceCapabilities2KHR =
-     VulkanStruct VkSurfaceCapabilities2KHR' -- ' closing tick for hsc2hs
-
-data VkSurfaceCapabilities2KHR' -- ' closing tick for hsc2hs
-
-instance Eq VkSurfaceCapabilities2KHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSurfaceCapabilities2KHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSurfaceCapabilities2KHR where
-        sizeOf ~_ = #{size VkSurfaceCapabilities2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSurfaceCapabilities2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSurfaceCapabilities2KHR where
-        type StructFields VkSurfaceCapabilities2KHR =
-             '["sType", "pNext", "surfaceCapabilities"] -- ' closing tick for hsc2hs
-        type CUnionType VkSurfaceCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSurfaceCapabilities2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSurfaceCapabilities2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSurfaceCapabilities2KHR where
-        type FieldType "sType" VkSurfaceCapabilities2KHR = VkStructureType
-        type FieldOptional "sType" VkSurfaceCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSurfaceCapabilities2KHR =
-             #{offset VkSurfaceCapabilities2KHR, sType}
-        type FieldIsArray "sType" VkSurfaceCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSurfaceCapabilities2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSurfaceCapabilities2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSurfaceCapabilities2KHR where
-        type FieldType "pNext" VkSurfaceCapabilities2KHR = Ptr Void
-        type FieldOptional "pNext" VkSurfaceCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSurfaceCapabilities2KHR =
-             #{offset VkSurfaceCapabilities2KHR, pNext}
-        type FieldIsArray "pNext" VkSurfaceCapabilities2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSurfaceCapabilities2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSurfaceCapabilities2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "surfaceCapabilities" VkSurfaceCapabilities2KHR where
-        type FieldType "surfaceCapabilities" VkSurfaceCapabilities2KHR =
-             VkSurfaceCapabilitiesKHR
-        type FieldOptional "surfaceCapabilities" VkSurfaceCapabilities2KHR
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "surfaceCapabilities" VkSurfaceCapabilities2KHR =
-             #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
-        type FieldIsArray "surfaceCapabilities" VkSurfaceCapabilities2KHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "surfaceCapabilities" VkSurfaceCapabilities2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "surfaceCapabilities" VkSurfaceCapabilities2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
-
-instance Show VkSurfaceCapabilities2KHR where
-        showsPrec d x
-          = showString "VkSurfaceCapabilities2KHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "surfaceCapabilities = " .
-                            showsPrec d (getField @"surfaceCapabilities" x) . showChar '}'
-
--- | > typedef struct VkSurfaceCapabilitiesKHR {
---   >     uint32_t                         minImageCount;
---   >     uint32_t                         maxImageCount;
---   >     VkExtent2D                       currentExtent;
---   >     VkExtent2D                       minImageExtent;
---   >     VkExtent2D                       maxImageExtent;
---   >     uint32_t                         maxImageArrayLayers;
---   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
---   >     VkSurfaceTransformFlagBitsKHR    currentTransform;
---   >     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
---   >     VkImageUsageFlags                supportedUsageFlags;
---   > } VkSurfaceCapabilitiesKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceCapabilitiesKHR VkSurfaceCapabilitiesKHR registry at www.khronos.org>
-type VkSurfaceCapabilitiesKHR =
-     VulkanStruct VkSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs
-
-data VkSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkSurfaceCapabilitiesKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSurfaceCapabilitiesKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSurfaceCapabilitiesKHR where
-        sizeOf ~_ = #{size VkSurfaceCapabilitiesKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSurfaceCapabilitiesKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSurfaceCapabilitiesKHR where
-        type StructFields VkSurfaceCapabilitiesKHR =
-             '["minImageCount", "maxImageCount", "currentExtent", -- ' closing tick for hsc2hs
-               "minImageExtent", "maxImageExtent", "maxImageArrayLayers",
-               "supportedTransforms", "currentTransform",
-               "supportedCompositeAlpha", "supportedUsageFlags"]
-        type CUnionType VkSurfaceCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSurfaceCapabilitiesKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSurfaceCapabilitiesKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "minImageCount" VkSurfaceCapabilitiesKHR where
-        type FieldType "minImageCount" VkSurfaceCapabilitiesKHR = Word32
-        type FieldOptional "minImageCount" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minImageCount" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, minImageCount}
-        type FieldIsArray "minImageCount" VkSurfaceCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minImageCount" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, minImageCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minImageCount" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageCount" VkSurfaceCapabilitiesKHR where
-        type FieldType "maxImageCount" VkSurfaceCapabilitiesKHR = Word32
-        type FieldOptional "maxImageCount" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageCount" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
-        type FieldIsArray "maxImageCount" VkSurfaceCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageCount" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageCount" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "currentExtent" VkSurfaceCapabilitiesKHR where
-        type FieldType "currentExtent" VkSurfaceCapabilitiesKHR =
-             VkExtent2D
-        type FieldOptional "currentExtent" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "currentExtent" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, currentExtent}
-        type FieldIsArray "currentExtent" VkSurfaceCapabilitiesKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, currentExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "currentExtent" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, currentExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, currentExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "currentExtent" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, currentExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "minImageExtent" VkSurfaceCapabilitiesKHR where
-        type FieldType "minImageExtent" VkSurfaceCapabilitiesKHR =
-             VkExtent2D
-        type FieldOptional "minImageExtent" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minImageExtent" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
-        type FieldIsArray "minImageExtent" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minImageExtent" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, minImageExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minImageExtent" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageExtent" VkSurfaceCapabilitiesKHR where
-        type FieldType "maxImageExtent" VkSurfaceCapabilitiesKHR =
-             VkExtent2D
-        type FieldOptional "maxImageExtent" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageExtent" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
-        type FieldIsArray "maxImageExtent" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageExtent" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageExtent" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "maxImageArrayLayers" VkSurfaceCapabilitiesKHR where
-        type FieldType "maxImageArrayLayers" VkSurfaceCapabilitiesKHR =
-             Word32
-        type FieldOptional "maxImageArrayLayers" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxImageArrayLayers" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
-        type FieldIsArray "maxImageArrayLayers" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "maxImageArrayLayers" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "maxImageArrayLayers" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedTransforms" VkSurfaceCapabilitiesKHR where
-        type FieldType "supportedTransforms" VkSurfaceCapabilitiesKHR =
-             VkSurfaceTransformFlagsKHR
-        type FieldOptional "supportedTransforms" VkSurfaceCapabilitiesKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedTransforms" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
-        type FieldIsArray "supportedTransforms" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedTransforms" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedTransforms})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedTransforms" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
-
-instance {-# OVERLAPPING #-}
-         HasField "currentTransform" VkSurfaceCapabilitiesKHR where
-        type FieldType "currentTransform" VkSurfaceCapabilitiesKHR =
-             VkSurfaceTransformFlagBitsKHR
-        type FieldOptional "currentTransform" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "currentTransform" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, currentTransform}
-        type FieldIsArray "currentTransform" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, currentTransform}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "currentTransform" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, currentTransform})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, currentTransform}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "currentTransform" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, currentTransform}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR where
-        type FieldType "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR =
-             VkCompositeAlphaFlagsKHR
-        type FieldOptional "supportedCompositeAlpha"
-               VkSurfaceCapabilitiesKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR
-             =
-             #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
-        type FieldIsArray "supportedCompositeAlpha"
-               VkSurfaceCapabilitiesKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedCompositeAlpha" VkSurfaceCapabilitiesKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportedUsageFlags" VkSurfaceCapabilitiesKHR where
-        type FieldType "supportedUsageFlags" VkSurfaceCapabilitiesKHR =
-             VkImageUsageFlags
-        type FieldOptional "supportedUsageFlags" VkSurfaceCapabilitiesKHR =
-             'True -- ' closing tick for hsc2hs
-        type FieldOffset "supportedUsageFlags" VkSurfaceCapabilitiesKHR =
-             #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
-        type FieldIsArray "supportedUsageFlags" VkSurfaceCapabilitiesKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportedUsageFlags" VkSurfaceCapabilitiesKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportedUsageFlags" VkSurfaceCapabilitiesKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
-
-instance Show VkSurfaceCapabilitiesKHR where
-        showsPrec d x
-          = showString "VkSurfaceCapabilitiesKHR {" .
-              showString "minImageCount = " .
-                showsPrec d (getField @"minImageCount" x) .
-                  showString ", " .
-                    showString "maxImageCount = " .
-                      showsPrec d (getField @"maxImageCount" x) .
-                        showString ", " .
-                          showString "currentExtent = " .
-                            showsPrec d (getField @"currentExtent" x) .
-                              showString ", " .
-                                showString "minImageExtent = " .
-                                  showsPrec d (getField @"minImageExtent" x) .
-                                    showString ", " .
-                                      showString "maxImageExtent = " .
-                                        showsPrec d (getField @"maxImageExtent" x) .
-                                          showString ", " .
-                                            showString "maxImageArrayLayers = " .
-                                              showsPrec d (getField @"maxImageArrayLayers" x) .
-                                                showString ", " .
-                                                  showString "supportedTransforms = " .
-                                                    showsPrec d (getField @"supportedTransforms" x)
-                                                      .
-                                                      showString ", " .
-                                                        showString "currentTransform = " .
-                                                          showsPrec d
-                                                            (getField @"currentTransform" x)
-                                                            .
-                                                            showString ", " .
-                                                              showString
-                                                                "supportedCompositeAlpha = "
-                                                                .
-                                                                showsPrec d
-                                                                  (getField
-                                                                     @"supportedCompositeAlpha"
-                                                                     x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString
-                                                                      "supportedUsageFlags = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"supportedUsageFlags"
-                                                                           x)
-                                                                        . showChar '}'
-
--- | > typedef struct VkSurfaceFormat2KHR {
---   >     VkStructureType sType;
---   >     void* pNext;
---   >     VkSurfaceFormatKHR surfaceFormat;
---   > } VkSurfaceFormat2KHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceFormat2KHR VkSurfaceFormat2KHR registry at www.khronos.org>
-type VkSurfaceFormat2KHR = VulkanStruct VkSurfaceFormat2KHR' -- ' closing tick for hsc2hs
-
-data VkSurfaceFormat2KHR' -- ' closing tick for hsc2hs
-
-instance Eq VkSurfaceFormat2KHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSurfaceFormat2KHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSurfaceFormat2KHR where
-        sizeOf ~_ = #{size VkSurfaceFormat2KHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSurfaceFormat2KHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSurfaceFormat2KHR where
-        type StructFields VkSurfaceFormat2KHR =
-             '["sType", "pNext", "surfaceFormat"] -- ' closing tick for hsc2hs
-        type CUnionType VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSurfaceFormat2KHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSurfaceFormat2KHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkSurfaceFormat2KHR
-         where
-        type FieldType "sType" VkSurfaceFormat2KHR = VkStructureType
-        type FieldOptional "sType" VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSurfaceFormat2KHR =
-             #{offset VkSurfaceFormat2KHR, sType}
-        type FieldIsArray "sType" VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSurfaceFormat2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSurfaceFormat2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceFormat2KHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSurfaceFormat2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceFormat2KHR, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkSurfaceFormat2KHR
-         where
-        type FieldType "pNext" VkSurfaceFormat2KHR = Ptr Void
-        type FieldOptional "pNext" VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSurfaceFormat2KHR =
-             #{offset VkSurfaceFormat2KHR, pNext}
-        type FieldIsArray "pNext" VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSurfaceFormat2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSurfaceFormat2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceFormat2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSurfaceFormat2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceFormat2KHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "surfaceFormat" VkSurfaceFormat2KHR where
-        type FieldType "surfaceFormat" VkSurfaceFormat2KHR =
-             VkSurfaceFormatKHR
-        type FieldOptional "surfaceFormat" VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "surfaceFormat" VkSurfaceFormat2KHR =
-             #{offset VkSurfaceFormat2KHR, surfaceFormat}
-        type FieldIsArray "surfaceFormat" VkSurfaceFormat2KHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSurfaceFormat2KHR, surfaceFormat}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "surfaceFormat" VkSurfaceFormat2KHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormat2KHR, surfaceFormat})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceFormat2KHR, surfaceFormat}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "surfaceFormat" VkSurfaceFormat2KHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceFormat2KHR, surfaceFormat}
-
-instance Show VkSurfaceFormat2KHR where
-        showsPrec d x
-          = showString "VkSurfaceFormat2KHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "surfaceFormat = " .
-                            showsPrec d (getField @"surfaceFormat" x) . showChar '}'
-
--- | > typedef struct VkSurfaceFormatKHR {
---   >     VkFormat                         format;
---   >     VkColorSpaceKHR                  colorSpace;
---   > } VkSurfaceFormatKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceFormatKHR VkSurfaceFormatKHR registry at www.khronos.org>
-type VkSurfaceFormatKHR = VulkanStruct VkSurfaceFormatKHR' -- ' closing tick for hsc2hs
-
-data VkSurfaceFormatKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkSurfaceFormatKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSurfaceFormatKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSurfaceFormatKHR where
-        sizeOf ~_ = #{size VkSurfaceFormatKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSurfaceFormatKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSurfaceFormatKHR where
-        type StructFields VkSurfaceFormatKHR = '["format", "colorSpace"] -- ' closing tick for hsc2hs
-        type CUnionType VkSurfaceFormatKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSurfaceFormatKHR = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkSurfaceFormatKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "format" VkSurfaceFormatKHR
-         where
-        type FieldType "format" VkSurfaceFormatKHR = VkFormat
-        type FieldOptional "format" VkSurfaceFormatKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkSurfaceFormatKHR =
-             #{offset VkSurfaceFormatKHR, format}
-        type FieldIsArray "format" VkSurfaceFormatKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSurfaceFormatKHR, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkSurfaceFormatKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormatKHR, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceFormatKHR, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkSurfaceFormatKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceFormatKHR, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "colorSpace" VkSurfaceFormatKHR where
-        type FieldType "colorSpace" VkSurfaceFormatKHR = VkColorSpaceKHR
-        type FieldOptional "colorSpace" VkSurfaceFormatKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "colorSpace" VkSurfaceFormatKHR =
-             #{offset VkSurfaceFormatKHR, colorSpace}
-        type FieldIsArray "colorSpace" VkSurfaceFormatKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSurfaceFormatKHR, colorSpace}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "colorSpace" VkSurfaceFormatKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSurfaceFormatKHR, colorSpace})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSurfaceFormatKHR, colorSpace}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "colorSpace" VkSurfaceFormatKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSurfaceFormatKHR, colorSpace}
-
-instance Show VkSurfaceFormatKHR where
-        showsPrec d x
-          = showString "VkSurfaceFormatKHR {" .
-              showString "format = " .
-                showsPrec d (getField @"format" x) .
-                  showString ", " .
-                    showString "colorSpace = " .
-                      showsPrec d (getField @"colorSpace" x) . showChar '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.Surface
+       (VkSurfaceCapabilities2EXT, VkSurfaceCapabilities2KHR,
+        VkSurfaceCapabilitiesKHR, VkSurfaceFormat2KHR, VkSurfaceFormatKHR)
+       where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.Enum.Color                  (VkColorSpaceKHR)
+import Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR (VkCompositeAlphaFlagsKHR)
+import Graphics.Vulkan.Types.Enum.Format                 (VkFormat)
+import Graphics.Vulkan.Types.Enum.Image                  (VkImageUsageFlags)
+import Graphics.Vulkan.Types.Enum.StructureType          (VkStructureType)
+import Graphics.Vulkan.Types.Enum.Surface                (VkSurfaceCounterFlagsEXT,
+                                                          VkSurfaceTransformFlagBitsKHR,
+                                                          VkSurfaceTransformFlagsKHR)
+import Graphics.Vulkan.Types.Struct.Extent               (VkExtent2D)
+
+-- | > typedef struct VkSurfaceCapabilities2EXT {
+--   >     VkStructureType sType;
+--   >     void*                            pNext;
+--   >     uint32_t                         minImageCount;
+--   >     uint32_t                         maxImageCount;
+--   >     VkExtent2D                       currentExtent;
+--   >     VkExtent2D                       minImageExtent;
+--   >     VkExtent2D                       maxImageExtent;
+--   >     uint32_t                         maxImageArrayLayers;
+--   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
+--   >     VkSurfaceTransformFlagBitsKHR    currentTransform;
+--   >     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
+--   >     VkImageUsageFlags                supportedUsageFlags;
+--   >     VkSurfaceCounterFlagsEXT supportedSurfaceCounters;
+--   > } VkSurfaceCapabilities2EXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceCapabilities2EXT VkSurfaceCapabilities2EXT registry at www.khronos.org>
+type VkSurfaceCapabilities2EXT =
+     VkStruct VkSurfaceCapabilities2EXT' -- ' closing tick for hsc2hs
+
+data VkSurfaceCapabilities2EXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSurfaceCapabilities2EXT where
+    type StructRep VkSurfaceCapabilities2EXT =
+         'StructMeta "VkSurfaceCapabilities2EXT" VkSurfaceCapabilities2EXT -- ' closing tick for hsc2hs
+           #{size VkSurfaceCapabilities2EXT}
+           #{alignment VkSurfaceCapabilities2EXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSurfaceCapabilities2EXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSurfaceCapabilities2EXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minImageCount" Word32 'False 
+                                                       #{offset VkSurfaceCapabilities2EXT, minImageCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageCount" Word32 'False 
+                                                       #{offset VkSurfaceCapabilities2EXT, maxImageCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "currentExtent" VkExtent2D 'False 
+                                                           #{offset VkSurfaceCapabilities2EXT, currentExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minImageExtent" VkExtent2D 'False 
+                                                            #{offset VkSurfaceCapabilities2EXT, minImageExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageExtent" VkExtent2D 'False 
+                                                            #{offset VkSurfaceCapabilities2EXT, maxImageExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageArrayLayers" Word32 'False 
+                                                             #{offset VkSurfaceCapabilities2EXT, maxImageArrayLayers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedTransforms" VkSurfaceTransformFlagsKHR 'True
+                #{offset VkSurfaceCapabilities2EXT, supportedTransforms}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "currentTransform" VkSurfaceTransformFlagBitsKHR 'False
+                #{offset VkSurfaceCapabilities2EXT, currentTransform}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedCompositeAlpha" VkCompositeAlphaFlagsKHR -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkSurfaceCapabilities2EXT, supportedCompositeAlpha}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedUsageFlags" VkImageUsageFlags 'True 
+                                                                       #{offset VkSurfaceCapabilities2EXT, supportedUsageFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedSurfaceCounters" VkSurfaceCounterFlagsEXT -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkSurfaceCapabilities2EXT, supportedSurfaceCounters}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSurfaceCapabilities2KHR {
+--   >     VkStructureType sType;
+--   >     void*   pNext;
+--   >     VkSurfaceCapabilitiesKHR surfaceCapabilities;
+--   > } VkSurfaceCapabilities2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceCapabilities2KHR VkSurfaceCapabilities2KHR registry at www.khronos.org>
+type VkSurfaceCapabilities2KHR =
+     VkStruct VkSurfaceCapabilities2KHR' -- ' closing tick for hsc2hs
+
+data VkSurfaceCapabilities2KHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSurfaceCapabilities2KHR where
+    type StructRep VkSurfaceCapabilities2KHR =
+         'StructMeta "VkSurfaceCapabilities2KHR" VkSurfaceCapabilities2KHR -- ' closing tick for hsc2hs
+           #{size VkSurfaceCapabilities2KHR}
+           #{alignment VkSurfaceCapabilities2KHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSurfaceCapabilities2KHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSurfaceCapabilities2KHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "surfaceCapabilities" VkSurfaceCapabilitiesKHR 'False
+                #{offset VkSurfaceCapabilities2KHR, surfaceCapabilities}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSurfaceCapabilitiesKHR {
+--   >     uint32_t                         minImageCount;
+--   >     uint32_t                         maxImageCount;
+--   >     VkExtent2D                       currentExtent;
+--   >     VkExtent2D                       minImageExtent;
+--   >     VkExtent2D                       maxImageExtent;
+--   >     uint32_t                         maxImageArrayLayers;
+--   >     VkSurfaceTransformFlagsKHR       supportedTransforms;
+--   >     VkSurfaceTransformFlagBitsKHR    currentTransform;
+--   >     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
+--   >     VkImageUsageFlags                supportedUsageFlags;
+--   > } VkSurfaceCapabilitiesKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceCapabilitiesKHR VkSurfaceCapabilitiesKHR registry at www.khronos.org>
+type VkSurfaceCapabilitiesKHR = VkStruct VkSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs
+
+data VkSurfaceCapabilitiesKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSurfaceCapabilitiesKHR where
+    type StructRep VkSurfaceCapabilitiesKHR =
+         'StructMeta "VkSurfaceCapabilitiesKHR" VkSurfaceCapabilitiesKHR -- ' closing tick for hsc2hs
+           #{size VkSurfaceCapabilitiesKHR}
+           #{alignment VkSurfaceCapabilitiesKHR}
+           '[('FieldMeta "minImageCount" Word32 'False  -- ' closing tick for hsc2hs
+                                                       #{offset VkSurfaceCapabilitiesKHR, minImageCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageCount" Word32 'False 
+                                                       #{offset VkSurfaceCapabilitiesKHR, maxImageCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "currentExtent" VkExtent2D 'False 
+                                                           #{offset VkSurfaceCapabilitiesKHR, currentExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minImageExtent" VkExtent2D 'False 
+                                                            #{offset VkSurfaceCapabilitiesKHR, minImageExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageExtent" VkExtent2D 'False 
+                                                            #{offset VkSurfaceCapabilitiesKHR, maxImageExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxImageArrayLayers" Word32 'False 
+                                                             #{offset VkSurfaceCapabilitiesKHR, maxImageArrayLayers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedTransforms" VkSurfaceTransformFlagsKHR 'True
+                #{offset VkSurfaceCapabilitiesKHR, supportedTransforms}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "currentTransform" VkSurfaceTransformFlagBitsKHR 'False
+                #{offset VkSurfaceCapabilitiesKHR, currentTransform}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedCompositeAlpha" VkCompositeAlphaFlagsKHR -- ' closing tick for hsc2hs
+                'True -- ' closing tick for hsc2hs
+                #{offset VkSurfaceCapabilitiesKHR, supportedCompositeAlpha}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportedUsageFlags" VkImageUsageFlags 'True 
+                                                                       #{offset VkSurfaceCapabilitiesKHR, supportedUsageFlags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSurfaceFormat2KHR {
+--   >     VkStructureType sType;
+--   >     void* pNext;
+--   >     VkSurfaceFormatKHR surfaceFormat;
+--   > } VkSurfaceFormat2KHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceFormat2KHR VkSurfaceFormat2KHR registry at www.khronos.org>
+type VkSurfaceFormat2KHR = VkStruct VkSurfaceFormat2KHR' -- ' closing tick for hsc2hs
+
+data VkSurfaceFormat2KHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSurfaceFormat2KHR where
+    type StructRep VkSurfaceFormat2KHR =
+         'StructMeta "VkSurfaceFormat2KHR" VkSurfaceFormat2KHR  -- ' closing tick for hsc2hs
+                                                               #{size VkSurfaceFormat2KHR}
+           #{alignment VkSurfaceFormat2KHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSurfaceFormat2KHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSurfaceFormat2KHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "surfaceFormat" VkSurfaceFormatKHR 'False 
+                                                                   #{offset VkSurfaceFormat2KHR, surfaceFormat}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSurfaceFormatKHR {
+--   >     VkFormat                         format;
+--   >     VkColorSpaceKHR                  colorSpace;
+--   > } VkSurfaceFormatKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSurfaceFormatKHR VkSurfaceFormatKHR registry at www.khronos.org>
+type VkSurfaceFormatKHR = VkStruct VkSurfaceFormatKHR' -- ' closing tick for hsc2hs
+
+data VkSurfaceFormatKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSurfaceFormatKHR where
+    type StructRep VkSurfaceFormatKHR =
+         'StructMeta "VkSurfaceFormatKHR" VkSurfaceFormatKHR  -- ' closing tick for hsc2hs
+                                                             #{size VkSurfaceFormatKHR}
+           #{alignment VkSurfaceFormatKHR}
+           '[('FieldMeta "format" VkFormat 'False  -- ' closing tick for hsc2hs
+                                                  #{offset VkSurfaceFormatKHR, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "colorSpace" VkColorSpaceKHR 'False 
+                                                             #{offset VkSurfaceFormatKHR, colorSpace}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/SwapchainC.hsc b/src-gen/Graphics/Vulkan/Types/Struct/SwapchainC.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/SwapchainC.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/SwapchainC.hsc
@@ -2,977 +2,186 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
-{-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.SwapchainC
-       (VkSwapchainCounterCreateInfoEXT, VkSwapchainCounterCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkSwapchainCreateInfoKHR, VkSwapchainCreateInfoKHR') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                   (Storable (..))
-import Graphics.Vulkan.Marshal
-import Graphics.Vulkan.Marshal.Internal
-import Graphics.Vulkan.Types.BaseTypes                    (VkBool32)
-import Graphics.Vulkan.Types.Enum.Color                   (VkColorSpaceKHR)
-import Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR  (VkCompositeAlphaFlagBitsKHR)
-import Graphics.Vulkan.Types.Enum.Format                  (VkFormat)
-import Graphics.Vulkan.Types.Enum.Image                   (VkImageUsageFlags)
-import Graphics.Vulkan.Types.Enum.PresentModeKHR          (VkPresentModeKHR)
-import Graphics.Vulkan.Types.Enum.SharingMode             (VkSharingMode)
-import Graphics.Vulkan.Types.Enum.StructureType           (VkStructureType)
-import Graphics.Vulkan.Types.Enum.Surface                 (VkSurfaceCounterFlagsEXT,
-                                                           VkSurfaceTransformFlagBitsKHR)
-import Graphics.Vulkan.Types.Enum.SwapchainCreateFlagsKHR (VkSwapchainCreateFlagsKHR)
-import Graphics.Vulkan.Types.Handles                      (VkSurfaceKHR,
-                                                           VkSwapchainKHR)
-import Graphics.Vulkan.Types.Struct.Extent                (VkExtent2D)
-import System.IO.Unsafe                                   (unsafeDupablePerformIO)
-
--- | > typedef struct VkSwapchainCounterCreateInfoEXT {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSurfaceCounterFlagsEXT         surfaceCounters;
---   > } VkSwapchainCounterCreateInfoEXT;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSwapchainCounterCreateInfoEXT VkSwapchainCounterCreateInfoEXT registry at www.khronos.org>
-type VkSwapchainCounterCreateInfoEXT =
-     VulkanStruct VkSwapchainCounterCreateInfoEXT' -- ' closing tick for hsc2hs
-
-data VkSwapchainCounterCreateInfoEXT' -- ' closing tick for hsc2hs
-
-instance Eq VkSwapchainCounterCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSwapchainCounterCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSwapchainCounterCreateInfoEXT where
-        sizeOf ~_ = #{size VkSwapchainCounterCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkSwapchainCounterCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSwapchainCounterCreateInfoEXT where
-        type StructFields VkSwapchainCounterCreateInfoEXT =
-             '["sType", "pNext", "surfaceCounters"] -- ' closing tick for hsc2hs
-        type CUnionType VkSwapchainCounterCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSwapchainCounterCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSwapchainCounterCreateInfoEXT =
-             '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSwapchainCounterCreateInfoEXT where
-        type FieldType "sType" VkSwapchainCounterCreateInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkSwapchainCounterCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSwapchainCounterCreateInfoEXT =
-             #{offset VkSwapchainCounterCreateInfoEXT, sType}
-        type FieldIsArray "sType" VkSwapchainCounterCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCounterCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSwapchainCounterCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSwapchainCounterCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSwapchainCounterCreateInfoEXT where
-        type FieldType "pNext" VkSwapchainCounterCreateInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkSwapchainCounterCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSwapchainCounterCreateInfoEXT =
-             #{offset VkSwapchainCounterCreateInfoEXT, pNext}
-        type FieldIsArray "pNext" VkSwapchainCounterCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCounterCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSwapchainCounterCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSwapchainCounterCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "surfaceCounters" VkSwapchainCounterCreateInfoEXT where
-        type FieldType "surfaceCounters" VkSwapchainCounterCreateInfoEXT =
-             VkSurfaceCounterFlagsEXT
-        type FieldOptional "surfaceCounters"
-               VkSwapchainCounterCreateInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "surfaceCounters" VkSwapchainCounterCreateInfoEXT
-             =
-             #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
-        type FieldIsArray "surfaceCounters" VkSwapchainCounterCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "surfaceCounters" VkSwapchainCounterCreateInfoEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "surfaceCounters" VkSwapchainCounterCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
-
-instance Show VkSwapchainCounterCreateInfoEXT where
-        showsPrec d x
-          = showString "VkSwapchainCounterCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "surfaceCounters = " .
-                            showsPrec d (getField @"surfaceCounters" x) . showChar '}'
-
--- | > typedef struct VkSwapchainCreateInfoKHR {
---   >     VkStructureType sType;
---   >     const void*                      pNext;
---   >     VkSwapchainCreateFlagsKHR        flags;
---   >     VkSurfaceKHR                     surface;
---   >     uint32_t                         minImageCount;
---   >     VkFormat                         imageFormat;
---   >     VkColorSpaceKHR                  imageColorSpace;
---   >     VkExtent2D                       imageExtent;
---   >     uint32_t                         imageArrayLayers;
---   >     VkImageUsageFlags                imageUsage;
---   >     VkSharingMode                    imageSharingMode;
---   >     uint32_t         queueFamilyIndexCount;
---   >     const uint32_t*                  pQueueFamilyIndices;
---   >     VkSurfaceTransformFlagBitsKHR    preTransform;
---   >     VkCompositeAlphaFlagBitsKHR      compositeAlpha;
---   >     VkPresentModeKHR                 presentMode;
---   >     VkBool32                         clipped;
---   >     VkSwapchainKHR   oldSwapchain;
---   > } VkSwapchainCreateInfoKHR;
---
---   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSwapchainCreateInfoKHR VkSwapchainCreateInfoKHR registry at www.khronos.org>
-type VkSwapchainCreateInfoKHR =
-     VulkanStruct VkSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
-
-data VkSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
-
-instance Eq VkSwapchainCreateInfoKHR where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkSwapchainCreateInfoKHR where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkSwapchainCreateInfoKHR where
-        sizeOf ~_ = #{size VkSwapchainCreateInfoKHR}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkSwapchainCreateInfoKHR}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
-instance VulkanMarshal VkSwapchainCreateInfoKHR where
-        type StructFields VkSwapchainCreateInfoKHR =
-             '["sType", "pNext", "flags", "surface", "minImageCount", -- ' closing tick for hsc2hs
-               "imageFormat", "imageColorSpace", "imageExtent",
-               "imageArrayLayers", "imageUsage", "imageSharingMode",
-               "queueFamilyIndexCount", "pQueueFamilyIndices", "preTransform",
-               "compositeAlpha", "presentMode", "clipped", "oldSwapchain"]
-        type CUnionType VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkSwapchainCreateInfoKHR = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkSwapchainCreateInfoKHR where
-        type FieldType "sType" VkSwapchainCreateInfoKHR = VkStructureType
-        type FieldOptional "sType" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, sType}
-        type FieldIsArray "sType" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkSwapchainCreateInfoKHR where
-        type FieldType "pNext" VkSwapchainCreateInfoKHR = Ptr Void
-        type FieldOptional "pNext" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, pNext}
-        type FieldIsArray "pNext" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkSwapchainCreateInfoKHR where
-        type FieldType "flags" VkSwapchainCreateInfoKHR =
-             VkSwapchainCreateFlagsKHR
-        type FieldOptional "flags" VkSwapchainCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, flags}
-        type FieldIsArray "flags" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkSwapchainCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "surface" VkSwapchainCreateInfoKHR where
-        type FieldType "surface" VkSwapchainCreateInfoKHR = VkSurfaceKHR
-        type FieldOptional "surface" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "surface" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, surface}
-        type FieldIsArray "surface" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, surface}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "surface" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, surface})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, surface}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "surface" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, surface}
-
-instance {-# OVERLAPPING #-}
-         HasField "minImageCount" VkSwapchainCreateInfoKHR where
-        type FieldType "minImageCount" VkSwapchainCreateInfoKHR = Word32
-        type FieldOptional "minImageCount" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "minImageCount" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, minImageCount}
-        type FieldIsArray "minImageCount" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "minImageCount" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, minImageCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "minImageCount" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, minImageCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageFormat" VkSwapchainCreateInfoKHR where
-        type FieldType "imageFormat" VkSwapchainCreateInfoKHR = VkFormat
-        type FieldOptional "imageFormat" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageFormat" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, imageFormat}
-        type FieldIsArray "imageFormat" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, imageFormat}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageFormat" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageFormat})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageFormat}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageFormat" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageFormat}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageColorSpace" VkSwapchainCreateInfoKHR where
-        type FieldType "imageColorSpace" VkSwapchainCreateInfoKHR =
-             VkColorSpaceKHR
-        type FieldOptional "imageColorSpace" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageColorSpace" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
-        type FieldIsArray "imageColorSpace" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageColorSpace" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageColorSpace})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageColorSpace" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageExtent" VkSwapchainCreateInfoKHR where
-        type FieldType "imageExtent" VkSwapchainCreateInfoKHR = VkExtent2D
-        type FieldOptional "imageExtent" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageExtent" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, imageExtent}
-        type FieldIsArray "imageExtent" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, imageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageExtent" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageExtent})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageExtent}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageExtent" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageExtent}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageArrayLayers" VkSwapchainCreateInfoKHR where
-        type FieldType "imageArrayLayers" VkSwapchainCreateInfoKHR = Word32
-        type FieldOptional "imageArrayLayers" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageArrayLayers" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
-        type FieldIsArray "imageArrayLayers" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageArrayLayers" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageArrayLayers})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageArrayLayers" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageUsage" VkSwapchainCreateInfoKHR where
-        type FieldType "imageUsage" VkSwapchainCreateInfoKHR =
-             VkImageUsageFlags
-        type FieldOptional "imageUsage" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageUsage" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, imageUsage}
-        type FieldIsArray "imageUsage" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, imageUsage}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageUsage" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageUsage})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageUsage}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageUsage" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageUsage}
-
-instance {-# OVERLAPPING #-}
-         HasField "imageSharingMode" VkSwapchainCreateInfoKHR where
-        type FieldType "imageSharingMode" VkSwapchainCreateInfoKHR =
-             VkSharingMode
-        type FieldOptional "imageSharingMode" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "imageSharingMode" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
-        type FieldIsArray "imageSharingMode" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "imageSharingMode" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, imageSharingMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "imageSharingMode" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "queueFamilyIndexCount" VkSwapchainCreateInfoKHR where
-        type FieldType "queueFamilyIndexCount" VkSwapchainCreateInfoKHR =
-             Word32
-        type FieldOptional "queueFamilyIndexCount" VkSwapchainCreateInfoKHR
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "queueFamilyIndexCount" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
-        type FieldIsArray "queueFamilyIndexCount" VkSwapchainCreateInfoKHR
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "queueFamilyIndexCount" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "queueFamilyIndexCount" VkSwapchainCreateInfoKHR
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pQueueFamilyIndices" VkSwapchainCreateInfoKHR where
-        type FieldType "pQueueFamilyIndices" VkSwapchainCreateInfoKHR =
-             Ptr Word32
-        type FieldOptional "pQueueFamilyIndices" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pQueueFamilyIndices" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
-        type FieldIsArray "pQueueFamilyIndices" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pQueueFamilyIndices" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pQueueFamilyIndices" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
-
-instance {-# OVERLAPPING #-}
-         HasField "preTransform" VkSwapchainCreateInfoKHR where
-        type FieldType "preTransform" VkSwapchainCreateInfoKHR =
-             VkSurfaceTransformFlagBitsKHR
-        type FieldOptional "preTransform" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "preTransform" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, preTransform}
-        type FieldIsArray "preTransform" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, preTransform}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "preTransform" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, preTransform})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, preTransform}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "preTransform" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, preTransform}
-
-instance {-# OVERLAPPING #-}
-         HasField "compositeAlpha" VkSwapchainCreateInfoKHR where
-        type FieldType "compositeAlpha" VkSwapchainCreateInfoKHR =
-             VkCompositeAlphaFlagBitsKHR
-        type FieldOptional "compositeAlpha" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "compositeAlpha" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
-        type FieldIsArray "compositeAlpha" VkSwapchainCreateInfoKHR =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "compositeAlpha" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, compositeAlpha})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "compositeAlpha" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
-
-instance {-# OVERLAPPING #-}
-         HasField "presentMode" VkSwapchainCreateInfoKHR where
-        type FieldType "presentMode" VkSwapchainCreateInfoKHR =
-             VkPresentModeKHR
-        type FieldOptional "presentMode" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "presentMode" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, presentMode}
-        type FieldIsArray "presentMode" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, presentMode}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "presentMode" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, presentMode})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, presentMode}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "presentMode" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, presentMode}
-
-instance {-# OVERLAPPING #-}
-         HasField "clipped" VkSwapchainCreateInfoKHR where
-        type FieldType "clipped" VkSwapchainCreateInfoKHR = VkBool32
-        type FieldOptional "clipped" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "clipped" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, clipped}
-        type FieldIsArray "clipped" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, clipped}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "clipped" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, clipped})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, clipped}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "clipped" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, clipped}
-
-instance {-# OVERLAPPING #-}
-         HasField "oldSwapchain" VkSwapchainCreateInfoKHR where
-        type FieldType "oldSwapchain" VkSwapchainCreateInfoKHR =
-             VkSwapchainKHR
-        type FieldOptional "oldSwapchain" VkSwapchainCreateInfoKHR = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "oldSwapchain" VkSwapchainCreateInfoKHR =
-             #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
-        type FieldIsArray "oldSwapchain" VkSwapchainCreateInfoKHR = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "oldSwapchain" VkSwapchainCreateInfoKHR where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkSwapchainCreateInfoKHR, oldSwapchain})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "oldSwapchain" VkSwapchainCreateInfoKHR where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
-
-instance Show VkSwapchainCreateInfoKHR where
-        showsPrec d x
-          = showString "VkSwapchainCreateInfoKHR {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "surface = " .
-                                  showsPrec d (getField @"surface" x) .
-                                    showString ", " .
-                                      showString "minImageCount = " .
-                                        showsPrec d (getField @"minImageCount" x) .
-                                          showString ", " .
-                                            showString "imageFormat = " .
-                                              showsPrec d (getField @"imageFormat" x) .
-                                                showString ", " .
-                                                  showString "imageColorSpace = " .
-                                                    showsPrec d (getField @"imageColorSpace" x) .
-                                                      showString ", " .
-                                                        showString "imageExtent = " .
-                                                          showsPrec d (getField @"imageExtent" x) .
-                                                            showString ", " .
-                                                              showString "imageArrayLayers = " .
-                                                                showsPrec d
-                                                                  (getField @"imageArrayLayers" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "imageUsage = " .
-                                                                      showsPrec d
-                                                                        (getField @"imageUsage" x)
-                                                                        .
-                                                                        showString ", " .
-                                                                          showString
-                                                                            "imageSharingMode = "
-                                                                            .
-                                                                            showsPrec d
-                                                                              (getField
-                                                                                 @"imageSharingMode"
-                                                                                 x)
-                                                                              .
-                                                                              showString ", " .
-                                                                                showString
-                                                                                  "queueFamilyIndexCount = "
-                                                                                  .
-                                                                                  showsPrec d
-                                                                                    (getField
-                                                                                       @"queueFamilyIndexCount"
-                                                                                       x)
-                                                                                    .
-                                                                                    showString ", "
-                                                                                      .
-                                                                                      showString
-                                                                                        "pQueueFamilyIndices = "
-                                                                                        .
-                                                                                        showsPrec d
-                                                                                          (getField
-                                                                                             @"pQueueFamilyIndices"
-                                                                                             x)
-                                                                                          .
-                                                                                          showString
-                                                                                            ", "
-                                                                                            .
-                                                                                            showString
-                                                                                              "preTransform = "
-                                                                                              .
-                                                                                              showsPrec
-                                                                                                d
-                                                                                                (getField
-                                                                                                   @"preTransform"
-                                                                                                   x)
-                                                                                                .
-                                                                                                showString
-                                                                                                  ", "
-                                                                                                  .
-                                                                                                  showString
-                                                                                                    "compositeAlpha = "
-                                                                                                    .
-                                                                                                    showsPrec
-                                                                                                      d
-                                                                                                      (getField
-                                                                                                         @"compositeAlpha"
-                                                                                                         x)
-                                                                                                      .
-                                                                                                      showString
-                                                                                                        ", "
-                                                                                                        .
-                                                                                                        showString
-                                                                                                          "presentMode = "
-                                                                                                          .
-                                                                                                          showsPrec
-                                                                                                            d
-                                                                                                            (getField
-                                                                                                               @"presentMode"
-                                                                                                               x)
-                                                                                                            .
-                                                                                                            showString
-                                                                                                              ", "
-                                                                                                              .
-                                                                                                              showString
-                                                                                                                "clipped = "
-                                                                                                                .
-                                                                                                                showsPrec
-                                                                                                                  d
-                                                                                                                  (getField
-                                                                                                                     @"clipped"
-                                                                                                                     x)
-                                                                                                                  .
-                                                                                                                  showString
-                                                                                                                    ", "
-                                                                                                                    .
-                                                                                                                    showString
-                                                                                                                      "oldSwapchain = "
-                                                                                                                      .
-                                                                                                                      showsPrec
-                                                                                                                        d
-                                                                                                                        (getField
-                                                                                                                           @"oldSwapchain"
-                                                                                                                           x)
-                                                                                                                        .
-                                                                                                                        showChar
-                                                                                                                          '}'
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE Strict                #-}
+{-# LANGUAGE TypeFamilies          #-}
+module Graphics.Vulkan.Types.Struct.SwapchainC
+       (VkSwapchainCounterCreateInfoEXT, VkSwapchainCreateInfoKHR) where
+import Graphics.Vulkan.Marshal
+import Graphics.Vulkan.Marshal.Internal
+import Graphics.Vulkan.Types.BaseTypes                    (VkBool32)
+import Graphics.Vulkan.Types.Enum.Color                   (VkColorSpaceKHR)
+import Graphics.Vulkan.Types.Enum.CompositeAlphaFlagsKHR  (VkCompositeAlphaFlagBitsKHR)
+import Graphics.Vulkan.Types.Enum.Format                  (VkFormat)
+import Graphics.Vulkan.Types.Enum.Image                   (VkImageUsageFlags)
+import Graphics.Vulkan.Types.Enum.PresentModeKHR          (VkPresentModeKHR)
+import Graphics.Vulkan.Types.Enum.SharingMode             (VkSharingMode)
+import Graphics.Vulkan.Types.Enum.StructureType           (VkStructureType)
+import Graphics.Vulkan.Types.Enum.Surface                 (VkSurfaceCounterFlagsEXT,
+                                                           VkSurfaceTransformFlagBitsKHR)
+import Graphics.Vulkan.Types.Enum.SwapchainCreateFlagsKHR (VkSwapchainCreateFlagsKHR)
+import Graphics.Vulkan.Types.Handles                      (VkSurfaceKHR,
+                                                           VkSwapchainKHR)
+import Graphics.Vulkan.Types.Struct.Extent                (VkExtent2D)
+
+-- | > typedef struct VkSwapchainCounterCreateInfoEXT {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSurfaceCounterFlagsEXT         surfaceCounters;
+--   > } VkSwapchainCounterCreateInfoEXT;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSwapchainCounterCreateInfoEXT VkSwapchainCounterCreateInfoEXT registry at www.khronos.org>
+type VkSwapchainCounterCreateInfoEXT =
+     VkStruct VkSwapchainCounterCreateInfoEXT' -- ' closing tick for hsc2hs
+
+data VkSwapchainCounterCreateInfoEXT' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSwapchainCounterCreateInfoEXT where
+    type StructRep VkSwapchainCounterCreateInfoEXT =
+         'StructMeta "VkSwapchainCounterCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkSwapchainCounterCreateInfoEXT
+           #{size VkSwapchainCounterCreateInfoEXT}
+           #{alignment VkSwapchainCounterCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSwapchainCounterCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSwapchainCounterCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "surfaceCounters" VkSurfaceCounterFlagsEXT 'True
+                #{offset VkSwapchainCounterCreateInfoEXT, surfaceCounters}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkSwapchainCreateInfoKHR] -- ' closing tick for hsc2hs
+
+-- | > typedef struct VkSwapchainCreateInfoKHR {
+--   >     VkStructureType sType;
+--   >     const void*                      pNext;
+--   >     VkSwapchainCreateFlagsKHR        flags;
+--   >     VkSurfaceKHR                     surface;
+--   >     uint32_t                         minImageCount;
+--   >     VkFormat                         imageFormat;
+--   >     VkColorSpaceKHR                  imageColorSpace;
+--   >     VkExtent2D                       imageExtent;
+--   >     uint32_t                         imageArrayLayers;
+--   >     VkImageUsageFlags                imageUsage;
+--   >     VkSharingMode                    imageSharingMode;
+--   >     uint32_t         queueFamilyIndexCount;
+--   >     const uint32_t*                  pQueueFamilyIndices;
+--   >     VkSurfaceTransformFlagBitsKHR    preTransform;
+--   >     VkCompositeAlphaFlagBitsKHR      compositeAlpha;
+--   >     VkPresentModeKHR                 presentMode;
+--   >     VkBool32                         clipped;
+--   >     VkSwapchainKHR   oldSwapchain;
+--   > } VkSwapchainCreateInfoKHR;
+--
+--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkSwapchainCreateInfoKHR VkSwapchainCreateInfoKHR registry at www.khronos.org>
+type VkSwapchainCreateInfoKHR = VkStruct VkSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
+
+data VkSwapchainCreateInfoKHR' -- ' closing tick for hsc2hs
+
+instance VulkanMarshal VkSwapchainCreateInfoKHR where
+    type StructRep VkSwapchainCreateInfoKHR =
+         'StructMeta "VkSwapchainCreateInfoKHR" VkSwapchainCreateInfoKHR -- ' closing tick for hsc2hs
+           #{size VkSwapchainCreateInfoKHR}
+           #{alignment VkSwapchainCreateInfoKHR}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkSwapchainCreateInfoKHR, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkSwapchainCreateInfoKHR, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkSwapchainCreateFlagsKHR 'True 
+                                                                 #{offset VkSwapchainCreateInfoKHR, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "surface" VkSurfaceKHR 'False 
+                                                       #{offset VkSwapchainCreateInfoKHR, surface}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minImageCount" Word32 'False 
+                                                       #{offset VkSwapchainCreateInfoKHR, minImageCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageFormat" VkFormat 'False 
+                                                       #{offset VkSwapchainCreateInfoKHR, imageFormat}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageColorSpace" VkColorSpaceKHR 'False 
+                                                                  #{offset VkSwapchainCreateInfoKHR, imageColorSpace}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageExtent" VkExtent2D 'False 
+                                                         #{offset VkSwapchainCreateInfoKHR, imageExtent}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageArrayLayers" Word32 'False 
+                                                          #{offset VkSwapchainCreateInfoKHR, imageArrayLayers}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageUsage" VkImageUsageFlags 'False 
+                                                               #{offset VkSwapchainCreateInfoKHR, imageUsage}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "imageSharingMode" VkSharingMode 'False 
+                                                                 #{offset VkSwapchainCreateInfoKHR, imageSharingMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "queueFamilyIndexCount" Word32 'True 
+                                                              #{offset VkSwapchainCreateInfoKHR, queueFamilyIndexCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pQueueFamilyIndices" (Ptr Word32) 'False 
+                                                                   #{offset VkSwapchainCreateInfoKHR, pQueueFamilyIndices}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "preTransform" VkSurfaceTransformFlagBitsKHR 'False
+                #{offset VkSwapchainCreateInfoKHR, preTransform}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "compositeAlpha" VkCompositeAlphaFlagBitsKHR 'False
+                #{offset VkSwapchainCreateInfoKHR, compositeAlpha}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "presentMode" VkPresentModeKHR 'False 
+                                                               #{offset VkSwapchainCreateInfoKHR, presentMode}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "clipped" VkBool32 'False 
+                                                   #{offset VkSwapchainCreateInfoKHR, clipped}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "oldSwapchain" VkSwapchainKHR 'True 
+                                                             #{offset VkSwapchainCreateInfoKHR, oldSwapchain}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/TextureLODGatherFormatPropertiesAMD.hsc b/src-gen/Graphics/Vulkan/Types/Struct/TextureLODGatherFormatPropertiesAMD.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/TextureLODGatherFormatPropertiesAMD.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/TextureLODGatherFormatPropertiesAMD.hsc
@@ -2,22 +2,16 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.TextureLODGatherFormatPropertiesAMD
-       (VkTextureLODGatherFormatPropertiesAMD,
-        VkTextureLODGatherFormatPropertiesAMD') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                         (Storable (..))
+       (VkTextureLODGatherFormatPropertiesAMD) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.BaseTypes          (VkBool32)
 import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
 import Graphics.Vulkan.Types.Struct.Image       (VkImageFormatProperties2)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkTextureLODGatherFormatPropertiesAMD {
 --   >     VkStructureType sType;
@@ -27,169 +21,31 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkTextureLODGatherFormatPropertiesAMD VkTextureLODGatherFormatPropertiesAMD registry at www.khronos.org>
 type VkTextureLODGatherFormatPropertiesAMD =
-     VulkanStruct VkTextureLODGatherFormatPropertiesAMD' -- ' closing tick for hsc2hs
+     VkStruct VkTextureLODGatherFormatPropertiesAMD' -- ' closing tick for hsc2hs
 
 data VkTextureLODGatherFormatPropertiesAMD' -- ' closing tick for hsc2hs
 
-instance Eq VkTextureLODGatherFormatPropertiesAMD where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkTextureLODGatherFormatPropertiesAMD where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkTextureLODGatherFormatPropertiesAMD where
-        sizeOf ~_
-          = #{size VkTextureLODGatherFormatPropertiesAMD}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkTextureLODGatherFormatPropertiesAMD}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkTextureLODGatherFormatPropertiesAMD where
-        type StructFields VkTextureLODGatherFormatPropertiesAMD =
-             '["sType", "pNext", "supportsTextureGatherLODBiasAMD"] -- ' closing tick for hsc2hs
-        type CUnionType VkTextureLODGatherFormatPropertiesAMD = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkTextureLODGatherFormatPropertiesAMD = 'True -- ' closing tick for hsc2hs
-        type StructExtends VkTextureLODGatherFormatPropertiesAMD =
-             '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkTextureLODGatherFormatPropertiesAMD where
-        type FieldType "sType" VkTextureLODGatherFormatPropertiesAMD =
-             VkStructureType
-        type FieldOptional "sType" VkTextureLODGatherFormatPropertiesAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkTextureLODGatherFormatPropertiesAMD =
-             #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
-        type FieldIsArray "sType" VkTextureLODGatherFormatPropertiesAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkTextureLODGatherFormatPropertiesAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkTextureLODGatherFormatPropertiesAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkTextureLODGatherFormatPropertiesAMD where
-        type FieldType "pNext" VkTextureLODGatherFormatPropertiesAMD =
-             Ptr Void
-        type FieldOptional "pNext" VkTextureLODGatherFormatPropertiesAMD =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkTextureLODGatherFormatPropertiesAMD =
-             #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
-        type FieldIsArray "pNext" VkTextureLODGatherFormatPropertiesAMD =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkTextureLODGatherFormatPropertiesAMD where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkTextureLODGatherFormatPropertiesAMD where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "supportsTextureGatherLODBiasAMD"
-           VkTextureLODGatherFormatPropertiesAMD
-         where
-        type FieldType "supportsTextureGatherLODBiasAMD"
-               VkTextureLODGatherFormatPropertiesAMD
-             = VkBool32
-        type FieldOptional "supportsTextureGatherLODBiasAMD"
-               VkTextureLODGatherFormatPropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "supportsTextureGatherLODBiasAMD"
-               VkTextureLODGatherFormatPropertiesAMD
-             =
-             #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
-        type FieldIsArray "supportsTextureGatherLODBiasAMD"
-               VkTextureLODGatherFormatPropertiesAMD
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "supportsTextureGatherLODBiasAMD"
-           VkTextureLODGatherFormatPropertiesAMD
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "supportsTextureGatherLODBiasAMD"
+    type StructRep VkTextureLODGatherFormatPropertiesAMD =
+         'StructMeta "VkTextureLODGatherFormatPropertiesAMD" -- ' closing tick for hsc2hs
            VkTextureLODGatherFormatPropertiesAMD
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
-
-instance Show VkTextureLODGatherFormatPropertiesAMD where
-        showsPrec d x
-          = showString "VkTextureLODGatherFormatPropertiesAMD {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "supportsTextureGatherLODBiasAMD = " .
-                            showsPrec d (getField @"supportsTextureGatherLODBiasAMD" x) .
-                              showChar '}'
+           #{size VkTextureLODGatherFormatPropertiesAMD}
+           #{alignment VkTextureLODGatherFormatPropertiesAMD}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkTextureLODGatherFormatPropertiesAMD, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkTextureLODGatherFormatPropertiesAMD, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "supportsTextureGatherLODBiasAMD" VkBool32 'False
+                #{offset VkTextureLODGatherFormatPropertiesAMD, supportsTextureGatherLODBiasAMD}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'True -- ' closing tick for hsc2hs
+           '[VkImageFormatProperties2] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Validation.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Validation.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Validation.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Validation.hsc
@@ -2,23 +2,17 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Validation
-       (VkValidationCacheCreateInfoEXT, VkValidationCacheCreateInfoEXT', -- ' closing tick for hsc2hs
-        VkValidationFlagsEXT, VkValidationFlagsEXT') -- ' closing tick for hsc2hs
-       where
-import Foreign.Storable                                (Storable (..))
+       (VkValidationCacheCreateInfoEXT, VkValidationFlagsEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Bitmasks                  (VkValidationCacheCreateFlagsEXT)
 import Graphics.Vulkan.Types.Enum.StructureType        (VkStructureType)
 import Graphics.Vulkan.Types.Enum.ValidationC          (VkValidationCheckEXT)
 import Graphics.Vulkan.Types.Struct.InstanceCreateInfo (VkInstanceCreateInfo)
-import System.IO.Unsafe                                (unsafeDupablePerformIO)
 
 -- | > typedef struct VkValidationCacheCreateInfoEXT {
 --   >     VkStructureType sType;
@@ -30,228 +24,44 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkValidationCacheCreateInfoEXT VkValidationCacheCreateInfoEXT registry at www.khronos.org>
 type VkValidationCacheCreateInfoEXT =
-     VulkanStruct VkValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs
+     VkStruct VkValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs
 
 data VkValidationCacheCreateInfoEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkValidationCacheCreateInfoEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkValidationCacheCreateInfoEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkValidationCacheCreateInfoEXT where
-        sizeOf ~_ = #{size VkValidationCacheCreateInfoEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkValidationCacheCreateInfoEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkValidationCacheCreateInfoEXT where
-        type StructFields VkValidationCacheCreateInfoEXT =
-             '["sType", "pNext", "flags", "initialDataSize", "pInitialData"] -- ' closing tick for hsc2hs
-        type CUnionType VkValidationCacheCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkValidationCacheCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkValidationCacheCreateInfoEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "sType" VkValidationCacheCreateInfoEXT where
-        type FieldType "sType" VkValidationCacheCreateInfoEXT =
-             VkStructureType
-        type FieldOptional "sType" VkValidationCacheCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkValidationCacheCreateInfoEXT =
-             #{offset VkValidationCacheCreateInfoEXT, sType}
-        type FieldIsArray "sType" VkValidationCacheCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkValidationCacheCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkValidationCacheCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkValidationCacheCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pNext" VkValidationCacheCreateInfoEXT where
-        type FieldType "pNext" VkValidationCacheCreateInfoEXT = Ptr Void
-        type FieldOptional "pNext" VkValidationCacheCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkValidationCacheCreateInfoEXT =
-             #{offset VkValidationCacheCreateInfoEXT, pNext}
-        type FieldIsArray "pNext" VkValidationCacheCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkValidationCacheCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkValidationCacheCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkValidationCacheCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "flags" VkValidationCacheCreateInfoEXT where
-        type FieldType "flags" VkValidationCacheCreateInfoEXT =
-             VkValidationCacheCreateFlagsEXT
-        type FieldOptional "flags" VkValidationCacheCreateInfoEXT = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "flags" VkValidationCacheCreateInfoEXT =
-             #{offset VkValidationCacheCreateInfoEXT, flags}
-        type FieldIsArray "flags" VkValidationCacheCreateInfoEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkValidationCacheCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "flags" VkValidationCacheCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, flags})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "flags" VkValidationCacheCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, flags}
-
-instance {-# OVERLAPPING #-}
-         HasField "initialDataSize" VkValidationCacheCreateInfoEXT where
-        type FieldType "initialDataSize" VkValidationCacheCreateInfoEXT =
-             CSize
-        type FieldOptional "initialDataSize" VkValidationCacheCreateInfoEXT
-             = 'True -- ' closing tick for hsc2hs
-        type FieldOffset "initialDataSize" VkValidationCacheCreateInfoEXT =
-             #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
-        type FieldIsArray "initialDataSize" VkValidationCacheCreateInfoEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = True
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "initialDataSize" VkValidationCacheCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, initialDataSize})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "initialDataSize" VkValidationCacheCreateInfoEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
-
-instance {-# OVERLAPPING #-}
-         HasField "pInitialData" VkValidationCacheCreateInfoEXT where
-        type FieldType "pInitialData" VkValidationCacheCreateInfoEXT =
-             Ptr Void
-        type FieldOptional "pInitialData" VkValidationCacheCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "pInitialData" VkValidationCacheCreateInfoEXT =
-             #{offset VkValidationCacheCreateInfoEXT, pInitialData}
-        type FieldIsArray "pInitialData" VkValidationCacheCreateInfoEXT =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkValidationCacheCreateInfoEXT, pInitialData}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pInitialData" VkValidationCacheCreateInfoEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationCacheCreateInfoEXT, pInitialData})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationCacheCreateInfoEXT, pInitialData}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pInitialData" VkValidationCacheCreateInfoEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationCacheCreateInfoEXT, pInitialData}
-
-instance Show VkValidationCacheCreateInfoEXT where
-        showsPrec d x
-          = showString "VkValidationCacheCreateInfoEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "flags = " .
-                            showsPrec d (getField @"flags" x) .
-                              showString ", " .
-                                showString "initialDataSize = " .
-                                  showsPrec d (getField @"initialDataSize" x) .
-                                    showString ", " .
-                                      showString "pInitialData = " .
-                                        showsPrec d (getField @"pInitialData" x) . showChar '}'
+    type StructRep VkValidationCacheCreateInfoEXT =
+         'StructMeta "VkValidationCacheCreateInfoEXT" -- ' closing tick for hsc2hs
+           VkValidationCacheCreateInfoEXT
+           #{size VkValidationCacheCreateInfoEXT}
+           #{alignment VkValidationCacheCreateInfoEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkValidationCacheCreateInfoEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkValidationCacheCreateInfoEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "flags" VkValidationCacheCreateFlagsEXT 'True 
+                                                                       #{offset VkValidationCacheCreateInfoEXT, flags}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "initialDataSize" CSize 'True 
+                                                       #{offset VkValidationCacheCreateInfoEXT, initialDataSize}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pInitialData" (Ptr Void) 'False 
+                                                          #{offset VkValidationCacheCreateInfoEXT, pInitialData}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkValidationFlagsEXT {
 --   >     VkStructureType                  sType;
@@ -261,193 +71,36 @@
 --   > } VkValidationFlagsEXT;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkValidationFlagsEXT VkValidationFlagsEXT registry at www.khronos.org>
-type VkValidationFlagsEXT = VulkanStruct VkValidationFlagsEXT' -- ' closing tick for hsc2hs
+type VkValidationFlagsEXT = VkStruct VkValidationFlagsEXT' -- ' closing tick for hsc2hs
 
 data VkValidationFlagsEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkValidationFlagsEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkValidationFlagsEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkValidationFlagsEXT where
-        sizeOf ~_ = #{size VkValidationFlagsEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkValidationFlagsEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkValidationFlagsEXT where
-        type StructFields VkValidationFlagsEXT =
-             '["sType", "pNext", "disabledValidationCheckCount", -- ' closing tick for hsc2hs
-               "pDisabledValidationChecks"]
-        type CUnionType VkValidationFlagsEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkValidationFlagsEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkValidationFlagsEXT = '[VkInstanceCreateInfo] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkValidationFlagsEXT
-         where
-        type FieldType "sType" VkValidationFlagsEXT = VkStructureType
-        type FieldOptional "sType" VkValidationFlagsEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkValidationFlagsEXT =
-             #{offset VkValidationFlagsEXT, sType}
-        type FieldIsArray "sType" VkValidationFlagsEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkValidationFlagsEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkValidationFlagsEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationFlagsEXT, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkValidationFlagsEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationFlagsEXT, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkValidationFlagsEXT
-         where
-        type FieldType "pNext" VkValidationFlagsEXT = Ptr Void
-        type FieldOptional "pNext" VkValidationFlagsEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkValidationFlagsEXT =
-             #{offset VkValidationFlagsEXT, pNext}
-        type FieldIsArray "pNext" VkValidationFlagsEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkValidationFlagsEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkValidationFlagsEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationFlagsEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkValidationFlagsEXT where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationFlagsEXT, pNext}
-
-instance {-# OVERLAPPING #-}
-         HasField "disabledValidationCheckCount" VkValidationFlagsEXT where
-        type FieldType "disabledValidationCheckCount" VkValidationFlagsEXT
-             = Word32
-        type FieldOptional "disabledValidationCheckCount"
-               VkValidationFlagsEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "disabledValidationCheckCount"
-               VkValidationFlagsEXT
-             =
-             #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
-        type FieldIsArray "disabledValidationCheckCount"
-               VkValidationFlagsEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "disabledValidationCheckCount" VkValidationFlagsEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, disabledValidationCheckCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "disabledValidationCheckCount" VkValidationFlagsEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "pDisabledValidationChecks" VkValidationFlagsEXT where
-        type FieldType "pDisabledValidationChecks" VkValidationFlagsEXT =
-             Ptr VkValidationCheckEXT
-        type FieldOptional "pDisabledValidationChecks" VkValidationFlagsEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pDisabledValidationChecks" VkValidationFlagsEXT =
-             #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
-        type FieldIsArray "pDisabledValidationChecks" VkValidationFlagsEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pDisabledValidationChecks" VkValidationFlagsEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkValidationFlagsEXT, pDisabledValidationChecks})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pDisabledValidationChecks" VkValidationFlagsEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
-
-instance Show VkValidationFlagsEXT where
-        showsPrec d x
-          = showString "VkValidationFlagsEXT {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "disabledValidationCheckCount = " .
-                            showsPrec d (getField @"disabledValidationCheckCount" x) .
-                              showString ", " .
-                                showString "pDisabledValidationChecks = " .
-                                  showsPrec d (getField @"pDisabledValidationChecks" x) .
-                                    showChar '}'
+    type StructRep VkValidationFlagsEXT =
+         'StructMeta "VkValidationFlagsEXT" VkValidationFlagsEXT  -- ' closing tick for hsc2hs
+                                                                 #{size VkValidationFlagsEXT}
+           #{alignment VkValidationFlagsEXT}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkValidationFlagsEXT, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkValidationFlagsEXT, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "disabledValidationCheckCount" Word32 'False 
+                                                                      #{offset VkValidationFlagsEXT, disabledValidationCheckCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pDisabledValidationChecks" (Ptr VkValidationCheckEXT) -- ' closing tick for hsc2hs
+                'False -- ' closing tick for hsc2hs
+                #{offset VkValidationFlagsEXT, pDisabledValidationChecks}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[VkInstanceCreateInfo] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/VertexInput.hsc b/src-gen/Graphics/Vulkan/Types/Struct/VertexInput.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/VertexInput.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/VertexInput.hsc
@@ -2,24 +2,18 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.VertexInput
        (VkVertexInputAttributeDescription,
-        VkVertexInputAttributeDescription', -- ' closing tick for hsc2hs
-        VkVertexInputBindingDescription, VkVertexInputBindingDescription', -- ' closing tick for hsc2hs
-        VkVertexInputBindingDivisorDescriptionEXT,
-        VkVertexInputBindingDivisorDescriptionEXT') -- ' closing tick for hsc2hs
+        VkVertexInputBindingDescription,
+        VkVertexInputBindingDivisorDescriptionEXT)
        where
-import Foreign.Storable                           (Storable (..))
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Format          (VkFormat)
 import Graphics.Vulkan.Types.Enum.VertexInputRate (VkVertexInputRate)
-import System.IO.Unsafe                           (unsafeDupablePerformIO)
 
 -- | > typedef struct VkVertexInputAttributeDescription {
 --   >     uint32_t               location;
@@ -30,194 +24,39 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkVertexInputAttributeDescription VkVertexInputAttributeDescription registry at www.khronos.org>
 type VkVertexInputAttributeDescription =
-     VulkanStruct VkVertexInputAttributeDescription' -- ' closing tick for hsc2hs
+     VkStruct VkVertexInputAttributeDescription' -- ' closing tick for hsc2hs
 
 data VkVertexInputAttributeDescription' -- ' closing tick for hsc2hs
 
-instance Eq VkVertexInputAttributeDescription where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkVertexInputAttributeDescription where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkVertexInputAttributeDescription where
-        sizeOf ~_ = #{size VkVertexInputAttributeDescription}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkVertexInputAttributeDescription}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkVertexInputAttributeDescription where
-        type StructFields VkVertexInputAttributeDescription =
-             '["location", "binding", "format", "offset"] -- ' closing tick for hsc2hs
-        type CUnionType VkVertexInputAttributeDescription = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkVertexInputAttributeDescription = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkVertexInputAttributeDescription = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "location" VkVertexInputAttributeDescription where
-        type FieldType "location" VkVertexInputAttributeDescription =
-             Word32
-        type FieldOptional "location" VkVertexInputAttributeDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "location" VkVertexInputAttributeDescription =
-             #{offset VkVertexInputAttributeDescription, location}
-        type FieldIsArray "location" VkVertexInputAttributeDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputAttributeDescription, location}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "location" VkVertexInputAttributeDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, location})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputAttributeDescription, location}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "location" VkVertexInputAttributeDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputAttributeDescription, location}
-
-instance {-# OVERLAPPING #-}
-         HasField "binding" VkVertexInputAttributeDescription where
-        type FieldType "binding" VkVertexInputAttributeDescription = Word32
-        type FieldOptional "binding" VkVertexInputAttributeDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "binding" VkVertexInputAttributeDescription =
-             #{offset VkVertexInputAttributeDescription, binding}
-        type FieldIsArray "binding" VkVertexInputAttributeDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputAttributeDescription, binding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "binding" VkVertexInputAttributeDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, binding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputAttributeDescription, binding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "binding" VkVertexInputAttributeDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputAttributeDescription, binding}
-
-instance {-# OVERLAPPING #-}
-         HasField "format" VkVertexInputAttributeDescription where
-        type FieldType "format" VkVertexInputAttributeDescription =
-             VkFormat
-        type FieldOptional "format" VkVertexInputAttributeDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "format" VkVertexInputAttributeDescription =
-             #{offset VkVertexInputAttributeDescription, format}
-        type FieldIsArray "format" VkVertexInputAttributeDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputAttributeDescription, format}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "format" VkVertexInputAttributeDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, format})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputAttributeDescription, format}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "format" VkVertexInputAttributeDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputAttributeDescription, format}
-
-instance {-# OVERLAPPING #-}
-         HasField "offset" VkVertexInputAttributeDescription where
-        type FieldType "offset" VkVertexInputAttributeDescription = Word32
-        type FieldOptional "offset" VkVertexInputAttributeDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "offset" VkVertexInputAttributeDescription =
-             #{offset VkVertexInputAttributeDescription, offset}
-        type FieldIsArray "offset" VkVertexInputAttributeDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputAttributeDescription, offset}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "offset" VkVertexInputAttributeDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputAttributeDescription, offset})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputAttributeDescription, offset}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "offset" VkVertexInputAttributeDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputAttributeDescription, offset}
-
-instance Show VkVertexInputAttributeDescription where
-        showsPrec d x
-          = showString "VkVertexInputAttributeDescription {" .
-              showString "location = " .
-                showsPrec d (getField @"location" x) .
-                  showString ", " .
-                    showString "binding = " .
-                      showsPrec d (getField @"binding" x) .
-                        showString ", " .
-                          showString "format = " .
-                            showsPrec d (getField @"format" x) .
-                              showString ", " .
-                                showString "offset = " .
-                                  showsPrec d (getField @"offset" x) . showChar '}'
+    type StructRep VkVertexInputAttributeDescription =
+         'StructMeta "VkVertexInputAttributeDescription" -- ' closing tick for hsc2hs
+           VkVertexInputAttributeDescription
+           #{size VkVertexInputAttributeDescription}
+           #{alignment VkVertexInputAttributeDescription}
+           '[('FieldMeta "location" Word32 'False  -- ' closing tick for hsc2hs
+                                                  #{offset VkVertexInputAttributeDescription, location}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "binding" Word32 'False 
+                                                 #{offset VkVertexInputAttributeDescription, binding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "format" VkFormat 'False 
+                                                  #{offset VkVertexInputAttributeDescription, format}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "offset" Word32 'False 
+                                                #{offset VkVertexInputAttributeDescription, offset}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkVertexInputBindingDescription {
 --   >     uint32_t               binding;
@@ -227,155 +66,34 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkVertexInputBindingDescription VkVertexInputBindingDescription registry at www.khronos.org>
 type VkVertexInputBindingDescription =
-     VulkanStruct VkVertexInputBindingDescription' -- ' closing tick for hsc2hs
+     VkStruct VkVertexInputBindingDescription' -- ' closing tick for hsc2hs
 
 data VkVertexInputBindingDescription' -- ' closing tick for hsc2hs
 
-instance Eq VkVertexInputBindingDescription where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkVertexInputBindingDescription where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkVertexInputBindingDescription where
-        sizeOf ~_ = #{size VkVertexInputBindingDescription}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkVertexInputBindingDescription}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkVertexInputBindingDescription where
-        type StructFields VkVertexInputBindingDescription =
-             '["binding", "stride", "inputRate"] -- ' closing tick for hsc2hs
-        type CUnionType VkVertexInputBindingDescription = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkVertexInputBindingDescription = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkVertexInputBindingDescription = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "binding" VkVertexInputBindingDescription where
-        type FieldType "binding" VkVertexInputBindingDescription = Word32
-        type FieldOptional "binding" VkVertexInputBindingDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "binding" VkVertexInputBindingDescription =
-             #{offset VkVertexInputBindingDescription, binding}
-        type FieldIsArray "binding" VkVertexInputBindingDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputBindingDescription, binding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "binding" VkVertexInputBindingDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, binding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputBindingDescription, binding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "binding" VkVertexInputBindingDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputBindingDescription, binding}
-
-instance {-# OVERLAPPING #-}
-         HasField "stride" VkVertexInputBindingDescription where
-        type FieldType "stride" VkVertexInputBindingDescription = Word32
-        type FieldOptional "stride" VkVertexInputBindingDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "stride" VkVertexInputBindingDescription =
-             #{offset VkVertexInputBindingDescription, stride}
-        type FieldIsArray "stride" VkVertexInputBindingDescription = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputBindingDescription, stride}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "stride" VkVertexInputBindingDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, stride})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputBindingDescription, stride}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "stride" VkVertexInputBindingDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputBindingDescription, stride}
-
-instance {-# OVERLAPPING #-}
-         HasField "inputRate" VkVertexInputBindingDescription where
-        type FieldType "inputRate" VkVertexInputBindingDescription =
-             VkVertexInputRate
-        type FieldOptional "inputRate" VkVertexInputBindingDescription =
-             'False -- ' closing tick for hsc2hs
-        type FieldOffset "inputRate" VkVertexInputBindingDescription =
-             #{offset VkVertexInputBindingDescription, inputRate}
-        type FieldIsArray "inputRate" VkVertexInputBindingDescription =
-             'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputBindingDescription, inputRate}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "inputRate" VkVertexInputBindingDescription where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDescription, inputRate})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputBindingDescription, inputRate}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "inputRate" VkVertexInputBindingDescription where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputBindingDescription, inputRate}
-
-instance Show VkVertexInputBindingDescription where
-        showsPrec d x
-          = showString "VkVertexInputBindingDescription {" .
-              showString "binding = " .
-                showsPrec d (getField @"binding" x) .
-                  showString ", " .
-                    showString "stride = " .
-                      showsPrec d (getField @"stride" x) .
-                        showString ", " .
-                          showString "inputRate = " .
-                            showsPrec d (getField @"inputRate" x) . showChar '}'
+    type StructRep VkVertexInputBindingDescription =
+         'StructMeta "VkVertexInputBindingDescription" -- ' closing tick for hsc2hs
+           VkVertexInputBindingDescription
+           #{size VkVertexInputBindingDescription}
+           #{alignment VkVertexInputBindingDescription}
+           '[('FieldMeta "binding" Word32 'False  -- ' closing tick for hsc2hs
+                                                 #{offset VkVertexInputBindingDescription, binding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "stride" Word32 'False 
+                                                #{offset VkVertexInputBindingDescription, stride}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "inputRate" VkVertexInputRate 'False 
+                                                              #{offset VkVertexInputBindingDescription, inputRate}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkVertexInputBindingDivisorDescriptionEXT {
 --   >     uint32_t          binding;
@@ -384,132 +102,27 @@
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkVertexInputBindingDivisorDescriptionEXT VkVertexInputBindingDivisorDescriptionEXT registry at www.khronos.org>
 type VkVertexInputBindingDivisorDescriptionEXT =
-     VulkanStruct VkVertexInputBindingDivisorDescriptionEXT' -- ' closing tick for hsc2hs
+     VkStruct VkVertexInputBindingDivisorDescriptionEXT' -- ' closing tick for hsc2hs
 
 data VkVertexInputBindingDivisorDescriptionEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkVertexInputBindingDivisorDescriptionEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkVertexInputBindingDivisorDescriptionEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkVertexInputBindingDivisorDescriptionEXT where
-        sizeOf ~_
-          = #{size VkVertexInputBindingDivisorDescriptionEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_
-          = #{alignment VkVertexInputBindingDivisorDescriptionEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkVertexInputBindingDivisorDescriptionEXT
          where
-        type StructFields VkVertexInputBindingDivisorDescriptionEXT =
-             '["binding", "divisor"] -- ' closing tick for hsc2hs
-        type CUnionType VkVertexInputBindingDivisorDescriptionEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkVertexInputBindingDivisorDescriptionEXT =
-             'False -- ' closing tick for hsc2hs
-        type StructExtends VkVertexInputBindingDivisorDescriptionEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-}
-         HasField "binding" VkVertexInputBindingDivisorDescriptionEXT where
-        type FieldType "binding" VkVertexInputBindingDivisorDescriptionEXT
-             = Word32
-        type FieldOptional "binding"
-               VkVertexInputBindingDivisorDescriptionEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "binding"
-               VkVertexInputBindingDivisorDescriptionEXT
-             =
-             #{offset VkVertexInputBindingDivisorDescriptionEXT, binding}
-        type FieldIsArray "binding"
-               VkVertexInputBindingDivisorDescriptionEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputBindingDivisorDescriptionEXT, binding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "binding" VkVertexInputBindingDivisorDescriptionEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDivisorDescriptionEXT, binding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputBindingDivisorDescriptionEXT, binding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "binding" VkVertexInputBindingDivisorDescriptionEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputBindingDivisorDescriptionEXT, binding}
-
-instance {-# OVERLAPPING #-}
-         HasField "divisor" VkVertexInputBindingDivisorDescriptionEXT where
-        type FieldType "divisor" VkVertexInputBindingDivisorDescriptionEXT
-             = Word32
-        type FieldOptional "divisor"
-               VkVertexInputBindingDivisorDescriptionEXT
-             = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "divisor"
-               VkVertexInputBindingDivisorDescriptionEXT
-             =
-             #{offset VkVertexInputBindingDivisorDescriptionEXT, divisor}
-        type FieldIsArray "divisor"
-               VkVertexInputBindingDivisorDescriptionEXT
-             = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkVertexInputBindingDivisorDescriptionEXT, divisor}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "divisor" VkVertexInputBindingDivisorDescriptionEXT
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkVertexInputBindingDivisorDescriptionEXT, divisor})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkVertexInputBindingDivisorDescriptionEXT, divisor}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "divisor" VkVertexInputBindingDivisorDescriptionEXT
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkVertexInputBindingDivisorDescriptionEXT, divisor}
-
-instance Show VkVertexInputBindingDivisorDescriptionEXT where
-        showsPrec d x
-          = showString "VkVertexInputBindingDivisorDescriptionEXT {" .
-              showString "binding = " .
-                showsPrec d (getField @"binding" x) .
-                  showString ", " .
-                    showString "divisor = " .
-                      showsPrec d (getField @"divisor" x) . showChar '}'
+    type StructRep VkVertexInputBindingDivisorDescriptionEXT =
+         'StructMeta "VkVertexInputBindingDivisorDescriptionEXT" -- ' closing tick for hsc2hs
+           VkVertexInputBindingDivisorDescriptionEXT
+           #{size VkVertexInputBindingDivisorDescriptionEXT}
+           #{alignment VkVertexInputBindingDivisorDescriptionEXT}
+           '[('FieldMeta "binding" Word32 'False  -- ' closing tick for hsc2hs
+                                                 #{offset VkVertexInputBindingDivisorDescriptionEXT, binding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "divisor" Word32 'False 
+                                                 #{offset VkVertexInputBindingDivisorDescriptionEXT, divisor}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/Viewport.hsc b/src-gen/Graphics/Vulkan/Types/Struct/Viewport.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/Viewport.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/Viewport.hsc
@@ -2,20 +2,14 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.Viewport
-       (VkViewport, VkViewport', VkViewportSwizzleNV, -- ' closing tick for hsc2hs
-        VkViewportSwizzleNV', VkViewportWScalingNV, VkViewportWScalingNV')
-       where
-import Foreign.Storable                                       (Storable (..))
+       (VkViewport, VkViewportSwizzleNV, VkViewportWScalingNV) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.ViewportCoordinateSwizzleNV (VkViewportCoordinateSwizzleNV)
-import System.IO.Unsafe                                       (unsafeDupablePerformIO)
 
 -- | > typedef struct VkViewport {
 --   >     float          x;
@@ -27,229 +21,60 @@
 --   > } VkViewport;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkViewport VkViewport registry at www.khronos.org>
-type VkViewport = VulkanStruct VkViewport' -- ' closing tick for hsc2hs
+type VkViewport = VkStruct VkViewport' -- ' closing tick for hsc2hs
 
 data VkViewport' -- ' closing tick for hsc2hs
 
-instance Eq VkViewport where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkViewport where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkViewport where
-        sizeOf ~_ = #{size VkViewport}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkViewport}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkViewport where
-        type StructFields VkViewport =
-             '["x", "y", "width", "height", "minDepth", "maxDepth"] -- ' closing tick for hsc2hs
-        type CUnionType VkViewport = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkViewport = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkViewport = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "x" VkViewport where
-        type FieldType "x" VkViewport = #{type float}
-        type FieldOptional "x" VkViewport = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "x" VkViewport =
-             #{offset VkViewport, x}
-        type FieldIsArray "x" VkViewport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewport, x}
-
-instance {-# OVERLAPPING #-} CanReadField "x" VkViewport where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, x})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkViewport, x}
-
-instance {-# OVERLAPPING #-} CanWriteField "x" VkViewport where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkViewport, x}
-
-instance {-# OVERLAPPING #-} HasField "y" VkViewport where
-        type FieldType "y" VkViewport = #{type float}
-        type FieldOptional "y" VkViewport = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "y" VkViewport =
-             #{offset VkViewport, y}
-        type FieldIsArray "y" VkViewport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewport, y}
-
-instance {-# OVERLAPPING #-} CanReadField "y" VkViewport where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, y})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkViewport, y}
-
-instance {-# OVERLAPPING #-} CanWriteField "y" VkViewport where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkViewport, y}
-
-instance {-# OVERLAPPING #-} HasField "width" VkViewport where
-        type FieldType "width" VkViewport = #{type float}
-        type FieldOptional "width" VkViewport = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "width" VkViewport =
-             #{offset VkViewport, width}
-        type FieldIsArray "width" VkViewport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewport, width}
-
-instance {-# OVERLAPPING #-} CanReadField "width" VkViewport where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, width})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkViewport, width}
-
-instance {-# OVERLAPPING #-} CanWriteField "width" VkViewport where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewport, width}
-
-instance {-# OVERLAPPING #-} HasField "height" VkViewport where
-        type FieldType "height" VkViewport = #{type float}
-        type FieldOptional "height" VkViewport = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "height" VkViewport =
-             #{offset VkViewport, height}
-        type FieldIsArray "height" VkViewport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewport, height}
-
-instance {-# OVERLAPPING #-} CanReadField "height" VkViewport where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, height})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewport, height}
-
-instance {-# OVERLAPPING #-} CanWriteField "height" VkViewport
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewport, height}
-
-instance {-# OVERLAPPING #-} HasField "minDepth" VkViewport where
-        type FieldType "minDepth" VkViewport = #{type float}
-        type FieldOptional "minDepth" VkViewport = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "minDepth" VkViewport =
-             #{offset VkViewport, minDepth}
-        type FieldIsArray "minDepth" VkViewport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewport, minDepth}
-
-instance {-# OVERLAPPING #-} CanReadField "minDepth" VkViewport
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, minDepth})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewport, minDepth}
-
-instance {-# OVERLAPPING #-} CanWriteField "minDepth" VkViewport
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewport, minDepth}
-
-instance {-# OVERLAPPING #-} HasField "maxDepth" VkViewport where
-        type FieldType "maxDepth" VkViewport = #{type float}
-        type FieldOptional "maxDepth" VkViewport = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "maxDepth" VkViewport =
-             #{offset VkViewport, maxDepth}
-        type FieldIsArray "maxDepth" VkViewport = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewport, maxDepth}
-
-instance {-# OVERLAPPING #-} CanReadField "maxDepth" VkViewport
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewport, maxDepth})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewport, maxDepth}
-
-instance {-# OVERLAPPING #-} CanWriteField "maxDepth" VkViewport
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewport, maxDepth}
-
-instance Show VkViewport where
-        showsPrec d x
-          = showString "VkViewport {" .
-              showString "x = " .
-                showsPrec d (getField @"x" x) .
-                  showString ", " .
-                    showString "y = " .
-                      showsPrec d (getField @"y" x) .
-                        showString ", " .
-                          showString "width = " .
-                            showsPrec d (getField @"width" x) .
-                              showString ", " .
-                                showString "height = " .
-                                  showsPrec d (getField @"height" x) .
-                                    showString ", " .
-                                      showString "minDepth = " .
-                                        showsPrec d (getField @"minDepth" x) .
-                                          showString ", " .
-                                            showString "maxDepth = " .
-                                              showsPrec d (getField @"maxDepth" x) . showChar '}'
+    type StructRep VkViewport =
+         'StructMeta "VkViewport" VkViewport  -- ' closing tick for hsc2hs
+                                             #{size VkViewport}
+           #{alignment VkViewport}
+           '[('FieldMeta "x" (
+                              #{type float}
+                              ) 'False  -- ' closing tick for hsc2hs
+                                       #{offset VkViewport, x}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "y" ( -- ' closing tick for hsc2hs
+                              #{type float}
+                              ) 'False  -- ' closing tick for hsc2hs
+                                       #{offset VkViewport, y}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "width" ( -- ' closing tick for hsc2hs
+                                  #{type float}
+                                  ) 'False  -- ' closing tick for hsc2hs
+                                           #{offset VkViewport, width}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "height" ( -- ' closing tick for hsc2hs
+                                   #{type float}
+                                   ) 'False  -- ' closing tick for hsc2hs
+                                            #{offset VkViewport, height}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "minDepth" ( -- ' closing tick for hsc2hs
+                                     #{type float}
+                                     ) 'False  -- ' closing tick for hsc2hs
+                                              #{offset VkViewport, minDepth}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "maxDepth" ( -- ' closing tick for hsc2hs
+                                     #{type float}
+                                     ) 'False  -- ' closing tick for hsc2hs
+                                              #{offset VkViewport, maxDepth}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkViewportSwizzleNV {
 --   >     VkViewportCoordinateSwizzleNV          x;
@@ -259,177 +84,38 @@
 --   > } VkViewportSwizzleNV;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkViewportSwizzleNV VkViewportSwizzleNV registry at www.khronos.org>
-type VkViewportSwizzleNV = VulkanStruct VkViewportSwizzleNV' -- ' closing tick for hsc2hs
+type VkViewportSwizzleNV = VkStruct VkViewportSwizzleNV' -- ' closing tick for hsc2hs
 
 data VkViewportSwizzleNV' -- ' closing tick for hsc2hs
 
-instance Eq VkViewportSwizzleNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkViewportSwizzleNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkViewportSwizzleNV where
-        sizeOf ~_ = #{size VkViewportSwizzleNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkViewportSwizzleNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkViewportSwizzleNV where
-        type StructFields VkViewportSwizzleNV = '["x", "y", "z", "w"] -- ' closing tick for hsc2hs
-        type CUnionType VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkViewportSwizzleNV = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "x" VkViewportSwizzleNV where
-        type FieldType "x" VkViewportSwizzleNV =
-             VkViewportCoordinateSwizzleNV
-        type FieldOptional "x" VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "x" VkViewportSwizzleNV =
-             #{offset VkViewportSwizzleNV, x}
-        type FieldIsArray "x" VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewportSwizzleNV, x}
-
-instance {-# OVERLAPPING #-} CanReadField "x" VkViewportSwizzleNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, x})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewportSwizzleNV, x}
-
-instance {-# OVERLAPPING #-} CanWriteField "x" VkViewportSwizzleNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewportSwizzleNV, x}
-
-instance {-# OVERLAPPING #-} HasField "y" VkViewportSwizzleNV where
-        type FieldType "y" VkViewportSwizzleNV =
-             VkViewportCoordinateSwizzleNV
-        type FieldOptional "y" VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "y" VkViewportSwizzleNV =
-             #{offset VkViewportSwizzleNV, y}
-        type FieldIsArray "y" VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewportSwizzleNV, y}
-
-instance {-# OVERLAPPING #-} CanReadField "y" VkViewportSwizzleNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, y})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewportSwizzleNV, y}
-
-instance {-# OVERLAPPING #-} CanWriteField "y" VkViewportSwizzleNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewportSwizzleNV, y}
-
-instance {-# OVERLAPPING #-} HasField "z" VkViewportSwizzleNV where
-        type FieldType "z" VkViewportSwizzleNV =
-             VkViewportCoordinateSwizzleNV
-        type FieldOptional "z" VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "z" VkViewportSwizzleNV =
-             #{offset VkViewportSwizzleNV, z}
-        type FieldIsArray "z" VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewportSwizzleNV, z}
-
-instance {-# OVERLAPPING #-} CanReadField "z" VkViewportSwizzleNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, z})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewportSwizzleNV, z}
-
-instance {-# OVERLAPPING #-} CanWriteField "z" VkViewportSwizzleNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewportSwizzleNV, z}
-
-instance {-# OVERLAPPING #-} HasField "w" VkViewportSwizzleNV where
-        type FieldType "w" VkViewportSwizzleNV =
-             VkViewportCoordinateSwizzleNV
-        type FieldOptional "w" VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "w" VkViewportSwizzleNV =
-             #{offset VkViewportSwizzleNV, w}
-        type FieldIsArray "w" VkViewportSwizzleNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewportSwizzleNV, w}
-
-instance {-# OVERLAPPING #-} CanReadField "w" VkViewportSwizzleNV
-         where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportSwizzleNV, w})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewportSwizzleNV, w}
-
-instance {-# OVERLAPPING #-} CanWriteField "w" VkViewportSwizzleNV
-         where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewportSwizzleNV, w}
-
-instance Show VkViewportSwizzleNV where
-        showsPrec d x
-          = showString "VkViewportSwizzleNV {" .
-              showString "x = " .
-                showsPrec d (getField @"x" x) .
-                  showString ", " .
-                    showString "y = " .
-                      showsPrec d (getField @"y" x) .
-                        showString ", " .
-                          showString "z = " .
-                            showsPrec d (getField @"z" x) .
-                              showString ", " .
-                                showString "w = " . showsPrec d (getField @"w" x) . showChar '}'
+    type StructRep VkViewportSwizzleNV =
+         'StructMeta "VkViewportSwizzleNV" VkViewportSwizzleNV  -- ' closing tick for hsc2hs
+                                                               #{size VkViewportSwizzleNV}
+           #{alignment VkViewportSwizzleNV}
+           '[('FieldMeta "x" VkViewportCoordinateSwizzleNV 'False  -- ' closing tick for hsc2hs
+                                                                  #{offset VkViewportSwizzleNV, x}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "y" VkViewportCoordinateSwizzleNV 'False 
+                                                                  #{offset VkViewportSwizzleNV, y}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "z" VkViewportCoordinateSwizzleNV 'False 
+                                                                  #{offset VkViewportSwizzleNV, z}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "w" VkViewportCoordinateSwizzleNV 'False 
+                                                                  #{offset VkViewportSwizzleNV, w}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
 
 -- | > typedef struct VkViewportWScalingNV {
 --   >     float          xcoeff;
@@ -437,109 +123,29 @@
 --   > } VkViewportWScalingNV;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkViewportWScalingNV VkViewportWScalingNV registry at www.khronos.org>
-type VkViewportWScalingNV = VulkanStruct VkViewportWScalingNV' -- ' closing tick for hsc2hs
+type VkViewportWScalingNV = VkStruct VkViewportWScalingNV' -- ' closing tick for hsc2hs
 
 data VkViewportWScalingNV' -- ' closing tick for hsc2hs
 
-instance Eq VkViewportWScalingNV where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkViewportWScalingNV where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkViewportWScalingNV where
-        sizeOf ~_ = #{size VkViewportWScalingNV}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkViewportWScalingNV}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkViewportWScalingNV where
-        type StructFields VkViewportWScalingNV = '["xcoeff", "ycoeff"] -- ' closing tick for hsc2hs
-        type CUnionType VkViewportWScalingNV = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkViewportWScalingNV = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkViewportWScalingNV = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "xcoeff" VkViewportWScalingNV
-         where
-        type FieldType "xcoeff" VkViewportWScalingNV =
-             #{type float}
-        type FieldOptional "xcoeff" VkViewportWScalingNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "xcoeff" VkViewportWScalingNV =
-             #{offset VkViewportWScalingNV, xcoeff}
-        type FieldIsArray "xcoeff" VkViewportWScalingNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewportWScalingNV, xcoeff}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "xcoeff" VkViewportWScalingNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportWScalingNV, xcoeff})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewportWScalingNV, xcoeff}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "xcoeff" VkViewportWScalingNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewportWScalingNV, xcoeff}
-
-instance {-# OVERLAPPING #-} HasField "ycoeff" VkViewportWScalingNV
-         where
-        type FieldType "ycoeff" VkViewportWScalingNV =
-             #{type float}
-        type FieldOptional "ycoeff" VkViewportWScalingNV = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "ycoeff" VkViewportWScalingNV =
-             #{offset VkViewportWScalingNV, ycoeff}
-        type FieldIsArray "ycoeff" VkViewportWScalingNV = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkViewportWScalingNV, ycoeff}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "ycoeff" VkViewportWScalingNV where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkViewportWScalingNV, ycoeff})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkViewportWScalingNV, ycoeff}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "ycoeff" VkViewportWScalingNV where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkViewportWScalingNV, ycoeff}
-
-instance Show VkViewportWScalingNV where
-        showsPrec d x
-          = showString "VkViewportWScalingNV {" .
-              showString "xcoeff = " .
-                showsPrec d (getField @"xcoeff" x) .
-                  showString ", " .
-                    showString "ycoeff = " .
-                      showsPrec d (getField @"ycoeff" x) . showChar '}'
+    type StructRep VkViewportWScalingNV =
+         'StructMeta "VkViewportWScalingNV" VkViewportWScalingNV  -- ' closing tick for hsc2hs
+                                                                 #{size VkViewportWScalingNV}
+           #{alignment VkViewportWScalingNV}
+           '[('FieldMeta "xcoeff" (
+                                   #{type float}
+                                   ) 'False  -- ' closing tick for hsc2hs
+                                            #{offset VkViewportWScalingNV, xcoeff}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "ycoeff" ( -- ' closing tick for hsc2hs
+                                   #{type float}
+                                   ) 'False  -- ' closing tick for hsc2hs
+                                            #{offset VkViewportWScalingNV, ycoeff}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/WriteDescriptorSet.hsc b/src-gen/Graphics/Vulkan/Types/Struct/WriteDescriptorSet.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/WriteDescriptorSet.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/WriteDescriptorSet.hsc
@@ -2,14 +2,11 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
 module Graphics.Vulkan.Types.Struct.WriteDescriptorSet
-       (VkWriteDescriptorSet, VkWriteDescriptorSet') where -- ' closing tick for hsc2hs
-import Foreign.Storable                         (Storable (..))
+       (VkWriteDescriptorSet) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
 import Graphics.Vulkan.Types.Enum.Descriptor    (VkDescriptorType)
@@ -17,7 +14,6 @@
 import Graphics.Vulkan.Types.Handles            (VkBufferView, VkDescriptorSet)
 import Graphics.Vulkan.Types.Struct.Descriptor  (VkDescriptorBufferInfo,
                                                  VkDescriptorImageInfo)
-import System.IO.Unsafe                         (unsafeDupablePerformIO)
 
 -- | > typedef struct VkWriteDescriptorSet {
 --   >     VkStructureType sType;
@@ -33,400 +29,65 @@
 --   > } VkWriteDescriptorSet;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkWriteDescriptorSet VkWriteDescriptorSet registry at www.khronos.org>
-type VkWriteDescriptorSet = VulkanStruct VkWriteDescriptorSet' -- ' closing tick for hsc2hs
+type VkWriteDescriptorSet = VkStruct VkWriteDescriptorSet' -- ' closing tick for hsc2hs
 
 data VkWriteDescriptorSet' -- ' closing tick for hsc2hs
 
-instance Eq VkWriteDescriptorSet where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkWriteDescriptorSet where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkWriteDescriptorSet where
-        sizeOf ~_ = #{size VkWriteDescriptorSet}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkWriteDescriptorSet}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkWriteDescriptorSet where
-        type StructFields VkWriteDescriptorSet =
-             '["sType", "pNext", "dstSet", "dstBinding", "dstArrayElement", -- ' closing tick for hsc2hs
-               "descriptorCount", "descriptorType", "pImageInfo", "pBufferInfo",
-               "pTexelBufferView"]
-        type CUnionType VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkWriteDescriptorSet = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "sType" VkWriteDescriptorSet
-         where
-        type FieldType "sType" VkWriteDescriptorSet = VkStructureType
-        type FieldOptional "sType" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "sType" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, sType}
-        type FieldIsArray "sType" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkWriteDescriptorSet, sType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "sType" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, sType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, sType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "sType" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, sType}
-
-instance {-# OVERLAPPING #-} HasField "pNext" VkWriteDescriptorSet
-         where
-        type FieldType "pNext" VkWriteDescriptorSet = Ptr Void
-        type FieldOptional "pNext" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pNext" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, pNext}
-        type FieldIsArray "pNext" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkWriteDescriptorSet, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pNext" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pNext})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, pNext}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pNext" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, pNext}
-
-instance {-# OVERLAPPING #-} HasField "dstSet" VkWriteDescriptorSet
-         where
-        type FieldType "dstSet" VkWriteDescriptorSet = VkDescriptorSet
-        type FieldOptional "dstSet" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstSet" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, dstSet}
-        type FieldIsArray "dstSet" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkWriteDescriptorSet, dstSet}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstSet" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstSet})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, dstSet}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstSet" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, dstSet}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstBinding" VkWriteDescriptorSet where
-        type FieldType "dstBinding" VkWriteDescriptorSet = Word32
-        type FieldOptional "dstBinding" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstBinding" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, dstBinding}
-        type FieldIsArray "dstBinding" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWriteDescriptorSet, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstBinding" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstBinding})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstBinding" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, dstBinding}
-
-instance {-# OVERLAPPING #-}
-         HasField "dstArrayElement" VkWriteDescriptorSet where
-        type FieldType "dstArrayElement" VkWriteDescriptorSet = Word32
-        type FieldOptional "dstArrayElement" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "dstArrayElement" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, dstArrayElement}
-        type FieldIsArray "dstArrayElement" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWriteDescriptorSet, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "dstArrayElement" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, dstArrayElement})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "dstArrayElement" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, dstArrayElement}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorCount" VkWriteDescriptorSet where
-        type FieldType "descriptorCount" VkWriteDescriptorSet = Word32
-        type FieldOptional "descriptorCount" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorCount" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, descriptorCount}
-        type FieldIsArray "descriptorCount" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWriteDescriptorSet, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorCount" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, descriptorCount})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorCount" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, descriptorCount}
-
-instance {-# OVERLAPPING #-}
-         HasField "descriptorType" VkWriteDescriptorSet where
-        type FieldType "descriptorType" VkWriteDescriptorSet =
-             VkDescriptorType
-        type FieldOptional "descriptorType" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "descriptorType" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, descriptorType}
-        type FieldIsArray "descriptorType" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWriteDescriptorSet, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "descriptorType" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, descriptorType})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "descriptorType" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, descriptorType}
-
-instance {-# OVERLAPPING #-}
-         HasField "pImageInfo" VkWriteDescriptorSet where
-        type FieldType "pImageInfo" VkWriteDescriptorSet =
-             Ptr VkDescriptorImageInfo
-        type FieldOptional "pImageInfo" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pImageInfo" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, pImageInfo}
-        type FieldIsArray "pImageInfo" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWriteDescriptorSet, pImageInfo}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pImageInfo" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pImageInfo})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, pImageInfo}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pImageInfo" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, pImageInfo}
-
-instance {-# OVERLAPPING #-}
-         HasField "pBufferInfo" VkWriteDescriptorSet where
-        type FieldType "pBufferInfo" VkWriteDescriptorSet =
-             Ptr VkDescriptorBufferInfo
-        type FieldOptional "pBufferInfo" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pBufferInfo" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, pBufferInfo}
-        type FieldIsArray "pBufferInfo" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWriteDescriptorSet, pBufferInfo}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pBufferInfo" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pBufferInfo})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, pBufferInfo}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pBufferInfo" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, pBufferInfo}
-
-instance {-# OVERLAPPING #-}
-         HasField "pTexelBufferView" VkWriteDescriptorSet where
-        type FieldType "pTexelBufferView" VkWriteDescriptorSet =
-             Ptr VkBufferView
-        type FieldOptional "pTexelBufferView" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "pTexelBufferView" VkWriteDescriptorSet =
-             #{offset VkWriteDescriptorSet, pTexelBufferView}
-        type FieldIsArray "pTexelBufferView" VkWriteDescriptorSet = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset
-          = #{offset VkWriteDescriptorSet, pTexelBufferView}
-
-instance {-# OVERLAPPING #-}
-         CanReadField "pTexelBufferView" VkWriteDescriptorSet where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkWriteDescriptorSet, pTexelBufferView})
-
-        {-# INLINE readField #-}
-        readField p
-          = peekByteOff p #{offset VkWriteDescriptorSet, pTexelBufferView}
-
-instance {-# OVERLAPPING #-}
-         CanWriteField "pTexelBufferView" VkWriteDescriptorSet where
-        {-# INLINE writeField #-}
-        writeField p
-          = pokeByteOff p #{offset VkWriteDescriptorSet, pTexelBufferView}
-
-instance Show VkWriteDescriptorSet where
-        showsPrec d x
-          = showString "VkWriteDescriptorSet {" .
-              showString "sType = " .
-                showsPrec d (getField @"sType" x) .
-                  showString ", " .
-                    showString "pNext = " .
-                      showsPrec d (getField @"pNext" x) .
-                        showString ", " .
-                          showString "dstSet = " .
-                            showsPrec d (getField @"dstSet" x) .
-                              showString ", " .
-                                showString "dstBinding = " .
-                                  showsPrec d (getField @"dstBinding" x) .
-                                    showString ", " .
-                                      showString "dstArrayElement = " .
-                                        showsPrec d (getField @"dstArrayElement" x) .
-                                          showString ", " .
-                                            showString "descriptorCount = " .
-                                              showsPrec d (getField @"descriptorCount" x) .
-                                                showString ", " .
-                                                  showString "descriptorType = " .
-                                                    showsPrec d (getField @"descriptorType" x) .
-                                                      showString ", " .
-                                                        showString "pImageInfo = " .
-                                                          showsPrec d (getField @"pImageInfo" x) .
-                                                            showString ", " .
-                                                              showString "pBufferInfo = " .
-                                                                showsPrec d
-                                                                  (getField @"pBufferInfo" x)
-                                                                  .
-                                                                  showString ", " .
-                                                                    showString "pTexelBufferView = "
-                                                                      .
-                                                                      showsPrec d
-                                                                        (getField
-                                                                           @"pTexelBufferView"
-                                                                           x)
-                                                                        . showChar '}'
+    type StructRep VkWriteDescriptorSet =
+         'StructMeta "VkWriteDescriptorSet" VkWriteDescriptorSet  -- ' closing tick for hsc2hs
+                                                                 #{size VkWriteDescriptorSet}
+           #{alignment VkWriteDescriptorSet}
+           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
+                                                        #{offset VkWriteDescriptorSet, sType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pNext" (Ptr Void) 'False 
+                                                   #{offset VkWriteDescriptorSet, pNext}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstSet" VkDescriptorSet 'False 
+                                                         #{offset VkWriteDescriptorSet, dstSet}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstBinding" Word32 'False 
+                                                    #{offset VkWriteDescriptorSet, dstBinding}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "dstArrayElement" Word32 'False 
+                                                         #{offset VkWriteDescriptorSet, dstArrayElement}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorCount" Word32 'False 
+                                                         #{offset VkWriteDescriptorSet, descriptorCount}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "descriptorType" VkDescriptorType 'False 
+                                                                  #{offset VkWriteDescriptorSet, descriptorType}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pImageInfo" (Ptr VkDescriptorImageInfo) 'False
+                #{offset VkWriteDescriptorSet, pImageInfo}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pBufferInfo" (Ptr VkDescriptorBufferInfo) 'False
+                #{offset VkWriteDescriptorSet, pBufferInfo}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "pTexelBufferView" (Ptr VkBufferView) 'False 
+                                                                      #{offset VkWriteDescriptorSet, pTexelBufferView}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src-gen/Graphics/Vulkan/Types/Struct/XYColorEXT.hsc b/src-gen/Graphics/Vulkan/Types/Struct/XYColorEXT.hsc
--- a/src-gen/Graphics/Vulkan/Types/Struct/XYColorEXT.hsc
+++ b/src-gen/Graphics/Vulkan/Types/Struct/XYColorEXT.hsc
@@ -2,17 +2,12 @@
 
 {-# LANGUAGE DataKinds             #-}
 {-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MagicHash             #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE Strict                #-}
-{-# LANGUAGE TypeApplications      #-}
 {-# LANGUAGE TypeFamilies          #-}
-module Graphics.Vulkan.Types.Struct.XYColorEXT
-       (VkXYColorEXT, VkXYColorEXT') where -- ' closing tick for hsc2hs
-import Foreign.Storable                 (Storable (..))
+module Graphics.Vulkan.Types.Struct.XYColorEXT (VkXYColorEXT) where
 import Graphics.Vulkan.Marshal
 import Graphics.Vulkan.Marshal.Internal
-import System.IO.Unsafe                 (unsafeDupablePerformIO)
 
 -- | Chromaticity coordinate
 --
@@ -22,96 +17,29 @@
 --   > } VkXYColorEXT;
 --
 --   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkXYColorEXT VkXYColorEXT registry at www.khronos.org>
-type VkXYColorEXT = VulkanStruct VkXYColorEXT' -- ' closing tick for hsc2hs
+type VkXYColorEXT = VkStruct VkXYColorEXT' -- ' closing tick for hsc2hs
 
 data VkXYColorEXT' -- ' closing tick for hsc2hs
 
-instance Eq VkXYColorEXT where
-        a == b = EQ == cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE (==) #-}
-
-instance Ord VkXYColorEXT where
-        compare a b = cmpBytes## (sizeOf a) (unsafeAddr a) (unsafeAddr b)
-
-        {-# INLINE compare #-}
-
-instance Storable VkXYColorEXT where
-        sizeOf ~_ = #{size VkXYColorEXT}
-
-        {-# INLINE sizeOf #-}
-        alignment ~_ = #{alignment VkXYColorEXT}
-
-        {-# INLINE alignment #-}
-        peek = peekVkData##
-
-        {-# INLINE peek #-}
-        poke = pokeVkData##
-
-        {-# INLINE poke #-}
-
 instance VulkanMarshal VkXYColorEXT where
-        type StructFields VkXYColorEXT = '["x", "y"] -- ' closing tick for hsc2hs
-        type CUnionType VkXYColorEXT = 'False -- ' closing tick for hsc2hs
-        type ReturnedOnly VkXYColorEXT = 'False -- ' closing tick for hsc2hs
-        type StructExtends VkXYColorEXT = '[] -- ' closing tick for hsc2hs
-
-instance {-# OVERLAPPING #-} HasField "x" VkXYColorEXT where
-        type FieldType "x" VkXYColorEXT = #{type float}
-        type FieldOptional "x" VkXYColorEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "x" VkXYColorEXT =
-             #{offset VkXYColorEXT, x}
-        type FieldIsArray "x" VkXYColorEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkXYColorEXT, x}
-
-instance {-# OVERLAPPING #-} CanReadField "x" VkXYColorEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXYColorEXT, x})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkXYColorEXT, x}
-
-instance {-# OVERLAPPING #-} CanWriteField "x" VkXYColorEXT where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkXYColorEXT, x}
-
-instance {-# OVERLAPPING #-} HasField "y" VkXYColorEXT where
-        type FieldType "y" VkXYColorEXT = #{type float}
-        type FieldOptional "y" VkXYColorEXT = 'False -- ' closing tick for hsc2hs
-        type FieldOffset "y" VkXYColorEXT =
-             #{offset VkXYColorEXT, y}
-        type FieldIsArray "y" VkXYColorEXT = 'False -- ' closing tick for hsc2hs
-
-        {-# INLINE fieldOptional #-}
-        fieldOptional = False
-
-        {-# INLINE fieldOffset #-}
-        fieldOffset = #{offset VkXYColorEXT, y}
-
-instance {-# OVERLAPPING #-} CanReadField "y" VkXYColorEXT where
-        {-# NOINLINE getField #-}
-        getField x
-          = unsafeDupablePerformIO
-              (peekByteOff (unsafePtr x) #{offset VkXYColorEXT, y})
-
-        {-# INLINE readField #-}
-        readField p = peekByteOff p #{offset VkXYColorEXT, y}
-
-instance {-# OVERLAPPING #-} CanWriteField "y" VkXYColorEXT where
-        {-# INLINE writeField #-}
-        writeField p = pokeByteOff p #{offset VkXYColorEXT, y}
-
-instance Show VkXYColorEXT where
-        showsPrec d x
-          = showString "VkXYColorEXT {" .
-              showString "x = " .
-                showsPrec d (getField @"x" x) .
-                  showString ", " .
-                    showString "y = " . showsPrec d (getField @"y" x) . showChar '}'
+    type StructRep VkXYColorEXT =
+         'StructMeta "VkXYColorEXT" VkXYColorEXT  -- ' closing tick for hsc2hs
+                                                 #{size VkXYColorEXT}
+           #{alignment VkXYColorEXT}
+           '[('FieldMeta "x" (
+                              #{type float}
+                              ) 'False  -- ' closing tick for hsc2hs
+                                       #{offset VkXYColorEXT, x}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True), -- ' closing tick for hsc2hs
+             ('FieldMeta "y" ( -- ' closing tick for hsc2hs
+                              #{type float}
+                              ) 'False  -- ' closing tick for hsc2hs
+                                       #{offset VkXYColorEXT, y}
+                1
+                'True -- ' closing tick for hsc2hs
+                'True)] -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           'False -- ' closing tick for hsc2hs
+           '[] -- ' closing tick for hsc2hs
diff --git a/src/Graphics/Vulkan/Marshal.hs b/src/Graphics/Vulkan/Marshal.hs
--- a/src/Graphics/Vulkan/Marshal.hs
+++ b/src/Graphics/Vulkan/Marshal.hs
@@ -1,17 +1,14 @@
-{-# OPTIONS_GHC -fno-warn-missing-methods #-}
 {-# LANGUAGE AllowAmbiguousTypes        #-}
 {-# LANGUAGE ConstraintKinds            #-}
 {-# LANGUAGE DataKinds                  #-}
 {-# LANGUAGE DefaultSignatures          #-}
-{-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE FlexibleContexts           #-}
 {-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE KindSignatures             #-}
 {-# LANGUAGE MagicHash                  #-}
 {-# LANGUAGE MultiParamTypeClasses      #-}
 {-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE RankNTypes                 #-}
 {-# LANGUAGE RoleAnnotations            #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
 {-# LANGUAGE Strict                     #-}
@@ -25,16 +22,30 @@
 --   Instead, it is hand-written to provide common types and classes.
 module Graphics.Vulkan.Marshal
   ( FlagType (..), FlagMask, FlagBit
+  , bitToMask, maskToBits
   , VulkanMarshal (..)
+  , newVkData, mallocVkData, mallocVkDataArray, unsafePtr
+  , fromForeignPtr, toForeignPtr, toPlainForeignPtr, touchVkData
   , VulkanPtr (..)
   , VkPtr (..)
+  , pattern VK_ZERO_FLAGS
   , pattern VK_NULL_HANDLE, pattern VK_NULL
   , clearStorable, withPtr
     -- * Type-indexed access to struct members
-  , HasField (..), CanReadField (..), CanWriteField (..)
-  , CanReadFieldArray (..), CanWriteFieldArray (..)
+  , StructFields, CUnionType, ReturnedOnly, StructExtends
+  , StructFieldNames, HasField, FieldRep, FieldType
+  , FieldOptional, FieldOffset
+  , FieldIsArray, FieldArrayLength
+  , CanReadField, CanWriteField
+  , CanReadFieldArray, CanWriteFieldArray
+  , fieldOptional, fieldOffset, fieldArrayLength
+  , getField, readField, writeField
+  , getFieldArrayUnsafe, readFieldArrayUnsafe, writeFieldArrayUnsafe
   , getFieldArray, readFieldArray, writeFieldArray
-  , IsFieldArray, IndexInBounds
+  , IndexInBounds
+    -- * Type-level info about Structs
+  , VulkanStruct (..), VulkanField (..), VulkanFields (..), KnownBool (..)
+  , FieldMeta (..), StructMeta (..)
     -- * Re-exported functions from 'Foreign.ForeignPtr'
   , mallocForeignPtr, withForeignPtr, addForeignPtrFinalizer
     -- * Re-exported common types
@@ -48,26 +59,22 @@
   , cmpCStrings, cmpCStringsN
   ) where
 
-import Data.Data             (Data)
+import Data.Bits             (Bits (..))
+import Data.Coerce
 import Data.Int              (Int16, Int32, Int64, Int8)
-import Data.Kind             (Constraint, Type)
 import Data.Void             (Void)
 import Data.Word             (Word16, Word32, Word64, Word8)
-import Foreign.C.String      (CString, peekCString)
+import Foreign.C.String      (CString)
 import Foreign.C.Types       (CChar (..), CInt (..), CSize (..), CULong (..),
                               CWchar (..))
-import Foreign.ForeignPtr    (ForeignPtr, addForeignPtrFinalizer,
-                              mallocForeignPtr, withForeignPtr)
-import Foreign.Marshal.Array (pokeArray0)
+import Foreign.ForeignPtr    (addForeignPtrFinalizer, mallocForeignPtr,
+                              withForeignPtr)
 import Foreign.Marshal.Utils (fillBytes)
-import Foreign.Ptr           (FunPtr, nullPtr, plusPtr)
-import Foreign.Storable      (Storable (sizeOf))
-import GHC.Exts              (Proxy#, proxy#)
-import GHC.Generics          (Generic)
+import Foreign.Ptr           (FunPtr, nullPtr)
+import Foreign.Storable
 import GHC.Ptr               (Ptr (..))
-import GHC.TypeLits
-import System.IO.Unsafe      (unsafeDupablePerformIO)
 
+
 import Graphics.Vulkan.Marshal.Internal
 
 
@@ -79,133 +86,30 @@
 -- | Vulkan single bit flag value.
 type FlagBit  = 'FlagBit
 
-
--- | All Vulkan structures are stored as-is in byte arrays to avoid any overheads
---   for wrapping and unwrapping haskell values.
---   VulkanMarshal provides an interfaces to write and read these structures
---   in an imperative way.
-class VulkanMarshal a where
-  -- | Names of fields in vulkan structure or union,
-  --   in the same order as they appear in C typedef.
-  type StructFields a :: [Symbol]
-  -- | Whether this type is a C union.
-  --   Otherwise this is a C structure.
-  type CUnionType a   :: Bool
-  -- | Notes that this struct or union is going to be filled in by the API,
-  --   rather than an application filling it out and passing it to the API.
-  type ReturnedOnly a :: Bool
-  -- | Comma-separated list of structures whose "pNext" can include this type.
-  type StructExtends a :: [Type]
-  -- | Allocate a pinned aligned byte array to keep vulkan data structure
-  --   and fill it using a foreign function.
-  --
-  --   Note, the function is supposed to use `newAlignedPinnedByteArray#`
-  --   and does not guarantee to fill memory with zeroes.
-  --   Use `clearStorable` to make sure all bytes are set to zero.
-  --
-  --   Note, the memory is managed by GHC, thus no need for freeing it manually.
-  newVkData :: (Ptr a -> IO ()) -> IO a
-  default newVkData :: (Storable a, a ~ VulkanStruct b)
-                    => (Ptr a -> IO ()) -> IO a
-  newVkData = newVkData#
-  {-# INLINE newVkData #-}
-  -- | Allocate a pinned aligned byte array to keep vulkan data structure.
-  --
-  --   Note, the function is supposed to use `newAlignedPinnedByteArray#`
-  --   and does not guarantee to fill memory with zeroes.
-  --   Use `clearStorable` to make sure all bytes are set to zero.
-  --
-  --   Note, the memory is managed by GHC, thus no need for freeing it manually.
-  mallocVkData :: IO a
-  default mallocVkData :: (Storable a, a ~ VulkanStruct b) => IO a
-  mallocVkData = mallocVkData#
-  {-# INLINE mallocVkData #-}
-  -- | Allocate a pinned aligned byte array to keep vulkan data structures.
-  --   Returned `Ptr a` points to the first element in the contiguous array of
-  --   returned structures. Returned list elements point to the same memory area.
-  --   This function is unsafe in two ways:
-  --
-  --     * Several structures are stored next to each other, with no gaps;
-  --       it would break its alignment if the size is not multiple of alignment.
-  --     * Returned pointer is not tracked by GHC as a reference to the managed
-  --       memory. Thus, the array can be GCed if all references to the returned
-  --       list are lost.
-  --
-  --   Note, the function is supposed to use `newAlignedPinnedByteArray#`
-  --   and does not guarantee to fill memory with zeroes.
-  --   Use `clearStorable` to make sure all bytes are set to zero.
-  --
-  --   Note, the memory is managed by GHC, thus no need for freeing it manually.
-  mallocVkDataArray :: Int -> IO (Ptr a, [a])
-  default mallocVkDataArray :: (Storable a, a ~ VulkanStruct b)
-                            => Int -> IO (Ptr a, [a])
-  mallocVkDataArray = mallocVkDataArray#
-  {-# INLINE mallocVkDataArray #-}
-  -- | Get pointer to vulkan structure.
-  --   Note, the address is only valid as long as a given vulkan structure exists.
-  --   Structures created with newVkData are stored in pinned byte arrays,
-  --   so their memory is maintained by Haskell GC.
-  unsafePtr  :: a -> Ptr a
-  default unsafePtr :: a ~ VulkanStruct b => a -> Ptr a
-  unsafePtr a = Ptr (unsafeAddr a)
-  {-# INLINE unsafePtr #-}
-  -- | Get vulkan structure referenced by a 'ForeignPtr' trying to avoid copying data.
-  --
-  --   This function does copy data if called on an unmanaged `ForeignPtr`
-  --   (i.e. one created from ordinary `Ptr` using something like `newForeignPtr`.).
-  --
-  --   This function does not copy data if called on a managed `ForeignPtr`
-  --   (i.e. one created using `mallocForeignPtr`, or `toForeignPtr`, or `toPlainForeignPtr`).
-  --
-  --   Note, `fromForeignPtr` does not copy finalizers of `ForeignPtr`.
-  --   Thus, if all references to original `ForeignPtr` are lost,
-  --     its attached finalizers may run even if the created structure is alive.
-  fromForeignPtr :: ForeignPtr a -> IO a
-  default fromForeignPtr :: (Storable a, a ~ VulkanStruct b)
-                         => ForeignPtr a-> IO a
-  fromForeignPtr = fromForeignPtr#
-  {-# INLINE fromForeignPtr #-}
-  -- | Create a `ForeignPtr` referencing the structure without copying data.
-  toForeignPtr :: a -> IO (ForeignPtr a)
-  default toForeignPtr :: a ~ VulkanStruct b => a -> IO (ForeignPtr a)
-  toForeignPtr = toForeignPtr#
-  {-# INLINE toForeignPtr #-}
-  -- | Create a `ForeignPtr` referencing the structure without copying data.
-  --   This version of a pointer carries no finalizers.
-  --
-  -- It is not possible to add a finalizer to a ForeignPtr created with
-  -- @toPlainForeignPtr@.
-  -- Attempts to add a finalizer to a ForeignPtr created this way, or to
-  -- finalize such a pointer, will throw an exception.
-  toPlainForeignPtr :: a -> IO (ForeignPtr a)
-  default toPlainForeignPtr :: a ~ VulkanStruct b => a -> IO (ForeignPtr a)
-  toPlainForeignPtr = toPlainForeignPtr#
-  {-# INLINE toPlainForeignPtr #-}
-  -- | Make sure this data is alive at a given point in a sequence of IO actions.
-  touchVkData  :: a -> IO ()
-  default touchVkData :: a ~ VulkanStruct b => a -> IO ()
-  touchVkData = touchVkData#
-  {-# INLINE touchVkData #-}
+-- | A synonym for `zeroBits`
+pattern VK_ZERO_FLAGS :: Bits a => a
+pattern VK_ZERO_FLAGS <- (popCount -> 0)
+  where
+    VK_ZERO_FLAGS = zeroBits
 
--- | Run some operation with a pointer to vulkan structure.
---
---   Should be used with care:
---     the structure pretends to be immutable, so it is better to only read
---     from the pointed memory area, not to write.
---     If an action needs to write something to the pointer, use `newVkData`.
-withPtr :: VulkanMarshal a => a -> (Ptr a -> IO b) -> IO b
-withPtr x k = do
-  b <- k (unsafePtr x)
-  touchVkData x
-  return b
+-- | Convert a single bit (@XxxBits@) to a bitmask (@XxxFlags@)
+bitToMask :: Coercible (x FlagBit) (x FlagMask) => x FlagBit -> x FlagMask
+bitToMask = coerce
 
--- | Fill all bytes to zero getting data size from `Storable` instance.
-clearStorable :: Storable a => Ptr a -> IO ()
-clearStorable p = fillBytes p 0 (sizeOf $ unptr p)
+-- | List all set bits of a bitmask (@XxxFlags@) in the increasing order.
+maskToBits :: (Bits (x FlagMask), Coercible (x FlagBit) (x FlagMask))
+           => x FlagMask -> [x FlagBit]
+maskToBits x = go (popCount x) (bit 0)
   where
-    unptr :: Ptr b -> b
-    unptr ~_ = undefined
+    zero = zeroBits
+    go 0 _ = []
+    go n i = let b = i .&. x
+                 i' = unsafeShiftL i 1
+             in if b == zero
+                then go n i'
+                else coerce b : go (n-1) i'
 
+
 -- | ===== @VK_DEFINE_NON_DISPATCHABLE_HANDLE@
 -- Non-dispatchable handles are represented as `VkPtr`
 --
@@ -222,7 +126,7 @@
 -- >
 --
 newtype VkPtr a = VkPtr Word64
-  deriving (Eq, Ord, Show, Storable, Generic, Data)
+  deriving (Eq, Ord, Show, Storable)
 type role VkPtr phantom
 
 
@@ -258,246 +162,22 @@
 pattern VK_NULL_HANDLE :: (Eq (ptr a), VulkanPtr ptr) => ptr a
 pattern VK_NULL_HANDLE = VK_NULL
 
--- | Describe fields of a vulkan structure or union.
-class HasField (fname :: Symbol) (a :: Type) where
-  -- | Type of a field in a vulkan structure or union.
-  type FieldType fname a     :: Type
-  -- | Whether this field marked optional in vulkan specification.
-  --   Usually, this means that `VK_NULL` can be written in place
-  --   of this field.
-  type FieldOptional fname a :: Bool
-  -- | Offset of a field in bytes.
-  type FieldOffset fname a :: Nat
-  -- | Whether this field is a fixed-length array stored directly in a struct.
-  type FieldIsArray fname a :: Bool
-  -- | Whether this field marked optional in vulkan specification.
-  --   Usually, this means that `VK_NULL` can be written in place
-  --   of this field.
-  fieldOptional :: Bool
-  -- | Offset of a field in bytes.
-  fieldOffset :: Int
 
-class ( HasField fname a
-      , IsFieldArray fname a 'False
-      ) => CanReadField (fname :: Symbol) (a :: Type) where
-  getField :: a -> FieldType fname a
-  readField :: Ptr a -> IO (FieldType fname a)
-
-class CanReadField fname a => CanWriteField (fname :: Symbol) (a :: Type) where
-  writeField :: Ptr a -> FieldType fname a -> IO ()
-
-class ( HasField fname a
-      , IsFieldArray fname a 'True
-      , KnownNat (FieldArrayLength fname a)
-      ) => CanReadFieldArray (fname :: Symbol) (a :: Type) where
-  -- | Length of an array that is a field of a structure or union
-  type FieldArrayLength fname a :: Nat
-  -- | Length of an array that is a field of a structure or union
-  fieldArrayLength :: Int
-  -- | Index an array-type field. No bound checks.
-  getFieldArrayUnsafe :: Int -> a -> FieldType fname a
-  -- | Read from an array-type field. No bound checks.
-  readFieldArrayUnsafe :: Int -> Ptr a -> IO (FieldType fname a)
-
-getFieldArray :: forall fname idx a
-               . (CanReadFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)
-              => a -> FieldType fname a
-getFieldArray = getFieldArrayUnsafe @fname @a
-  (fromInteger $ natVal' (proxy# :: Proxy# idx))
-{-# INLINE getFieldArray #-}
-
-readFieldArray :: forall fname idx a
-                . (CanReadFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)
-               => Ptr a -> IO (FieldType fname a)
-readFieldArray = readFieldArrayUnsafe @fname @a
-  (fromInteger $ natVal' (proxy# :: Proxy# idx))
-{-# INLINE readFieldArray #-}
-
-class CanReadFieldArray fname a
-      => CanWriteFieldArray (fname :: Symbol) (a :: Type) where
-  -- | Write to an array-type field. No bound checks.
-  writeFieldArrayUnsafe :: Int -> Ptr a -> FieldType fname a -> IO ()
-
-writeFieldArray :: forall fname idx a
-                 . (CanWriteFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)
-                => Ptr a -> FieldType fname a -> IO ()
-writeFieldArray = writeFieldArrayUnsafe @fname @a
-  (fromInteger $ natVal' (proxy# :: Proxy# idx))
-{-# INLINE writeFieldArray #-}
-
-instance {-# OVERLAPPABLE #-}
-         TypeError (ErrorNoSuchField fname a) => HasField fname a where
-
-instance {-# OVERLAPPABLE #-}
-         ( HasField fname a
-         , IsFieldArray fname a 'False
-         , TypeError (ErrorNotReadableField fname a)
-         ) => CanReadField fname a where
-instance {-# OVERLAPPABLE #-}
-         ( CanReadField fname a
-         , TypeError (ErrorNotWritableField fname a)
-         ) => CanWriteField fname a where
-instance {-# OVERLAPPABLE #-}
-         ( HasField fname a
-         , IsFieldArray fname a 'True
-         , TypeError (ErrorNotReadableField fname a)
-         , KnownNat (FieldArrayLength fname a)
-         ) => CanReadFieldArray fname a where
-instance {-# OVERLAPPABLE #-}
-         ( CanReadFieldArray fname a
-         , TypeError (ErrorNotWritableField fname a)
-         ) => CanWriteFieldArray fname a where
-
-
-type IndexInBounds (s :: Symbol) (i :: Nat) (a :: Type)
-  = IndexInBounds' s i a (CmpNat i (FieldArrayLength s a))
-
-type family IndexInBounds' (s :: Symbol)
-                           (i :: Nat)
-                           (a :: Type) (r :: Ordering) :: Constraint where
-  IndexInBounds' _ _ _ 'LT = ()
-  IndexInBounds' s i a _ = TypeError ( ErrorIndexOutOfBounds s i a )
-
-
-type IsFieldArray s a e = IsFieldArray' s a (FieldIsArray s a) e
-
-type family IsFieldArray' (s :: Symbol)
-                          (a :: Type)
-                          (actual :: Bool)
-                          (expected :: Bool) :: Constraint where
-  IsFieldArray' _ _ 'True  'True  = ()
-  IsFieldArray' _ _ 'False 'False = ()
-  IsFieldArray' s a 'True  'False = TypeError (ErrorIsArrayField s a)
-  IsFieldArray' s a 'False 'True  = TypeError (ErrorIsNotArrayField s a)
-
-
---------------------------------------------------------------------------------
--- * Type-level errors
---------------------------------------------------------------------------------
-
-
-type ErrorNoSuchField (s :: Symbol) (a :: Type)
-  = 'Text "Structure " ':<>: 'ShowType a
-  ':<>: 'Text " does not have field " ':<>: 'ShowType s ':<>: 'Text "."
-  ':$$: 'Text "Note, this structure has following fields: "
-        ':<>: 'ShowType (StructFields a)
-
-
-type ErrorIsNotArrayField (s :: Symbol) (a :: Type)
-  = 'Text "Field " ':<>: 'ShowType s ':<>:
-    'Text " of structure " ':<>: 'ShowType a ':<>:
-    'Text " is not an array field."
-  ':$$: 'Text "Don't use ***FieldArray functions on it."
-
-type ErrorIsArrayField (s :: Symbol) (a :: Type)
-  = 'Text "Field " ':<>: 'ShowType s ':<>:
-    'Text " of structure " ':<>: 'ShowType a ':<>:
-    'Text " is an array field."
-  ':$$: 'Text "Use ***FieldArray functions on it."
-
-type ErrorIndexOutOfBounds (s :: Symbol) (i :: Nat) (a :: Type)
-  = 'Text "Array index " ':<>: 'ShowType i ':<>:
-    'Text " is out of bounds for '" ':<>:
-    'Text s ':<>: 'Text "',  member of type " ':<>: 'ShowType a ':<>: 'Text "."
-  ':$$:
-    'Text "Note: the array size is "
-      ':<>: 'ShowType (FieldArrayLength s a) ':<>: 'Text "."
-
-type ErrorNotReadableField (s :: Symbol) (a :: Type)
-  = 'Text "Field " ':<>: 'ShowType s ':<>:
-    'Text " of structure " ':<>: 'ShowType a ':<>:
-    'Text " is not readable."
-
-type ErrorNotWritableField (s :: Symbol) (a :: Type)
-  = 'Text "Field " ':<>: 'ShowType s ':<>:
-    'Text " of structure " ':<>: 'ShowType a ':<>:
-    'Text " is not writable."
-
-
---------------------------------------------------------------------------------
--- * Utilities for CString
---------------------------------------------------------------------------------
-
--- | Perform an action on a C string field.
---   The string pointers should not be used outside the callback.
---   It will point to a correct location only as long as the struct is alive.
-withCStringField :: forall fname a b
-                 . ( CanReadFieldArray fname a
-                   , FieldType fname a ~ CChar
-                   , VulkanMarshal a
-                   )
-                 => a -> (CString -> IO b) -> IO b
-withCStringField x f = do
-  r <- f (unsafeCStringField @fname @a x)
+-- | Run some operation with a pointer to vulkan structure.
+--
+--   Should be used with care:
+--     the structure pretends to be immutable, so it is better to only read
+--     from the pointed memory area, not to write.
+--     If an action needs to write something to the pointer, use `newVkData`.
+withPtr :: VulkanMarshal a => a -> (Ptr a -> IO b) -> IO b
+withPtr x k = do
+  b <- k (unsafePtr x)
   touchVkData x
-  pure r
-
--- | Get pointer to a memory location of the C string field in a structure.
-unsafeCStringField :: forall fname a
-                   . ( CanReadFieldArray fname a
-                     , FieldType fname a ~ CChar
-                     , VulkanMarshal a
-                     )
-                   => a -> CString
-unsafeCStringField x = unsafePtr x `plusPtr` fieldOffset @fname @a
-
-
-getStringField :: forall fname a
-                . ( CanReadFieldArray fname a
-                  , FieldType fname a ~ CChar
-                  , VulkanMarshal a
-                  )
-               => a -> String
-getStringField x
-    = case takeForce (fieldArrayLength @fname @a)
-         . unsafeDupablePerformIO
-         $ withCStringField @fname @a x peekCString of
-        ((), s) -> s
-
-readStringField :: forall fname a
-                . ( CanReadFieldArray fname a
-                  , FieldType fname a ~ CChar
-                  , VulkanMarshal a
-                  )
-               => Ptr a -> IO String
-readStringField px = do
-  ((), s) <- takeForce (fieldArrayLength @fname @a)
-         <$> peekCString (px `plusPtr` fieldOffset @fname @a)
-  return s
-
-writeStringField :: forall fname a
-                  . ( CanWriteFieldArray fname a
-                    , FieldType fname a ~ CChar
-                    , VulkanMarshal a
-                    )
-               => Ptr a -> String -> IO ()
-writeStringField px =
-  pokeArray0 '\0' (px `plusPtr` fieldOffset @fname @a)
-
-takeForce :: Int -> String -> ((), String)
-takeForce 0 _      = ((), [])
-takeForce _ []     = ((), [])
-takeForce n (x:xs) = seq x $ (x:) <$> takeForce (n-1) xs
-
-
--- | Check first if two CString point to the same memory location.
---   Otherwise, compare them using C @strcmp@ function.
-cmpCStrings :: CString -> CString -> Ordering
-cmpCStrings a b
-  | a == b = EQ
-  | otherwise = c_strcmp a b `compare` 0
-
--- | Check first if two CString point to the same memory location.
---   Otherwise, compare them using C @strncmp@ function.
---   It may be useful to provide maximum number of characters to compare.
-cmpCStringsN :: CString -> CString -> Int -> Ordering
-cmpCStringsN a b n
-  | a == b = EQ
-  | otherwise = c_strncmp a b (fromIntegral n) `compare` 0
-
-
-foreign import ccall unsafe "strncmp"
-  c_strncmp :: CString -> CString -> CSize -> CInt
+  return b
 
-foreign import ccall unsafe "strcmp"
-  c_strcmp :: CString -> CString -> CInt
+-- | Fill all bytes to zero getting data size from `Storable` instance.
+clearStorable :: Storable a => Ptr a -> IO ()
+clearStorable p = fillBytes p 0 (sizeOf $ unptr p)
+  where
+    unptr :: Ptr b -> b
+    unptr ~_ = undefined
diff --git a/src/Graphics/Vulkan/Marshal/Create.hs b/src/Graphics/Vulkan/Marshal/Create.hs
--- a/src/Graphics/Vulkan/Marshal/Create.hs
+++ b/src/Graphics/Vulkan/Marshal/Create.hs
@@ -102,10 +102,9 @@
 --     with a set of haskell and C finalizers.
 --   These finalizers make sure all `malloc`ed memory is released and
 --    no managed memory gets purged too early.
-createVk :: forall a fs b .
+createVk :: forall a fs .
             ( VulkanMarshal a
             , HandleRemFields a fs
-            , a ~ VulkanStruct b
             ) => CreateVkStruct a fs () -> a
 createVk a = unsafeDupablePerformIO $ do
     x <- mallocVkData
@@ -132,9 +131,7 @@
 {-# NOINLINE createVk #-}
 
 -- | `writeField` wrapped into `CreateVkStruct` monad.
-set :: forall fname x
-     . ( CanWriteField fname x
-       )
+set :: forall fname x . CanWriteField fname x
     => FieldType fname x -> CreateVkStruct x '[fname] ()
 set v = CreateVkStruct $ \p -> (,) ([],[]) <$> writeField @fname @x p v
 
@@ -307,7 +304,7 @@
 type SetUnionMsg x =
    'Text "You have to set exactly one field for a union type " ':<>: 'ShowType x
    ':$$: 'Text "Note, this type has following fields: "
-         ':<>: 'ShowType (StructFields x)
+         ':<>: 'ShowType (StructFieldNames x)
 
 instance ( TypeError ( SetUnionMsg x )
          , CUnionType x ~ 'True
@@ -323,11 +320,11 @@
   handleRemFields = pure ()
 
 
-instance ( SetOptionalFields x (Difference (StructFields x) fs)
+instance ( SetOptionalFields x (Difference (StructFieldNames x) fs)
          , CUnionType x ~ 'False
          ) => HandleRemainingFields x fs 'False where
   handleRemFields
-    = ( coerce :: CreateVkStruct x (Difference (StructFields x) fs) ()
+    = ( coerce :: CreateVkStruct x (Difference (StructFieldNames x) fs) ()
                -> CreateVkStruct x fs ()
       ) setOptionalFields
 
diff --git a/src/Graphics/Vulkan/Marshal/Internal.hs b/src/Graphics/Vulkan/Marshal/Internal.hs
--- a/src/Graphics/Vulkan/Marshal/Internal.hs
+++ b/src/Graphics/Vulkan/Marshal/Internal.hs
@@ -1,10 +1,25 @@
-{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE FlexibleContexts          #-}
-{-# LANGUAGE MagicHash                 #-}
-{-# LANGUAGE ScopedTypeVariables       #-}
-{-# LANGUAGE Strict                    #-}
-{-# LANGUAGE UnboxedTuples             #-}
-{-# LANGUAGE UnliftedFFITypes          #-}
+{-# LANGUAGE AllowAmbiguousTypes        #-}
+{-# LANGUAGE ConstraintKinds            #-}
+{-# LANGUAGE DataKinds                  #-}
+{-# LANGUAGE DefaultSignatures          #-}
+{-# LANGUAGE ExistentialQuantification  #-}
+{-# LANGUAGE FlexibleContexts           #-}
+{-# LANGUAGE FlexibleInstances          #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE MagicHash                  #-}
+{-# LANGUAGE MultiParamTypeClasses      #-}
+{-# LANGUAGE PatternSynonyms            #-}
+{-# LANGUAGE RankNTypes                 #-}
+{-# LANGUAGE RoleAnnotations            #-}
+{-# LANGUAGE ScopedTypeVariables        #-}
+{-# LANGUAGE Strict                     #-}
+{-# LANGUAGE TypeApplications           #-}
+{-# LANGUAGE TypeFamilies               #-}
+{-# LANGUAGE TypeOperators              #-}
+{-# LANGUAGE UnboxedTuples              #-}
+{-# LANGUAGE UndecidableInstances       #-}
+{-# LANGUAGE UndecidableSuperClasses    #-}
+{-# LANGUAGE UnliftedFFITypes           #-}
 -- | This module is not part of auto-generated code based on vk.xml.
 --   Instead, it is hand-written to provide common types and classes.
 --
@@ -12,34 +27,58 @@
 --   This is an internal module; it can change a lot between package versions;
 --   it provides low-level functions, most of which have user-friendly analogues.
 module Graphics.Vulkan.Marshal.Internal
-  ( VulkanStruct (..), unsafeFromByteArrayOffset
-  , fromForeignPtr#
-  , toForeignPtr#, toPlainForeignPtr#
-  , touchVkData#
-  , cmpBytes#
-  , newVkData#
-  , mallocVkData#, mallocVkDataArray#
-  , peekVkData#, pokeVkData#
+  ( VkStruct (..), unsafeFromByteArrayOffset
+  , VulkanMarshal (..)
+  , newVkData, mallocVkData, mallocVkDataArray, unsafePtr
+  , fromForeignPtr, toForeignPtr, toPlainForeignPtr, touchVkData
+    -- * Type-indexed access to struct members
+  , StructFields, CUnionType, ReturnedOnly, StructExtends
+  , StructFieldNames, HasField, FieldRep, FieldType
+  , FieldOptional, FieldOffset
+  , FieldIsArray, FieldArrayLength
+  , CanReadField, CanWriteField
+  , CanReadFieldArray, CanWriteFieldArray
+  , fieldOptional, fieldOffset, fieldArrayLength
+  , getField, readField, writeField
+  , getFieldArrayUnsafe, readFieldArrayUnsafe, writeFieldArrayUnsafe
+  , getFieldArray, readFieldArray, writeFieldArray
+  , IndexInBounds
+    -- * Type-level info about Structs
+  , VulkanStruct (..), VulkanField (..), VulkanFields (..), KnownBool (..)
+  , FieldMeta (..), StructMeta (..)
+    -- * Utilities for string types
+  , withCStringField, unsafeCStringField
+  , getStringField, readStringField, writeStringField
+  , cmpCStrings, cmpCStringsN
   ) where
 
-import Foreign.C.Types    (CInt (..), CSize (..))
-import Foreign.ForeignPtr (ForeignPtr, newForeignPtr_)
-import Foreign.Storable   (Storable (..))
-import GHC.Base           (Addr#, ByteArray#, IO (..), Int (..), Int#,
-                           byteArrayContents#, copyAddrToByteArray#, eqAddr#,
-                           isTrue#, minusAddr#, newAlignedPinnedByteArray#,
-                           plusAddr#, touch#, unsafeCoerce#,
-                           unsafeFreezeByteArray#, (*#), (+#), (>=#))
-import GHC.Ptr            (Ptr (..))
 
-import GHC.ForeignPtr (ForeignPtr (..), ForeignPtrContents (..))
+import Data.Kind             (Constraint, Type)
+import Data.Type.Equality
+import Foreign.C.String      (CString, peekCString)
+import Foreign.C.Types       (CChar, CInt (..), CSize (..))
+import Foreign.ForeignPtr    (ForeignPtr, newForeignPtr_)
+import Foreign.Marshal.Array (pokeArray0)
+import Foreign.Ptr           (plusPtr)
+import Foreign.Storable
+import GHC.Base              (Addr#, ByteArray#, IO (..), Int (..), Int#,
+                              byteArrayContents#, copyAddrToByteArray#, eqAddr#,
+                              isTrue#, minusAddr#, newAlignedPinnedByteArray#,
+                              plusAddr#, touch#, unsafeCoerce#,
+                              unsafeFreezeByteArray#, (*#), (+#), (>=#))
+import GHC.Exts              (Proxy#, proxy#)
+import GHC.ForeignPtr        (ForeignPtr (..), ForeignPtrContents (..))
+import GHC.Ptr               (Ptr (..))
+import GHC.TypeLits
+import System.IO.Unsafe      (unsafeDupablePerformIO)
+import Unsafe.Coerce         (unsafeCoerce)
 
 
 
 {- | Internal representation of all Vulkan structures:
      a pinned byte array and an address pointing to an area in this array.
  -}
-data VulkanStruct a = VulkanStruct
+data VkStruct a = VkStruct
   { unsafeAddr      :: Addr#
     -- ^ Get address of vulkan structure.
     --   Note, the address is only valid as long as a given vulkan structure exists.
@@ -51,77 +90,189 @@
     --   Note, the data structure does not necessarily starts at zero offset.
   }
 
+-- | Get the type parameter of a `VkStruct`.
+type family VkStruct' (a :: Type) :: Type where
+    VkStruct' (VkStruct a) = a
 
+-- | This type must be a `VkStruct`.
+type IsVkStruct a = a ~ VkStruct (VkStruct' a)
+
 -- | Combine a vulkan structure from ByteArray and an offset in this array.
-unsafeFromByteArrayOffset :: Int# -> ByteArray# -> VulkanStruct a
+unsafeFromByteArrayOffset :: Int# -> ByteArray# -> VkStruct a
 unsafeFromByteArrayOffset off b
-  = VulkanStruct (plusAddr# (byteArrayContents# b) off) b
+  = VkStruct (plusAddr# (byteArrayContents# b) off) b
 {-# INLINE unsafeFromByteArrayOffset #-}
 
 
 
+{- |
+@FieldMeta fieldName fieldType optional byteOffset length canRead canWrite@
+represents a Vulkan structure field at the type level.
+ -}
+data FieldMeta
+  = FieldMeta Symbol Type Bool Nat Nat Bool Bool
 
--- | Create a `ByteArray#`-based type from `ForeignPtr`.
---   Try to not copy data, but do it if necessary.
-fromForeignPtr# :: forall a . Storable (VulkanStruct a)
-                => ForeignPtr (VulkanStruct a) -> IO (VulkanStruct a)
-fromForeignPtr# (ForeignPtr addr PlainForeignPtr{})
-  | I# n <- sizeOf (undefined :: (VulkanStruct a))
-  , I# a <- alignment (undefined :: (VulkanStruct a))
-  = IO
-  (\s0 -> case newAlignedPinnedByteArray# n a s0 of
-    (# s1, mba #) -> case copyAddrToByteArray# addr mba 0# n s1 of
-      s2 -> case unsafeFreezeByteArray# mba s2 of
-        (# s3, ba #) -> (# s3, unsafeFromByteArrayOffset 0# ba  #)
-  )
-fromForeignPtr# (ForeignPtr addr (MallocPtr mba _))
-  = IO
-  (\s0 -> case unsafeFreezeByteArray# mba s0 of
-    (# s1, ba #) -> (# s1, unsafeFromByteArrayOffset
-                           (minusAddr# addr (byteArrayContents# ba)) ba  #)
-  )
-fromForeignPtr# (ForeignPtr addr (PlainPtr mba))
-  = IO
-  (\s0 -> case unsafeFreezeByteArray# mba s0 of
-    (# s1, ba #) -> (# s1, unsafeFromByteArrayOffset
-                           (minusAddr# addr (byteArrayContents# ba)) ba  #)
-  )
-{-# INLINE fromForeignPtr# #-}
+{- |
+@StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends@
+represents a Vulkan structure at the type level.
+ -}
+data StructMeta
+  = StructMeta Symbol Type Nat Nat [FieldMeta] Bool Bool [Type]
 
+-- | This class give a term-level boolean associated with a type-level boolean.
+--
+--   The same as `KnownNat` for integers.
+class KnownBool (b :: Bool) where
+    boolSing :: Bool
 
--- | Create a `ForeignPtr` referencing the structure without copying data.
-toForeignPtr# :: VulkanStruct a -> IO (ForeignPtr (VulkanStruct a))
-toForeignPtr# x
-  | a <- unsafeAddr x
-  , b <- unsafeByteArray x = do
-    ForeignPtr _ (PlainForeignPtr r)
-      <- newForeignPtr_ (Ptr a)
-    IO (\s -> (# s, ForeignPtr a (MallocPtr (unsafeCoerce# b) r) #))
-{-# INLINE toForeignPtr# #-}
+instance KnownBool 'True  where boolSing = True
+instance KnownBool 'False where boolSing = False
 
--- | Create a `ForeignPtr` referencing the structure without copying data.
---   This version of a pointer carries no finalizers.
---
--- It is not possible to add a finalizer to a ForeignPtr created with
--- @toPlainForeignPtr@.
--- Attempts to add a finalizer to a ForeignPtr created this way, or to
--- finalize such a pointer, will throw an exception.
-toPlainForeignPtr# :: VulkanStruct a -> IO (ForeignPtr (VulkanStruct a))
-toPlainForeignPtr# (VulkanStruct a b) = IO
-    (\s -> (# s, ForeignPtr a (PlainPtr (unsafeCoerce# b)) #))
-{-# INLINE toPlainForeignPtr# #-}
+class (Show (FType m), Storable (FType m))
+     => VulkanField (m :: FieldMeta) where
+    type FName m       :: Symbol
+    type FType m       :: Type
+    type FOptional m   :: Bool
+    type FByteOffset m :: Nat
+    type FLength m     :: Nat
+    type FCanRead m    :: Bool
+    type FCanWrite m   :: Bool
+    fName :: String
+    fOptional :: Bool
+    fByteOffset :: Int
+    fLength :: Int
+    fCanRead :: Bool
+    fCanWrite :: Bool
 
--- | Make sure the region of memory is not collected at this moment in time.
-touchVkData# :: VulkanStruct a -> IO ()
-touchVkData# (VulkanStruct _ b) = IO (\s -> (# touch# b s, () #))
-{-# INLINE touchVkData# #-}
+instance ( KnownSymbol fieldName
+         , Show t, Storable t
+         , KnownBool   optional
+         , KnownNat    byteOffset
+         , KnownNat    length
+         , KnownBool   canRead
+         , KnownBool   canWrite
+         ) => VulkanField ('FieldMeta fieldName t optional byteOffset length canRead canWrite) where
+    type FName       ('FieldMeta fieldName t optional byteOffset length canRead canWrite) = fieldName
+    type FType       ('FieldMeta fieldName t optional byteOffset length canRead canWrite) = t
+    type FOptional   ('FieldMeta fieldName t optional byteOffset length canRead canWrite) = optional
+    type FByteOffset ('FieldMeta fieldName t optional byteOffset length canRead canWrite) = byteOffset
+    type FLength     ('FieldMeta fieldName t optional byteOffset length canRead canWrite) = length
+    type FCanRead    ('FieldMeta fieldName t optional byteOffset length canRead canWrite) = canRead
+    type FCanWrite   ('FieldMeta fieldName t optional byteOffset length canRead canWrite) = canWrite
+    fName       = symbolVal' @fieldName proxy#
+    fOptional   = boolSing   @optional
+    fByteOffset = fromInteger $ natVal' @byteOffset proxy#
+    fLength     = fromInteger $ natVal' @length proxy#
+    fCanRead    = boolSing   @canRead
+    fCanWrite   = boolSing   @canWrite
 
+type family GetFieldMeta (errMsg :: ErrorMessage) (fname :: Symbol) (ms :: [FieldMeta]) :: FieldMeta where
+    GetFieldMeta _ n ('FieldMeta n t o b l r w ': _) = 'FieldMeta n t o b l r w
+    GetFieldMeta e n (_ ': ms) = GetFieldMeta e n ms
+    GetFieldMeta e n '[] = TypeError e
 
-newVkData# :: forall a . Storable (VulkanStruct a)
-           => (Ptr (VulkanStruct a) -> IO ()) -> IO (VulkanStruct a)
-newVkData# f
-  | I# n <- sizeOf (undefined :: (VulkanStruct a))
-  , I# a <- alignment (undefined :: (VulkanStruct a))
+class VulkanFields (ms :: [FieldMeta]) where
+    withField :: forall (fname :: Symbol) (r :: Type) (errMsg :: ErrorMessage)
+               . KnownSymbol fname
+              => Proxy# fname
+              -> Proxy# errMsg
+              -> (VulkanField (GetFieldMeta errMsg fname ms) => r) -> r
+    enumerateFields :: forall  (a :: Type)
+                     . (forall (m :: FieldMeta) . VulkanField m
+                             => Proxy# m -> a -> a)
+                    -> a -> a
+
+instance VulkanFields '[] where
+    withField = error "VulkanFields.withField: unreachable code (no such field guarded by type family)."
+    enumerateFields _ = id
+
+instance (VulkanField m, VulkanFields ms) => VulkanFields (m ': ms) where
+    withField pName pErr f
+      | symbolVal' pName == fName @m
+      , Refl <- proofm  pName pErr = f
+      | Refl <- proofms pName pErr = withField @ms pName pErr f
+      where
+        proofm :: Proxy# fname -> Proxy# errMsg
+              -> (m :~: GetFieldMeta errMsg fname (m : ms))
+        proofm _ = unsafeCoerce Refl
+        proofms :: Proxy# fname -> Proxy# errMsg
+                -> (GetFieldMeta errMsg fname ms :~: GetFieldMeta errMsg fname (m : ms))
+        proofms _ = unsafeCoerce Refl
+    enumerateFields k = k (proxy# @_ @m) . enumerateFields @ms k
+
+
+class VulkanFields (SFields m)
+   => VulkanStruct (m :: StructMeta) where
+    type SName m           :: Symbol
+    type SType m           :: Type
+    type SSize m           :: Nat
+    type SAlign m          :: Nat
+    type SFields m         :: [FieldMeta]
+    type SIsUnion m        :: Bool
+    type SIsReturnedOnly m :: Bool
+    type SStructExtends m  :: [Type]
+    sName           :: String
+    sSize           :: Int
+    sAlign          :: Int
+    sIsUnion        :: Bool
+    sIsReturnedOnly :: Bool
+
+instance ( KnownSymbol structName
+         , KnownNat size
+         , KnownNat alignment
+         , VulkanFields fields
+         , KnownBool isUnion
+         , KnownBool isReturnedOnly
+         )
+      => VulkanStruct
+          ('StructMeta structName structType size alignment
+                         fields isUnion isReturnedOnly structExtends) where
+    type SName           ('StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends) = structName
+    type SType           ('StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends) = structType
+    type SSize           ('StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends) = size
+    type SAlign          ('StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends) = alignment
+    type SFields         ('StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends) = fields
+    type SIsUnion        ('StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends) = isUnion
+    type SIsReturnedOnly ('StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends) = isReturnedOnly
+    type SStructExtends  ('StructMeta structName structType size alignment fields isUnion isReturnedOnly structExtends) = structExtends
+    sName           = symbolVal' @structName proxy#
+    sSize           = fromInteger $ natVal' @size proxy#
+    sAlign          = fromInteger $ natVal' @alignment proxy#
+    sIsUnion        = boolSing @isUnion
+    sIsReturnedOnly = boolSing @isReturnedOnly
+
+
+-- | Descriptions of all fields of a vulkan struct
+type StructFields a = SFields (StructRep a)
+-- | Whether this type is a C union.
+--   Otherwise this is a C structure.
+type CUnionType a = SIsUnion (StructRep a)
+-- | Notes that this struct or union is going to be filled in by the API,
+--   rather than an application filling it out and passing it to the API.
+type ReturnedOnly a = SIsReturnedOnly (StructRep a)
+-- | Comma-separated list of structures whose "pNext" can include this type.
+type StructExtends a = SStructExtends (StructRep a)
+
+-- | All Vulkan structures are stored as-is in byte arrays to avoid any overheads
+--   for wrapping and unwrapping haskell values.
+--   VulkanMarshal provides an interfaces to write and read these structures
+--   in an imperative way.
+class (VulkanStruct (StructRep a), IsVkStruct a)
+     => VulkanMarshal a where
+    type StructRep a :: StructMeta
+
+-- | Allocate a pinned aligned byte array to keep vulkan data structure
+--   and fill it using a foreign function.
+--
+--   Note, the function is supposed to use `newAlignedPinnedByteArray#`
+--   and does not guarantee to fill memory with zeroes.
+--   Use `clearStorable` to make sure all bytes are set to zero.
+--
+--   Note, the memory is managed by GHC, thus no need for freeing it manually.
+newVkData :: forall a . VulkanMarshal a => (Ptr a -> IO ()) -> IO a
+newVkData f
+  | I# n <- sSize @(StructRep a)
+  , I# a <- sAlign @(StructRep a)
   = IO
   (\s0 -> case newAlignedPinnedByteArray# n a s0 of
     (# s1, mba #) -> case unsafeFreezeByteArray# mba s1 of
@@ -129,24 +280,46 @@
         IO k -> case k s2 of
           (# s3, () #) -> (# s3, unsafeFromByteArrayOffset 0# ba #)
   )
-{-# INLINE newVkData# #-}
+{-# INLINE newVkData #-}
 
-mallocVkData# :: forall a . Storable (VulkanStruct a) => IO (VulkanStruct a)
-mallocVkData#
-  | I# n <- sizeOf (undefined :: (VulkanStruct a))
-  , I# a <- alignment (undefined :: (VulkanStruct a))
+-- | Allocate a pinned aligned byte array to keep vulkan data structure.
+--
+--   Note, the function is supposed to use `newAlignedPinnedByteArray#`
+--   and does not guarantee to fill memory with zeroes.
+--   Use `clearStorable` to make sure all bytes are set to zero.
+--
+--   Note, the memory is managed by GHC, thus no need for freeing it manually.
+mallocVkData :: forall a . VulkanMarshal a => IO a
+mallocVkData
+  | I# n <- sSize @(StructRep a)
+  , I# a <- sAlign @(StructRep a)
   = IO
   (\s0 -> case newAlignedPinnedByteArray# n a s0 of
     (# s1, mba #) -> case unsafeFreezeByteArray# mba s1 of
       (# s2, ba #) -> (# s2, unsafeFromByteArrayOffset 0# ba #)
   )
-{-# INLINE mallocVkData# #-}
+{-# INLINE mallocVkData #-}
 
-mallocVkDataArray# :: forall a . Storable (VulkanStruct a)
-                   => Int -> IO (Ptr (VulkanStruct a), [(VulkanStruct a)])
-mallocVkDataArray# (I# m)
-  | I# n <- sizeOf (undefined :: (VulkanStruct a))
-  , I# a <- alignment (undefined :: (VulkanStruct a))
+-- | Allocate a pinned aligned byte array to keep vulkan data structures.
+--   Returned `Ptr a` points to the first element in the contiguous array of
+--   returned structures. Returned list elements point to the same memory area.
+--   This function is unsafe in two ways:
+--
+--     * Several structures are stored next to each other, with no gaps;
+--       it would break its alignment if the size is not multiple of alignment.
+--     * Returned pointer is not tracked by GHC as a reference to the managed
+--       memory. Thus, the array can be GCed if all references to the returned
+--       list are lost.
+--
+--   Note, the function is supposed to use `newAlignedPinnedByteArray#`
+--   and does not guarantee to fill memory with zeroes.
+--   Use `clearStorable` to make sure all bytes are set to zero.
+--
+--   Note, the memory is managed by GHC, thus no need for freeing it manually.
+mallocVkDataArray :: forall a . VulkanMarshal a => Int -> IO (Ptr a, [a])
+mallocVkDataArray (I# m)
+  | I# n <- sSize @(StructRep a)
+  , I# a <- sAlign @(StructRep a)
   , nm <- n *# m
   = IO
   (\s0 -> case newAlignedPinnedByteArray# nm a s0 of
@@ -161,28 +334,425 @@
           )
         #)
   )
-{-# INLINE mallocVkDataArray# #-}
+{-# INLINE mallocVkDataArray #-}
 
+-- | Get pointer to vulkan structure.
+--   Note, the address is only valid as long as a given vulkan structure exists.
+--   Structures created with newVkData are stored in pinned byte arrays,
+--   so their memory is maintained by Haskell GC.
+unsafePtr  :: IsVkStruct a => a -> Ptr a
+unsafePtr a = Ptr (unsafeAddr a)
+{-# INLINE unsafePtr #-}
 
-peekVkData# :: forall a . (Storable (VulkanStruct a))
-            => Ptr (VulkanStruct a) -> IO (VulkanStruct a)
-peekVkData# (Ptr addr)
-  | I# n <- sizeOf (undefined :: (VulkanStruct a))
-  , I# a <- alignment (undefined :: (VulkanStruct a))
+-- | Get vulkan structure referenced by a 'ForeignPtr' trying to avoid copying data.
+--
+--   This function does copy data if called on an unmanaged `ForeignPtr`
+--   (i.e. one created from ordinary `Ptr` using something like `newForeignPtr`.).
+--
+--   This function does not copy data if called on a managed `ForeignPtr`
+--   (i.e. one created using `mallocForeignPtr`, or `toForeignPtr`, or `toPlainForeignPtr`).
+--
+--   Note, `fromForeignPtr` does not copy finalizers of `ForeignPtr`.
+--   Thus, if all references to original `ForeignPtr` are lost,
+--     its attached finalizers may run even if the created structure is alive.
+fromForeignPtr :: forall a . VulkanMarshal a => ForeignPtr a -> IO a
+fromForeignPtr (ForeignPtr addr PlainForeignPtr{})
+  | I# n <- sSize @(StructRep a)
+  , I# a <- sAlign @(StructRep a)
   = IO
-  (\s -> case newAlignedPinnedByteArray# n a s of
+  (\s0 -> case newAlignedPinnedByteArray# n a s0 of
     (# s1, mba #) -> case copyAddrToByteArray# addr mba 0# n s1 of
       s2 -> case unsafeFreezeByteArray# mba s2 of
-        (# s3, ba #) -> (# s3, unsafeFromByteArrayOffset 0# ba #)
+        (# s3, ba #) -> (# s3, unsafeFromByteArrayOffset 0# ba  #)
   )
-{-# INLINE peekVkData# #-}
+fromForeignPtr (ForeignPtr addr (MallocPtr mba _))
+  = IO
+  (\s0 -> case unsafeFreezeByteArray# mba s0 of
+    (# s1, ba #) -> (# s1, unsafeFromByteArrayOffset
+                           (minusAddr# addr (byteArrayContents# ba)) ba  #)
+  )
+fromForeignPtr (ForeignPtr addr (PlainPtr mba))
+  = IO
+  (\s0 -> case unsafeFreezeByteArray# mba s0 of
+    (# s1, ba #) -> (# s1, unsafeFromByteArrayOffset
+                           (minusAddr# addr (byteArrayContents# ba)) ba  #)
+  )
+{-# INLINE fromForeignPtr #-}
 
-pokeVkData# :: forall a . Storable (VulkanStruct a)
-            => Ptr (VulkanStruct a) -> (VulkanStruct a) -> IO ()
-pokeVkData# (Ptr addr) x
-  = c_memcpy addr (unsafeAddr x) (fromIntegral $ sizeOf x)
-{-# INLINE pokeVkData# #-}
 
+-- | Create a `ForeignPtr` referencing the structure without copying data.
+toForeignPtr :: IsVkStruct a => a -> IO (ForeignPtr a)
+toForeignPtr x
+  | a <- unsafeAddr x
+  , b <- unsafeByteArray x = do
+    ForeignPtr _ (PlainForeignPtr r)
+      <- newForeignPtr_ (Ptr a)
+    IO (\s -> (# s, ForeignPtr a (MallocPtr (unsafeCoerce# b) r) #))
+{-# INLINE toForeignPtr #-}
+
+-- | Create a `ForeignPtr` referencing the structure without copying data.
+--   This version of a pointer carries no finalizers.
+--
+-- It is not possible to add a finalizer to a ForeignPtr created with
+-- @toPlainForeignPtr@.
+-- Attempts to add a finalizer to a ForeignPtr created this way, or to
+-- finalize such a pointer, will throw an exception.
+toPlainForeignPtr :: IsVkStruct a => a -> IO (ForeignPtr a)
+toPlainForeignPtr (VkStruct a b) = IO
+    (\s -> (# s, ForeignPtr a (PlainPtr (unsafeCoerce# b)) #))
+{-# INLINE toPlainForeignPtr #-}
+
+-- | Make sure this data is alive at a given point in a sequence of IO actions.
+touchVkData  :: IsVkStruct a => a -> IO ()
+touchVkData (VkStruct _ b) = IO (\s -> (# touch# b s, () #))
+{-# INLINE touchVkData #-}
+
+
+
+type StructFieldNames (a :: Type) = FieldNames (StructFields a)
+
+type family FieldNames (ms :: [FieldMeta]) :: [Symbol] where
+    FieldNames '[] = '[]
+    FieldNames (m ': ms) = FName m ': FieldNames ms
+
+-- | A Constraint: a vulkan struct must have a field with a given name.
+type HasField (fname :: Symbol) (a :: Type)
+    = (VulkanMarshal a, VulkanField (FieldRep fname a))
+
+-- | Type-level description of a Vulkan structure field.
+type FieldRep (fname :: Symbol) (a :: Type)
+    = GetFieldMeta (ErrorNoSuchField fname a) fname (StructFields a)
+
+-- | Type of a field in a vulkan structure or union.
+type FieldType (fname :: Symbol) (a :: Type)
+    = FType (FieldRep fname a)
+
+-- | Whether this field marked optional in vulkan specification.
+--   Usually, this means that `VK_NULL` can be written in place
+--   of this field.
+type FieldOptional (fname :: Symbol) (a :: Type)
+    = FOptional (FieldRep fname a)
+
+-- | Offset of a field in bytes.
+type FieldOffset (fname :: Symbol) (a :: Type)
+    = FByteOffset (FieldRep fname a)
+
+-- | Whether this field is a fixed-length array stored directly in a struct.
+type FieldIsArray (fname :: Symbol) (a :: Type)
+    = IsArrayLen (FLength (FieldRep fname a))
+
+type family IsArrayLen (l :: Nat) :: Bool where
+    IsArrayLen 1 = 'False
+    IsArrayLen _ = 'True
+
+-- | Length of an array that is a field of a structure or union
+type FieldArrayLength (fname :: Symbol) (a :: Type)
+    = FLength (FieldRep fname a)
+
+type CanReadField (fname :: Symbol) (a :: Type)
+    = ( HasField fname a
+      , IsTrue (ErrorNotReadableField fname a)
+               (FCanRead (FieldRep fname a))
+      , Storable (FieldType fname a))
+
+type CanWriteField (fname :: Symbol) (a :: Type)
+    = ( HasField fname a
+      , IsTrue (ErrorNotWritableField fname a)
+               (FCanWrite (FieldRep fname a))
+      , Storable (FieldType fname a))
+
+type CanReadFieldArray (fname :: Symbol) (a :: Type)
+    = CanReadField fname a
+
+type CanWriteFieldArray (fname :: Symbol) (a :: Type)
+    = CanWriteField fname a
+
+instance VulkanMarshal (VkStruct a)
+       => Eq (VkStruct a) where
+    a == b = EQ == cmpBytes# (sizeOf a) (unsafeAddr a) (unsafeAddr b)
+    {-# INLINE (==) #-}
+
+instance VulkanMarshal (VkStruct a)
+       => Ord (VkStruct a) where
+    compare a b = cmpBytes# (sizeOf a) (unsafeAddr a) (unsafeAddr b)
+    {-# INLINE compare #-}
+
+instance VulkanMarshal (VkStruct a)
+       => Storable (VkStruct a) where
+    sizeOf ~_ = sSize @(StructRep (VkStruct a))
+    {-# INLINE sizeOf #-}
+    alignment ~_ = sAlign @(StructRep (VkStruct a))
+    {-# INLINE alignment #-}
+    peek (Ptr addr)
+      | I# n <- sSize @(StructRep (VkStruct a))
+      , I# a <- sAlign @(StructRep (VkStruct a))
+      = IO
+      (\s -> case newAlignedPinnedByteArray# n a s of
+        (# s1, mba #) -> case copyAddrToByteArray# addr mba 0# n s1 of
+          s2 -> case unsafeFreezeByteArray# mba s2 of
+            (# s3, ba #) -> (# s3, unsafeFromByteArrayOffset 0# ba #)
+      )
+    {-# INLINE peek #-}
+    poke (Ptr addr) x
+      = c_memcpy addr (unsafeAddr x) (fromIntegral $ sSize @(StructRep (VkStruct a)))
+    {-# INLINE poke #-}
+
+
+instance VulkanMarshal (VkStruct a)
+       => Show (VkStruct a) where
+    showsPrec d x
+      = showParen (d >= 11)
+      $ (.) (showString (sName @(StructRep (VkStruct a))) . showString " {")
+      $ (\(b, s) -> if b then dropIt . s else s )
+      $ enumerateFields @(StructFields (VkStruct a))
+        ( \(_ :: Proxy# m) s -> case isThatField @m of
+            Refl ->
+              ( True
+              , sepIt . showString (fName @m)
+                . showString " = " . showField @(FName m) @m
+                . snd s
+              )
+        ) (False, showString "}")
+
+      where
+        (dropIt, sepIt) = if sIsUnion @(StructRep (VkStruct a))
+                          then (drop 3, showString " | ")
+                          else (drop 2, showString ", ")
+        isThatField :: m :~: FieldRep (FName m) (VkStruct a)
+        isThatField = unsafeCoerce (Refl :: m :~: m)
+        showField :: forall (fname :: Symbol) (m :: FieldMeta)
+                   . ( VulkanField m
+                     , fname ~ FName m
+                     , m ~ FieldRep fname (VkStruct a)
+                     )
+                  => ShowS
+        showField = case fLength @m of
+            0 -> showString "[]"
+            1 -> shows @(FType m) (getF 0)
+            m -> showChar '[' . drop 2
+               . foldr (\i s -> showString ", " . shows @(FType m) (getF i) . s)
+                       id [0..m-1]
+               . showChar ']'
+          where
+            getF :: Int -> FType m
+            getF i = unsafeDupablePerformIO $
+              peekByteOff @(FType m) (unsafePtr x)
+                (fByteOffset @m + i * sizeOf @(FType m) undefined)
+            {-# NOINLINE getF #-}
+
+
+
+-- | Whether this field marked optional in vulkan specification.
+--   Usually, this means that `VK_NULL` can be written in place
+--   of this field.
+fieldOptional :: forall (fname :: Symbol) (a :: Type)
+               . HasField fname a => Bool
+fieldOptional = fOptional @(FieldRep fname a)
+
+-- | Offset of a field in bytes.
+fieldOffset :: forall (fname :: Symbol) (a :: Type)
+             . HasField fname a => Int
+fieldOffset = fByteOffset @(FieldRep fname a)
+
+-- | Length of an array that is a field of a structure or union.
+--
+--   Returns @1@ if this field is not an array.
+fieldArrayLength :: forall (fname :: Symbol) (a :: Type)
+                  . HasField fname a => Int
+fieldArrayLength = fLength @(FieldRep fname a)
+
+getField :: forall (fname :: Symbol) (a :: Type)
+          . CanReadField fname a => a -> FieldType fname a
+getField x = unsafeDupablePerformIO $
+    peekByteOff (unsafePtr x) (fieldOffset @fname @a)
+{-# NOINLINE getField #-}
+
+readField :: forall (fname :: Symbol) (a :: Type)
+           . CanReadField fname a => Ptr a -> IO (FieldType fname a)
+readField p = peekByteOff p (fieldOffset @fname @a)
+
+writeField :: forall (fname :: Symbol) (a :: Type)
+            . CanWriteField fname a => Ptr a -> FieldType fname a -> IO ()
+writeField p = pokeByteOff p (fieldOffset @fname @a)
+
+-- | Index an array-type field. No bound checks.
+getFieldArrayUnsafe :: forall (fname :: Symbol) (a :: Type)
+                     . CanReadFieldArray fname a => Int -> a -> FieldType fname a
+getFieldArrayUnsafe i = f
+  where
+    off = fieldOffset @fname @a + i * sizeOf @(FieldType fname a) undefined
+    f x = unsafeDupablePerformIO (peekByteOff (unsafePtr x) off)
+    {-# NOINLINE f #-}
+
+-- | Read from an array-type field. No bound checks.
+readFieldArrayUnsafe :: forall (fname :: Symbol) (a :: Type)
+                      . CanReadFieldArray fname a => Int -> Ptr a -> IO (FieldType fname a)
+readFieldArrayUnsafe i p = peekByteOff p off
+  where
+    off = fieldOffset @fname @a + i * sizeOf @(FieldType fname a) undefined
+
+-- | Write to an array-type field. No bound checks.
+writeFieldArrayUnsafe :: forall (fname :: Symbol) (a :: Type)
+                       . CanWriteFieldArray fname a
+                      => Int -> Ptr a -> FieldType fname a -> IO ()
+writeFieldArrayUnsafe i p = pokeByteOff p off
+  where
+    off = fieldOffset @fname @a + i * sizeOf @(FieldType fname a) undefined
+
+
+getFieldArray :: forall fname idx a
+               . (CanReadFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)
+              => a -> FieldType fname a
+getFieldArray = getFieldArrayUnsafe @fname @a
+  (fromInteger $ natVal' (proxy# :: Proxy# idx))
+{-# INLINE getFieldArray #-}
+
+readFieldArray :: forall fname idx a
+                . (CanReadFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)
+               => Ptr a -> IO (FieldType fname a)
+readFieldArray = readFieldArrayUnsafe @fname @a
+  (fromInteger $ natVal' (proxy# :: Proxy# idx))
+{-# INLINE readFieldArray #-}
+
+
+writeFieldArray :: forall fname idx a
+                 . (CanWriteFieldArray fname a, IndexInBounds fname idx a, KnownNat idx)
+                => Ptr a -> FieldType fname a -> IO ()
+writeFieldArray = writeFieldArrayUnsafe @fname @a
+  (fromInteger $ natVal' (proxy# :: Proxy# idx))
+{-# INLINE writeFieldArray #-}
+
+
+
+type IndexInBounds (s :: Symbol) (i :: Nat) (a :: Type)
+  = IndexInBounds' s i a (CmpNat i (FieldArrayLength s a))
+
+type family IndexInBounds' (s :: Symbol)
+                           (i :: Nat)
+                           (a :: Type) (r :: Ordering) :: Constraint where
+  IndexInBounds' _ _ _ 'LT = ()
+  IndexInBounds' s i a _ = TypeError ( ErrorIndexOutOfBounds s i a )
+
+
+--------------------------------------------------------------------------------
+-- * Type-level errors
+--------------------------------------------------------------------------------
+
+type family IsTrue (errMsg :: ErrorMessage) (bool :: Bool) :: Constraint where
+  IsTrue _   'True  = ()
+  IsTrue err 'False = TypeError err
+
+type ErrorNoSuchField (s :: Symbol) (a :: Type)
+  = 'Text "Structure " ':<>: 'ShowType a
+  ':<>: 'Text " does not have field " ':<>: 'ShowType s ':<>: 'Text "."
+  ':$$: 'Text "Note, this structure has following fields: "
+        ':<>: 'ShowType (StructFieldNames a)
+
+type ErrorIndexOutOfBounds (s :: Symbol) (i :: Nat) (a :: Type)
+  = 'Text "Array index " ':<>: 'ShowType i ':<>:
+    'Text " is out of bounds for '" ':<>:
+    'Text s ':<>: 'Text "',  member of type " ':<>: 'ShowType a ':<>: 'Text "."
+  ':$$:
+    'Text "Note: the array size is "
+      ':<>: 'ShowType (FieldArrayLength s a) ':<>: 'Text "."
+
+type ErrorNotReadableField (s :: Symbol) (a :: Type)
+  = 'Text "Field " ':<>: 'ShowType s ':<>:
+    'Text " of structure " ':<>: 'ShowType a ':<>:
+    'Text " is not readable."
+
+type ErrorNotWritableField (s :: Symbol) (a :: Type)
+  = 'Text "Field " ':<>: 'ShowType s ':<>:
+    'Text " of structure " ':<>: 'ShowType a ':<>:
+    'Text " is not writable."
+
+
+--------------------------------------------------------------------------------
+-- * Utilities for CString
+--------------------------------------------------------------------------------
+
+-- | Perform an action on a C string field.
+--   The string pointers should not be used outside the callback.
+--   It will point to a correct location only as long as the struct is alive.
+withCStringField :: forall fname a b
+                 . ( CanReadFieldArray fname a
+                   , FieldType fname a ~ CChar
+                   , VulkanMarshal a
+                   )
+                 => a -> (CString -> IO b) -> IO b
+withCStringField x f = do
+  r <- f (unsafeCStringField @fname @a x)
+  touchVkData x
+  pure r
+
+-- | Get pointer to a memory location of the C string field in a structure.
+unsafeCStringField :: forall fname a
+                   . ( CanReadFieldArray fname a
+                     , FieldType fname a ~ CChar
+                     , VulkanMarshal a
+                     )
+                   => a -> CString
+unsafeCStringField x = unsafePtr x `plusPtr` fieldOffset @fname @a
+
+
+getStringField :: forall fname a
+                . ( CanReadFieldArray fname a
+                  , FieldType fname a ~ CChar
+                  , VulkanMarshal a
+                  )
+               => a -> String
+getStringField x
+    = case takeForce (fieldArrayLength @fname @a)
+         . unsafeDupablePerformIO
+         $ withCStringField @fname @a x peekCString of
+        ((), s) -> s
+
+readStringField :: forall fname a
+                . ( CanReadFieldArray fname a
+                  , FieldType fname a ~ CChar
+                  , VulkanMarshal a
+                  )
+               => Ptr a -> IO String
+readStringField px = do
+  ((), s) <- takeForce (fieldArrayLength @fname @a)
+         <$> peekCString (px `plusPtr` fieldOffset @fname @a)
+  return s
+
+writeStringField :: forall fname a
+                  . ( CanWriteFieldArray fname a
+                    , FieldType fname a ~ CChar
+                    , VulkanMarshal a
+                    )
+               => Ptr a -> String -> IO ()
+writeStringField px =
+  pokeArray0 '\0' (px `plusPtr` fieldOffset @fname @a)
+
+takeForce :: Int -> String -> ((), String)
+takeForce 0 _      = ((), [])
+takeForce _ []     = ((), [])
+takeForce n (x:xs) = seq x $ (x:) <$> takeForce (n-1) xs
+
+
+-- | Check first if two CString point to the same memory location.
+--   Otherwise, compare them using C @strcmp@ function.
+cmpCStrings :: CString -> CString -> Ordering
+cmpCStrings a b
+  | a == b = EQ
+  | otherwise = c_strcmp a b `compare` 0
+
+-- | Check first if two CString point to the same memory location.
+--   Otherwise, compare them using C @strncmp@ function.
+--   It may be useful to provide maximum number of characters to compare.
+cmpCStringsN :: CString -> CString -> Int -> Ordering
+cmpCStringsN a b n
+  | a == b = EQ
+  | otherwise = c_strncmp a b (fromIntegral n) `compare` 0
+
+foreign import ccall unsafe "strncmp"
+  c_strncmp :: CString -> CString -> CSize -> CInt
+
+foreign import ccall unsafe "strcmp"
+  c_strcmp :: CString -> CString -> CInt
 
 -- | Internal function used to implement Eq and Ord instances for Vulkan structs.
 --   Compares first n bytes of two memory areas.
diff --git a/vulkan-api.cabal b/vulkan-api.cabal
--- a/vulkan-api.cabal
+++ b/vulkan-api.cabal
@@ -3,7 +3,7 @@
 -- it is autogenerated at genvulkan/src/Write/Cabal.hs
 --
 name:                vulkan-api
-version:             1.2.0.0
+version:             1.3.0.0
 synopsis:            Low-level low-overhead vulkan api bindings
 description:
     Haskell bindings for vulkan api as described in vk.xml.
@@ -439,7 +439,7 @@
     build-depends:
         base >= 4.9 && < 5
     default-language:    Haskell2010
-    ghc-options:         -Wall -fno-warn-duplicate-exports
+    ghc-options:         -Wall
     include-dirs:        include
     c-sources:           cbits/vulkan_loader.c
     if flag(useNativeFFI-1-0) || flag(useNativeFFI-1-1)
